package pl.wroc.pwr.file; import java.io.File; import java.util.ArrayList; import java.util.Collections; import java.util.List; import pl.wroc.pwr.IOperator1P; public class ImageFolderScanner implements IOperator1P, File> { private String filter; public ImageFolderScanner() { this(""); } public ImageFolderScanner(String filter) { this.filter = filter.toLowerCase(); } private List scanFolder(File folder) { System.out.println("Scanning folder " + folder.getPath()); File [] files = folder.listFiles(); List foundFiles = new ArrayList(); for (File file : files) { foundFiles.add(file); } return foundFiles; } private boolean isImage(String name) { if (name.endsWith(".png")) { return true; } if (name.endsWith(".jpg")) { return true; } if (name.endsWith(".jpeg")) { return true; } if (name.endsWith(".bmp")) { return true; } if (name.endsWith(".gif")) { return true; } return false; } public List apply(File baseFolder) { List files = this.scanFolder(baseFolder); List foundFiles = new ArrayList(); for (File file : files) { String lowerName = file.getName().toLowerCase(); if (lowerName.contains(this.filter)&&this.isImage(lowerName)) { foundFiles.add(file); } } Collections.sort(foundFiles, new FileComparator()); return foundFiles; } }