* more lenient derived-file detection

This commit is contained in:
Reinhard Pointner 2012-02-13 02:11:01 +00:00
parent 3f9523ff2f
commit 49271e2eee
3 changed files with 13 additions and 9 deletions

View File

@ -266,20 +266,21 @@ public class CmdlineOperations implements CmdlineInterface {
// handle movie files // handle movie files
List<File> movieFiles = filter(files, VIDEO_FILES); List<File> movieFiles = filter(files, VIDEO_FILES);
List<File> standaloneFiles = new ArrayList<File>(files);
standaloneFiles.removeAll(movieFiles);
Map<File, List<File>> derivatesByMovieFile = new HashMap<File, List<File>>(); Map<File, List<File>> derivatesByMovieFile = new HashMap<File, List<File>>();
for (File movieFile : movieFiles) { for (File movieFile : movieFiles) {
derivatesByMovieFile.put(movieFile, new ArrayList<File>()); derivatesByMovieFile.put(movieFile, new ArrayList<File>());
} }
for (File file : files) { for (File file : standaloneFiles) {
for (File movieFile : movieFiles) { for (File movieFile : movieFiles) {
if (!file.equals(movieFile) && isDerived(file, movieFile)) { if (isDerived(file, movieFile)) {
derivatesByMovieFile.get(movieFile).add(file); derivatesByMovieFile.get(movieFile).add(file);
break; break;
} }
} }
} }
List<File> standaloneFiles = new ArrayList<File>(files);
for (List<File> derivates : derivatesByMovieFile.values()) { for (List<File> derivates : derivatesByMovieFile.values()) {
standaloneFiles.removeAll(derivates); standaloneFiles.removeAll(derivates);
} }

View File

@ -60,20 +60,21 @@ class MovieHashMatcher implements AutoCompleteMatcher {
// handle movie files // handle movie files
List<File> movieFiles = filter(files, VIDEO_FILES); List<File> movieFiles = filter(files, VIDEO_FILES);
List<File> standaloneFiles = new ArrayList<File>(files);
standaloneFiles.removeAll(movieFiles);
Map<File, List<File>> derivatesByMovieFile = new HashMap<File, List<File>>(); Map<File, List<File>> derivatesByMovieFile = new HashMap<File, List<File>>();
for (File movieFile : movieFiles) { for (File movieFile : movieFiles) {
derivatesByMovieFile.put(movieFile, new ArrayList<File>()); derivatesByMovieFile.put(movieFile, new ArrayList<File>());
} }
for (File file : files) { for (File file : standaloneFiles) {
for (File movieFile : movieFiles) { for (File movieFile : movieFiles) {
if (!file.equals(movieFile) && isDerived(file, movieFile)) { if (isDerived(file, movieFile)) {
derivatesByMovieFile.get(movieFile).add(file); derivatesByMovieFile.get(movieFile).add(file);
break; break;
} }
} }
} }
List<File> standaloneFiles = new ArrayList<File>(files);
for (List<File> derivates : derivatesByMovieFile.values()) { for (List<File> derivates : derivatesByMovieFile.values()) {
standaloneFiles.removeAll(derivates); standaloneFiles.removeAll(derivates);
} }

View File

@ -253,7 +253,9 @@ public final class FileUtilities {
public static boolean isDerived(String derivate, File prime) { public static boolean isDerived(String derivate, File prime) {
String base = getName(prime).trim().toLowerCase(); String withoutTypeSuffix = getNameWithoutExtension(prime.getName());
String withoutPartSuffix = getNameWithoutExtension(withoutTypeSuffix);
String base = (withoutPartSuffix.length() > 2 ? withoutPartSuffix : withoutTypeSuffix).trim().toLowerCase();
derivate = derivate.trim().toLowerCase(); derivate = derivate.trim().toLowerCase();
return derivate.startsWith(base); return derivate.startsWith(base);
} }