* make sure files are added alphabetically (File.list() does not guarantee sorted return value)

This commit is contained in:
Reinhard Pointner 2014-11-04 10:06:45 +00:00
parent c1d8071844
commit fc70050ce3
2 changed files with 19 additions and 12 deletions

View File

@ -70,7 +70,7 @@ class ChecksumTableTransferablePolicy extends BackgroundFileTransferablePolicy<C
protected void load(List<File> files, TransferAction action) throws IOException {
// initialize drop parameters
executor.set(computationService.newExecutor());
verificationTracker.set(new VerificationTracker(3));
verificationTracker.set(new VerificationTracker(5));
try {
// handle single verification file drop
@ -79,7 +79,7 @@ class ChecksumTableTransferablePolicy extends BackgroundFileTransferablePolicy<C
}
// handle single folder drop
else if (files.size() == 1 && files.get(0).isDirectory()) {
for (File file : getChildren(files.get(0))) {
for (File file : getChildren(files.get(0), NOT_HIDDEN, CASE_INSENSITIVE_PATH)) {
load(file, null, files.get(0));
}
}
@ -141,7 +141,7 @@ class ChecksumTableTransferablePolicy extends BackgroundFileTransferablePolicy<C
if (absoluteFile.isDirectory()) {
// load all files in the file tree
for (File child : getChildren(absoluteFile)) {
for (File child : getChildren(absoluteFile, NOT_HIDDEN, CASE_INSENSITIVE_PATH)) {
load(child, relativeFile, root);
}
} else {

View File

@ -437,22 +437,21 @@ public final class FileUtilities {
}
public static List<File> getChildren(File folder) {
File[] files = folder.listFiles();
// children array may be null if folder permissions do not allow listing of files
if (files == null) {
files = new File[0];
}
return asList(files);
return getChildren(folder, null, null);
}
public static List<File> getChildren(File folder, FileFilter filter) {
File[] files = folder.listFiles(filter);
return getChildren(folder, filter, null);
}
public static List<File> getChildren(File folder, FileFilter filter, Comparator<File> sorter) {
File[] files = filter == null ? folder.listFiles() : folder.listFiles(filter);
// children array may be null if folder permissions do not allow listing of files
if (files == null) {
files = new File[0];
} else if (sorter != null) {
sort(files, sorter);
}
return asList(files);
@ -695,6 +694,14 @@ public final class FileUtilities {
}
};
public static final FileFilter NOT_HIDDEN = new FileFilter() {
@Override
public boolean accept(File file) {
return !file.isHidden();
}
};
public static class ParentFilter implements FileFilter {
private final File folder;