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;
+ }
}