diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java index 77382e1..dc8d6a5 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java @@ -69,6 +69,10 @@ public class Config { mkvToolNix.getAbsolutePath() + "/" + application; } + public String getNormalizedLibraryPath() { + return this.getLibraryPath().getAbsolutePath().replace("\\", "/"); + } + @Override public String toString() { return new StringJoiner(", ", Config.class.getSimpleName() + "[", "]") diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java index cb15f34..791ee77 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java @@ -100,10 +100,16 @@ public abstract class ConfigValidator { }; } + /** + * @return true if overwriting this property is necessary. + */ protected boolean isOverwritingNecessary() { return false; } + /** + * @return {@link FieldType} to overwrite result with. + */ protected FieldType overwriteValue() { return null; } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java index c783f42..f376af1 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java @@ -37,7 +37,7 @@ public class DateValidator extends ConfigValidator { return DEFAULT_DATE; } YAML yaml = new YAML(lastExecutionFile); - return parse(yaml.getString(Config.getInstance().getLibraryPath().getAbsolutePath().replace("\\", "/"), DateUtils.convert(DEFAULT_DATE))); + return parse(yaml.getString(Config.getInstance().getNormalizedLibraryPath(), DateUtils.convert(DEFAULT_DATE))); } catch (YamlInvalidContentException | IOException e) { log.error("Couldn't open last-execution.properties"); return INVALID_DATE; diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java index ff1559c..20b5c21 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java @@ -15,7 +15,9 @@ import java.util.Date; @Slf4j public class FileFilter { static boolean accept(File pathName, String[] fileExtensions) { - if (hasProperFileExtension(pathName, fileExtensions) && isIncluded(pathName) && isNewer(pathName)) { + if (hasProperFileExtension(pathName, fileExtensions) + && hasMatchingPattern(pathName) + && isNewer(pathName)) { return true; } @@ -27,18 +29,18 @@ public class FileFilter { return StringUtils.endsWithAny(pathName.getAbsolutePath().toLowerCase(), fileExtensions); } - private static boolean isIncluded(File pathName) { + private static boolean hasMatchingPattern(File pathName) { return Config.getInstance().getIncludePattern().matcher(pathName.getName()).matches(); } private static boolean isNewer(File pathName) { Config config = Config.getInstance(); if (config.getFilterDate() == null) return true; - try { + try { BasicFileAttributes attributes = Files.readAttributes(pathName.toPath(), BasicFileAttributes.class); return isNewer(DateUtils.convert(attributes.creationTime().toMillis())); } catch (IOException e) { - log.warn("File attributes could not be read. This could have XX reason"); // TODO + log.warn("File attributes could not be read.", e); } return true; } @@ -46,12 +48,4 @@ public class FileFilter { private static boolean isNewer(Date creationDate) { return creationDate.toInstant().isAfter(Config.getInstance().getFilterDate().toInstant()); } - - private static boolean isNewerThanLastExecution(File pathName) { -// if (Config.getInstance().isOnlyNewFiles()) { -// return isNewer(pathName); -// } -// return true; - return !Config.getInstance().isOnlyNewFiles() || isNewer(pathName); - } } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java index 239a4de..9a1be4f 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java @@ -161,15 +161,13 @@ public abstract class AttributeUpdaterKernel { if (!configDir.exists()) configDir.mkdirs(); File lastExecutionFile = Path.of(filePath + "/last-execution.yml").toFile(); - if (!lastExecutionFile.exists()) { - lastExecutionFile.createNewFile(); - } + if (!lastExecutionFile.exists()) lastExecutionFile.createNewFile(); YAML yaml = new YAML(lastExecutionFile); - yaml.set(Config.getInstance().getLibraryPath().getAbsolutePath().replace("\\", "/"), DateUtils.convert(new Date())); + yaml.set(Config.getInstance().getNormalizedLibraryPath(), DateUtils.convert(new Date())); yaml.save(lastExecutionFile); } catch (IOException | YamlInvalidContentException e) { - log.error("last-execution.yml could not be created: ", e); // TODO + log.error("last-execution.yml could not be created or read.", e); } } } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java index 1421c9f..61eaa20 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/DateUtils.java @@ -13,7 +13,7 @@ public class DateUtils { /** * Convert String to date. - * @return parsed date, null if exception occurs + * @return parsed date, defaultDate if exception occurs */ public static Date convert(String date, Date defaultDate) { try {