diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java index 54b20ee..f16f7fd 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java @@ -1,10 +1,11 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileFilter; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.FileProcessor; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.MkvFileProcessor; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.InputConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.validation.ValidationExecutionStrategy; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.CachedMkvFileProcessor; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.CachedFileProcessor; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.kernel.AttributeUpdaterKernel; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.kernel.CoherentAttributeUpdaterKernel; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.kernel.DefaultAttributeUpdaterKernel; @@ -53,7 +54,7 @@ public class Main implements Runnable { } FileFilter fileFilter = new FileFilter(config.getExcluded(), config.getIncludePattern(), config.getFilterDate()); - MkvFileProcessor fileProcessor = new CachedMkvFileProcessor(config.getMkvToolNix(), fileFilter); + FileProcessor fileProcessor = new CachedFileProcessor(new MkvFileProcessor(config.getMkvToolNix(), fileFilter)); AttributeUpdaterKernel kernel = config.getCoherent() != null ? new CoherentAttributeUpdaterKernel(config, fileProcessor) diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/CachedFileProcessor.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/CachedFileProcessor.java new file mode 100644 index 0000000..3169b1f --- /dev/null +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/CachedFileProcessor.java @@ -0,0 +1,42 @@ +package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors; + +import at.pcgamingfreaks.mkvaudiosubtitlechanger.exceptions.MkvToolNixException; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.Cache; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfo; +import org.apache.commons.lang3.tuple.Pair; + +import java.io.File; +import java.io.IOException; +import java.util.List; + +public class CachedFileProcessor implements FileProcessor { + private final FileProcessor processor; + Cache> fileCache = new Cache<>(); + Cache, List> directoryCache = new Cache<>(); + Cache attributeCache = new Cache<>(); + + public CachedFileProcessor(FileProcessor processor) { + this.processor = processor; + } + + @Override + public List loadFiles(String path) { + return fileCache.retrieve(path, processor::loadFiles); + } + + @Override + public List loadDirectories(String path, int depth) { + return directoryCache.retrieve(Pair.of(path, depth), key -> processor.loadDirectories(key.getLeft(), key.getRight())); + } + + @Override + public FileInfo readAttributes(File file) { + return attributeCache.retrieve(file, processor::readAttributes); + } + + @Override + public void update(FileInfo fileInfo) throws IOException, MkvToolNixException { + processor.update(fileInfo); + } + +} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/CachedMkvFileProcessor.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/CachedMkvFileProcessor.java deleted file mode 100644 index 4809aee..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/processors/CachedMkvFileProcessor.java +++ /dev/null @@ -1,20 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.Cache; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileFilter; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfo; - -import java.io.File; - -public class CachedMkvFileProcessor extends MkvFileProcessor { - Cache cache = new Cache<>(); - - public CachedMkvFileProcessor(File mkvToolNixInstallation, FileFilter fileFilter) { - super(mkvToolNixInstallation, fileFilter); - } - - @Override - public FileInfo readAttributes(File file) { - return cache.retrieve(file, super::readAttributes); - } -}