package uc.files.filelist;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import helpers.IFilter;
import helpers.ISubstringMapping2;
public class FileListMapping implements ISubstringMapping2<IFileListItem> {
public String getMappingString(IFileListItem item) {
return item.getName();
}
public static class FileFilter implements IFilter<IFileListItem>{
private final long minSize;
private final long maxSize;
private final long equalsize;
private final Collection<String> endings;
private final boolean folder;
/**
*
* @param minsize minimum filesize. 0 if not used
* @param maxsize maximum Filesize . MaxLong if not used
* @param equalsize equals filesize -1 if not used
* @param endings
* @param folder
*/
public FileFilter(long minsize, long maxsize , long equalsize,Collection<String> endings, boolean folder) {
this.minSize = minsize;
this.maxSize = maxsize;
this.equalsize = equalsize;
this.endings = endings;
this.folder = folder;
}
public boolean filter(IFileListItem item) {
if (folder) {
return true;
} else {
FileListFile f = (FileListFile)item;
if (endings.isEmpty() || endings.contains(f.getEnding()) ) {
if (f.getSize() < minSize || f.getSize() > maxSize || (equalsize != -1 && f.getSize() == equalsize) ) {
//if (maxSize ? f.getSize() > size :f.getSize() < size) {
return false;
//}
}
return true;
}
return false;
}
}
/**
* Either only takes files or it takes Folders..
*/
public Set<IFileListItem> mapItems(Set<IFileListItem> nodeItems) {
Set<IFileListItem> found = new HashSet<IFileListItem>();
if (folder) {
for (IFileListItem f: nodeItems) { //just add all folders
if (!f.isFile()) {
found.add(f);
}
}
} else {
for (IFileListItem f: nodeItems) { //add all files or add containing files of folders
if (f.isFile()) {
found.add(f);
} else {
for (FileListFile file: ((FileListFolder)f)) {
found.add(file);
}
}
}
}
return found;
}
}
}