Added so FileSearcher matches all files if no specific patter has been given

This commit is contained in:
Ziver Koc 2015-11-12 13:11:12 +01:00
parent 997ec1c52b
commit 0f94a575a3

View file

@ -106,12 +106,12 @@ public class FileSearcher implements Iterable<FileSearcher.FileSearchItem>{
protected class FileSearchIterator implements Iterator<FileSearchItem>{ protected class FileSearchIterator implements Iterator<FileSearchItem>{
private ArrayList<FileSearchItem> fileList; private ArrayList<FileSearchItem> fileList;
private int currentIndex; private int index;
private FileSearchItem nextItem; private FileSearchItem nextItem;
public FileSearchIterator(){ public FileSearchIterator(){
fileList = new ArrayList<FileSearchItem>(); fileList = new ArrayList<FileSearchItem>();
currentIndex = 0; index = 0;
addFiles(new FileSearchFileItem(root), root.list()); addFiles(new FileSearchFileItem(root), root.list());
next(); next();
@ -119,7 +119,7 @@ public class FileSearcher implements Iterable<FileSearcher.FileSearchItem>{
@Override @Override
public boolean hasNext() { public boolean hasNext() {
return currentIndex < fileList.size(); return nextItem != null;
} }
@Override @Override
@ -129,20 +129,23 @@ public class FileSearcher implements Iterable<FileSearcher.FileSearchItem>{
@Override @Override
public FileSearchItem next() { public FileSearchItem next() {
if(currentIndex < 0 || currentIndex >= fileList.size())
return null;
// Temporarily save the current file // Temporarily save the current file
FileSearchItem ret = fileList.get(currentIndex); FileSearchItem ret = nextItem;
currentIndex++;
// Find the next file // Find the next file
for(; currentIndex<fileList.size(); currentIndex++){ for(; index <fileList.size(); index++){
FileSearchItem file = fileList.get(currentIndex); FileSearchItem file = fileList.get(index);
//#### FOLDERS
if(recursive && file.isDirectory()){ if(recursive && file.isDirectory()){
addFiles(file, file.listFiles()); addFiles(file, file.listFiles());
if(searchFolders && file.getName().equalsIgnoreCase(fileName)) if(searchFolders) {
if(fileName == null) // Match all folders
break;
else if(file.getName().equalsIgnoreCase(fileName))
break; break;
} }
}
//#### COMPRESSED FILES
else if(searchCompressedFiles && file.isFile() && else if(searchCompressedFiles && file.isFile() &&
compressedFileExtensions.contains( compressedFileExtensions.contains(
FileUtil.getFileExtension(file.getName()).toLowerCase())){ FileUtil.getFileExtension(file.getName()).toLowerCase())){
@ -158,14 +161,26 @@ public class FileSearcher implements Iterable<FileSearcher.FileSearchItem>{
e.printStackTrace(); e.printStackTrace();
} }
} }
//#### REGULAR FILES
else if(searchFiles && file.isFile()){ else if(searchFiles && file.isFile()){
if(extension != null && FileUtil.getFileExtension(file.getName()).equalsIgnoreCase(extension)) if(extension == null && fileName == null) // Should we match all files
break; break;
else if(fileName != null && file.getName().equalsIgnoreCase(fileName)) else if(extension != null &&
FileUtil.getFileExtension(file.getName()).equalsIgnoreCase(extension))
break;
else if(fileName != null &&
file.getName().equalsIgnoreCase(fileName))
break; break;
} }
} }
if(index <fileList.size()) {
nextItem = fileList.get(index);
++index;
}
else
nextItem = null;
return ret; return ret;
} }
@ -216,6 +231,8 @@ public class FileSearcher implements Iterable<FileSearcher.FileSearchItem>{
public InputStream getInputStream() throws IOException { return new FileInputStream(file); } public InputStream getInputStream() throws IOException { return new FileInputStream(file); }
public String[] listFiles() { return file.list(); } public String[] listFiles() { return file.list(); }
public File getFile() { return file; }
} }
protected static class FileSearchZipItem implements FileSearchItem{ protected static class FileSearchZipItem implements FileSearchItem{