diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/AttributeUpdaterKernel.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/AttributeUpdaterKernel.java index 4e1e05e..a2ad0ce 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/AttributeUpdaterKernel.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/AttributeUpdaterKernel.java @@ -1,10 +1,10 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.AttributeConfig; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ConfigProcessor; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.intimpl.ConfigProcessor; import at.pcgamingfreaks.mkvaudiosubtitlechanger.intimpl.MkvFileCollector; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.ConfigUtil; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; import lombok.SneakyThrows; import lombok.extern.log4j.Log4j2; @@ -20,10 +20,10 @@ public class AttributeUpdaterKernel { long runtime = 0; @SneakyThrows - public void execute(String path) { - List configPattern = ConfigUtil.getInstance().getAttributeConfig(); - List allValidPaths = collector.loadFiles(path); - ExecutorService executor = Executors.newFixedThreadPool(ConfigUtil.getInstance().getThreadCount()); + public void execute() { + List configPattern = Config.getInstance().getAttributeConfig(); + List allValidPaths = collector.loadFiles(Config.getInstance().getLibraryPath()); + ExecutorService executor = Executors.newFixedThreadPool(Config.getInstance().getThreadCount()); long beforeTimer = System.currentTimeMillis(); if(allValidPaths != null && configPattern != null){ @@ -37,10 +37,10 @@ public class AttributeUpdaterKernel { runtime = System.currentTimeMillis() - beforeTimer; System.out.printf("%nFiles %schanged: %s%n", - ConfigUtil.getInstance().isSafeMode() ? "would " : "", + Config.getInstance().isSafeMode() ? "would " : "", filesChangedAmount); System.out.printf("Files %s not changed: %s%n", - ConfigUtil.getInstance().isSafeMode() ? "would " : "", + Config.getInstance().isSafeMode() ? "would " : "", filesNotChangedAmount); System.out.printf("Runtime: %ss%n", runtime / 1000); } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java index 6afe134..8b1932c 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/Main.java @@ -1,43 +1,17 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.ConfigUtil; -import at.pcgamingfreaks.yaml.YAML; -import at.pcgamingfreaks.yaml.YamlInvalidContentException; -import at.pcgamingfreaks.yaml.YamlKeyNotFoundException; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; import lombok.extern.log4j.Log4j2; import org.apache.commons.cli.*; -import java.io.File; -import java.io.IOException; - import static java.lang.Integer.parseInt; @Log4j2 public class Main { public static void main(String[] args) { - System.out.println(String.join(", ", args)); initConfig(args); AttributeUpdaterKernel kernel = new AttributeUpdaterKernel(); - kernel.execute(ConfigUtil.getInstance().getLibraryPath()); - } - - private static boolean checkIfMKVToolNixIsValid() { - try { - String path = new YAML(new File("config.yaml")).getString("mkvtoolnixPath"); - if (!path.endsWith(File.separator)) { - path += File.separator; - } - if (System.getProperty("os.name").toLowerCase().contains("windows")) { - MKVToolProperties.getInstance().setMkvmergePath(path + "mkvmerge.exe"); - MKVToolProperties.getInstance().setMkvpropeditPath(path + "mkvpropedit.exe"); - } else { - MKVToolProperties.getInstance().setMkvmergePath(path + "mkvmerge"); - MKVToolProperties.getInstance().setMkvpropeditPath(path + "mkvpropedit"); - } - } catch (YamlKeyNotFoundException | IOException | YamlInvalidContentException e) { - e.printStackTrace(); - } - return new File(MKVToolProperties.getInstance().getMkvmergePath()).isFile() && new File(MKVToolProperties.getInstance().getMkvpropeditPath()).isFile(); + kernel.execute(); } private static void initConfig(String[] args) { @@ -53,12 +27,17 @@ public class Main { try { CommandLine cmd = parser.parse(options, args); - ConfigUtil configUtil = ConfigUtil.getInstance(); - configUtil.loadConfig(cmd.getOptionValue("config", "config.yaml")); // use cmd input - configUtil.setLibraryPath(cmd.getOptionValue("library")); - if (cmd.hasOption("threads")) configUtil.setThreadCount(parseInt(cmd.getOptionValue("threads"))); - configUtil.setSafeMode(cmd.hasOption("safe-mode")); - configUtil.isValid(); + if (cmd.hasOption("help")) { + formatter.printHelp("java -jar MKVAudioSubtitlesChanger.jar -p ", options); + System.exit(0); + } + + Config config = Config.getInstance(); + config.loadConfig(cmd.getOptionValue("config", "config.yaml")); // use cmd input + config.setLibraryPath(cmd.getOptionValue("library")); + if (cmd.hasOption("threads")) config.setThreadCount(parseInt(cmd.getOptionValue("threads"))); + config.setSafeMode(cmd.hasOption("safe-mode")); + config.isValid(); } catch (ParseException e) { log.error(e); formatter.printHelp("java -jar MKVAudioSubtitlesChanger.jar -p ", options); diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/ConfigUtil.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java similarity index 86% rename from src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/ConfigUtil.java rename to src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java index 53acab6..e0a1a29 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/ConfigUtil.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/Config.java @@ -1,6 +1,7 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; +package at.pcgamingfreaks.mkvaudiosubtitlechanger.config; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.AttributeConfig; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix; import at.pcgamingfreaks.yaml.YAML; import at.pcgamingfreaks.yaml.YamlInvalidContentException; import at.pcgamingfreaks.yaml.YamlKeyNotFoundException; @@ -17,10 +18,10 @@ import java.util.stream.Collectors; @Log4j2 @Getter @Setter -public class ConfigUtil { +public class Config { @Getter(AccessLevel.NONE) @Setter(AccessLevel.NONE) - private static ConfigUtil configUtil = null; + private static Config config = null; private List attributeConfig; private int threadCount; @@ -28,12 +29,13 @@ public class ConfigUtil { private String mkvtoolnixPath; private String libraryPath; private boolean isSafeMode; + private boolean isWindows; - public static ConfigUtil getInstance() { - if(configUtil == null) { - configUtil = new ConfigUtil(); + public static Config getInstance() { + if(config == null) { + config = new Config(); } - return configUtil; + return config; } public void isValid() throws RuntimeException{ @@ -55,6 +57,7 @@ public class ConfigUtil { setAttributeConfig(loadAttributeConfig(config)); setThreadCount(loadThreadCount(config)); setMkvtoolnixPath(loadMkvToolNixPath(config)); + setWindows(System.getProperty("os.name").toLowerCase().contains("windows")); }catch(YamlInvalidContentException | YamlKeyNotFoundException | IOException e){ log.fatal("Config could not be loaded: {}", e.getMessage()); } diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigProcessor.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/ConfigProcessor.java similarity index 93% rename from src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigProcessor.java rename to src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/ConfigProcessor.java index bf03fa5..19f34b1 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ConfigProcessor.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/ConfigProcessor.java @@ -1,8 +1,10 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config; +package at.pcgamingfreaks.mkvaudiosubtitlechanger.intimpl; import at.pcgamingfreaks.mkvaudiosubtitlechanger.MKVToolProperties; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.ConfigUtil; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix; import lombok.Getter; import lombok.Setter; import lombok.extern.log4j.Log4j2; @@ -12,6 +14,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; +import java.util.function.Supplier; import static java.lang.String.format; @@ -92,11 +95,11 @@ public class ConfigProcessor { StringBuilder stringBuffer = new StringBuilder(); if(System.getProperty("os.name").toLowerCase().contains("windows")){ stringBuffer.append(format("\"%s\" \"%s\" ", - MKVToolProperties.getInstance().getMkvpropeditPath(), + Config.getInstance().getPathFor(MkvToolNix.MKV_PROP_EDIT), file.getAbsolutePath())); }else{ stringBuffer.append(format("%s %s ", - MKVToolProperties.getInstance().getMkvpropeditPath(), + Config.getInstance().getPathFor(MkvToolNix.MKV_PROP_EDIT), file.getAbsolutePath())); } if(audioDefault != - 1){ @@ -122,7 +125,7 @@ public class ConfigProcessor { return true; } try{ - if(!ConfigUtil.getInstance().isSafeMode()) { + if(!Config.getInstance().isSafeMode()) { Runtime.getRuntime().exec(stringBuffer.toString()); } }catch(IOException e){ diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/MkvFileCollector.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/MkvFileCollector.java index 3ef774f..d82fd6a 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/MkvFileCollector.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/intimpl/MkvFileCollector.java @@ -1,8 +1,8 @@ package at.pcgamingfreaks.mkvaudiosubtitlechanger.intimpl; import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.FileAttribute; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.ConfigUtil; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.MkvToolNix; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; +import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix; import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.log4j.Log4j2; @@ -58,12 +58,7 @@ public class MkvFileCollector implements FileCollector { Map jsonMap; List fileAttributes = new ArrayList<>(); try { - String command = ""; - if (System.getProperty("os.name").toLowerCase().contains("windows")) { - command = "\"" + ConfigUtil.getInstance().getPathFor(MkvToolNix.MKV_MERGER) + "\""; - } else { - command = ConfigUtil.getInstance().getPathFor(MkvToolNix.MKV_MERGER); - } + String command = String.format("\"%s\"", Config.getInstance().getPathFor(MkvToolNix.MKV_MERGER)); String[] array = new String[]{ command, "--identify", diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/AttributeConfig.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/AttributeConfig.java similarity index 92% rename from src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/AttributeConfig.java rename to src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/AttributeConfig.java index 200ea6c..6adce73 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/AttributeConfig.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/AttributeConfig.java @@ -1,4 +1,4 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config; +package at.pcgamingfreaks.mkvaudiosubtitlechanger.model; import lombok.Getter; import lombok.extern.log4j.Log4j2; diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/MkvToolNix.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/MkvToolNix.java similarity index 82% rename from src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/MkvToolNix.java rename to src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/MkvToolNix.java index cc2eda6..a4ee572 100644 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/MkvToolNix.java +++ b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/model/MkvToolNix.java @@ -1,4 +1,4 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; +package at.pcgamingfreaks.mkvaudiosubtitlechanger.model; public enum MkvToolNix { MKV_MERGER("mkvmerge.exe"),