Migrate CachedFileProcessor to proxy pattern

This commit is contained in:
RatzzFatzz
2025-12-13 17:29:43 +01:00
parent d7ae865d55
commit 7427e3aa27
3 changed files with 45 additions and 22 deletions

View File

@@ -1,10 +1,11 @@
package at.pcgamingfreaks.mkvaudiosubtitlechanger; package at.pcgamingfreaks.mkvaudiosubtitlechanger;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileFilter; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileFilter;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.FileProcessor;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.MkvFileProcessor; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.processors.MkvFileProcessor;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.InputConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.InputConfig;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.validation.ValidationExecutionStrategy; 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.AttributeUpdaterKernel;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.kernel.CoherentAttributeUpdaterKernel; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.kernel.CoherentAttributeUpdaterKernel;
import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.kernel.DefaultAttributeUpdaterKernel; 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()); 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 AttributeUpdaterKernel kernel = config.getCoherent() != null
? new CoherentAttributeUpdaterKernel(config, fileProcessor) ? new CoherentAttributeUpdaterKernel(config, fileProcessor)

View File

@@ -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<String, List<File>> fileCache = new Cache<>();
Cache<Pair<String, Integer>, List<File>> directoryCache = new Cache<>();
Cache<File, FileInfo> attributeCache = new Cache<>();
public CachedFileProcessor(FileProcessor processor) {
this.processor = processor;
}
@Override
public List<File> loadFiles(String path) {
return fileCache.retrieve(path, processor::loadFiles);
}
@Override
public List<File> 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);
}
}

View File

@@ -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<File, FileInfo> cache = new Cache<>();
public CachedMkvFileProcessor(File mkvToolNixInstallation, FileFilter fileFilter) {
super(mkvToolNixInstallation, fileFilter);
}
@Override
public FileInfo readAttributes(File file) {
return cache.retrieve(file, super::readAttributes);
}
}