From cf64833d3e9e6b5de1559c489aba5620741d3bea Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Sat, 11 Mar 2023 19:21:55 +0100 Subject: [PATCH] Fix excluded file count --- pom.xml | 2 +- .../impl/FileFilter.java | 10 ++++-- .../impl/kernel/AttributeUpdaterKernel.java | 4 +-- .../CoherentAttributeUpdaterKernel.java | 18 +++++++++-- .../kernel/DefaultAttributeUpdaterKernel.java | 7 +++++ .../model/ResultStatistic.java | 31 ++++++++++++++++--- 6 files changed, 60 insertions(+), 12 deletions(-) diff --git a/pom.xml b/pom.xml index 8e8ab40..3160cd7 100644 --- a/pom.xml +++ b/pom.xml @@ -159,7 +159,7 @@ me.tongfei progressbar - 0.9.3 + 0.9.5 diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java index 94f5012..3588a2a 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/FileFilter.java @@ -1,13 +1,19 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.impl; import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ResultStatistic; import org.apache.commons.lang3.StringUtils; import java.io.File; public class FileFilter { static boolean accept(File pathName, String[] fileExtensions) { - return StringUtils.endsWithAny(pathName.getAbsolutePath().toLowerCase(), fileExtensions) - && Config.getInstance().getIncludePattern().matcher(pathName.getName()).matches(); + if (StringUtils.endsWithAny(pathName.getAbsolutePath().toLowerCase(), fileExtensions) + && Config.getInstance().getIncludePattern().matcher(pathName.getName()).matches()) { + return true; + } + + ResultStatistic.getInstance().excluded(); + return false; } } 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 440806a..359f984 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/AttributeUpdaterKernel.java @@ -29,10 +29,10 @@ public abstract class AttributeUpdaterKernel { protected final FileCollector collector; protected final FileProcessor processor; - protected final ResultStatistic statistic = new ResultStatistic(); + protected final ResultStatistic statistic = ResultStatistic.getInstance(); private final ExecutorService executor = Executors.newFixedThreadPool(Config.getInstance().getThreads()); - private static ProgressBarBuilder pbBuilder() { + protected ProgressBarBuilder pbBuilder() { return new ProgressBarBuilder() .setStyle(ProgressBarStyle.ASCII) .setUpdateIntervalMillis(250) diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java index 068d4c1..4fe1cc7 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/CoherentAttributeUpdaterKernel.java @@ -7,6 +7,7 @@ import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileInfoDto; import lombok.extern.slf4j.Slf4j; +import me.tongfei.progressbar.ProgressBarBuilder; import org.apache.commons.lang3.StringUtils; import java.io.File; @@ -22,6 +23,12 @@ public class CoherentAttributeUpdaterKernel extends AttributeUpdaterKernel { super(collector, processor); } + @Override + protected ProgressBarBuilder pbBuilder() { + return super.pbBuilder() + .setUnit(" directories", 1); + } + /** * {@inheritDoc} */ @@ -43,10 +50,17 @@ public class CoherentAttributeUpdaterKernel extends AttributeUpdaterKernel { } /** - * {@inheritDoc} + * Update files in directory, if possible, with the same {@link AttributeConfig}. + * If {@link Config#isForceCoherent()} then there will be no changes to the file if they don't match the same config. + * Otherwise, the default behaviour is executed. + * This method is called by the executor and is run in parallel. + * + * @param file directory containing files */ @Override void process(File file) { + // TODO: Implement level crawl if coherence is not possible on user entered depth + // IMPL idea: recursive method call, cache needs to be implemented List fileInfos = collector.loadFiles(file.getAbsolutePath()) .stream().map(FileInfoDto::new) .collect(Collectors.toList()); @@ -85,7 +99,7 @@ public class CoherentAttributeUpdaterKernel extends AttributeUpdaterKernel { }); } - for(FileInfoDto fileInfo: fileInfos) { + for (FileInfoDto fileInfo : fileInfos) { statistic.total(); if (Config.getInstance().isForceCoherent()) { super.process(fileInfo.getFile()); diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java index 69982e2..b4e27bc 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/impl/kernel/DefaultAttributeUpdaterKernel.java @@ -4,6 +4,7 @@ import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileCollector; import at.pcgamingfreaks.mkvaudiosubtitlechanger.impl.FileProcessor; import lombok.extern.slf4j.Slf4j; +import me.tongfei.progressbar.ProgressBarBuilder; import java.io.File; import java.util.List; @@ -16,6 +17,12 @@ public class DefaultAttributeUpdaterKernel extends AttributeUpdaterKernel { super(collector, processor); } + @Override + protected ProgressBarBuilder pbBuilder() { + return super.pbBuilder() + .setUnit(" files", 1); + } + /** * {@inheritDoc} */ diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ResultStatistic.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ResultStatistic.java index e57c8c2..6370aa7 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ResultStatistic.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/ResultStatistic.java @@ -16,7 +16,7 @@ public class ResultStatistic { "├─ Already fit config: %s%n" + "└─ Failed: %s%n" + "Runtime: %s"; - + private static ResultStatistic instance; private int filesTotal = 0; private int excluded = 0; @@ -32,6 +32,13 @@ public class ResultStatistic { private long startTime = 0; private long runtime = 0; + public static ResultStatistic getInstance() { + if (instance == null) { + instance = new ResultStatistic(); + } + return instance; + } + public void increaseTotalBy(int amount) { filesTotal += amount; } @@ -81,7 +88,7 @@ public class ResultStatistic { } public void printResult() { - System.out.println(this); + System.out.println(prettyPrint()); log.info(this.toString()); } @@ -96,15 +103,29 @@ public class ResultStatistic { } else if (hours >= 1) { return String.format("%sh %sm %ss", hours, minutes % 60, seconds % 60); } else if (minutes >= 1) { - return String.format("%sm %ss", minutes , seconds % 60); + return String.format("%sm %ss", minutes, seconds % 60); } else { return String.format("%ss", seconds % 60); } } - @Override - public String toString() { + public String prettyPrint() { return String.format(result, filesTotal, excluded, shouldChange, failedChanging, successfullyChanged, noSuitableConfigFound, alreadyFits, failed, formatTimer()); } + + @Override + public String toString() { + String sb = "ResultStatistic[" + "filesTotal=" + filesTotal + + ", excluded=" + excluded + + ", shouldChange=" + shouldChange + + " (failedChanging=" + failedChanging + + ", successfullyChanged=" + successfullyChanged + + "), noSuitableConfigFound=" + noSuitableConfigFound + + ", alreadyFits=" + alreadyFits + + ", failed=" + failed + + ", runtime=" + formatTimer() + + ']'; + return sb; + } }