Pages

Tuesday, October 9, 2012

File List Sorting based on sorting parameter

Problem Definition:
For a given file list with properties like FileName, Location, DateCreation, DeteModification, Type - sort it based on supplied argument - in other words implement functionality of applying sort mechanism (windows) based on headers clicked.

SortingFileList.java


package com.manan.testlab;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

public class SortingFileList {

public static void main(String[] args) {
List<File> fileList = new ArrayList<File>();

File f1 = new File("f1","c:\\", new Date(new Long(1018024496)), new Date(1018024498), "txt");
File f2 = new File("a1","d:\\", new Date(new Long(1018024500)), new Date(1018024510), "zip");
File f3 = new File("z1","c:\\", new Date(1018024510), new Date(1018024580), "jar");
File f4 = new File("c1","d:\\", new Date(1018024610), new Date(1018024810), "jar");
File f5 = new File("a2","d:\\", new Date(new Long(1016024500)), new Date(1018024910), "doc");

fileList.add(f1);
fileList.add(f2);
fileList.add(f3);
fileList.add(f4);
fileList.add(f5);

FileName fn = new FileName();

// Comment/Uncomment following to verify based on location, date creation type
// FileLocation fn = new FileLocation();
// FileCreationDate fn = new FileCreationDate();
// FileType fn = new FileType();
Collections.sort(fileList, fn);

//Display Arraylist
for(int i=0;i<fileList.size();i++){
System.out.println(fileList.get(i).toString());
}
}
}

File.java

package com.manan.testlab;

import java.text.Collator;
import java.util.Comparator;
import java.util.Date;

public class File {
String name;
String location;
Date dateCreation;
Date dateModified;
String type;
public File(String name, String location, Date dateCreation,
Date dateModified, String type) {
super();
this.name = name;
this.location = location;
this.dateCreation = dateCreation;
this.dateModified = dateModified;
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
public Date getDateCreation() {
return dateCreation;
}
public void setDateCreation(Date dateCreation) {
this.dateCreation = dateCreation;
}
public Date getDateModified() {
return dateModified;
}
public void setDateModified(Date dateModified) {
this.dateModified = dateModified;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}

@Override
public String toString() {
return "File [name=" + name + ", location=" + location
+ ", dateCreation=" + dateCreation + ", dateModified="
+ dateModified + ", type=" + type + "]";
}
}

//IMPORTANT
class FileName implements Comparator<File>{
public int compare(File left, File right){
return left.getName().compareTo(right.getName());
// Get the list in reverese order (Z-A)
// return right.getName().compareTo(left.getName());
}
}

class FileLocation implements Comparator<File>{
public int compare(File left, File right){
return left.getLocation().compareTo(right.getLocation());
}

class FileCreationDate implements Comparator<File>{
public int compare(File left, File right){
return left.getDateCreation().compareTo(right.getDateCreation());
}
}

class FileModificationDate implements Comparator<File>{
public int compare(File left, File right){
return left.getDateModified().compareTo(right.getDateModified());
}
}

class FileType implements Comparator<File>{
public int compare(File left, File right){
return left.getType().compareTo(right.getType());
}
}

Output:
File [name=a1, location=d:\, dateCreation=Tue Jan 13 00:17:04 IST 1970, dateModified=Tue Jan 13 00:17:04 IST 1970, type=zip]
File [name=a2, location=d:\, dateCreation=Mon Jan 12 23:43:44 IST 1970, dateModified=Tue Jan 13 00:17:04 IST 1970, type=doc]
File [name=c1, location=d:\, dateCreation=Tue Jan 13 00:17:04 IST 1970, dateModified=Tue Jan 13 00:17:04 IST 1970, type=jar]
File [name=f1, location=c:\, dateCreation=Tue Jan 13 00:17:04 IST 1970, dateModified=Tue Jan 13 00:17:04 IST 1970, type=txt]
File [name=z1, location=c:\, dateCreation=Tue Jan 13 00:17:04 IST 1970, dateModified=Tue Jan 13 00:17:04 IST 1970, type=jar]

No comments:

Post a Comment