From a156db16fea6767c34ab51a02b0f10de7a768948 Mon Sep 17 00:00:00 2001 From: RatzzFatzz Date: Sat, 18 Oct 2025 01:39:48 +0200 Subject: [PATCH] Remove deprecated validator --- .../config/ValidationResult.java | 10 - .../validator/AttributeConfigValidator.java | 88 --------- .../config/validator/BooleanValidator.java | 64 ------- .../validator/CoherentConfigValidator.java | 23 --- .../config/validator/ConfigPathValidator.java | 36 ---- .../config/validator/ConfigValidator.java | 177 ------------------ .../config/validator/DateValidator.java | 62 ------ .../validator/MkvToolNixPathValidator.java | 27 --- .../config/validator/PathValidator.java | 31 --- .../config/validator/PatternValidator.java | 35 ---- .../config/validator/SetValidator.java | 112 ----------- .../config/validator/ThreadValidator.java | 27 --- .../util/CommandLineOptionsUtil.java | 23 --- .../validator/ConfigPathValidatorTest.java | 57 ------ 14 files changed, 772 deletions(-) delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ValidationResult.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/AttributeConfigValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/BooleanValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/CoherentConfigValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/MkvToolNixPathValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PatternValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/SetValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ThreadValidator.java delete mode 100644 src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/CommandLineOptionsUtil.java delete mode 100644 src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidatorTest.java diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ValidationResult.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ValidationResult.java deleted file mode 100644 index 0f17cfc..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/ValidationResult.java +++ /dev/null @@ -1,10 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config; - -@Deprecated -public enum ValidationResult { - VALID, - DEFAULT, - NOT_PRESENT, - MISSING, - INVALID; -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/AttributeConfigValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/AttributeConfigValidator.java deleted file mode 100644 index ea94433..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/AttributeConfigValidator.java +++ /dev/null @@ -1,88 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.AttributeConfig; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.yaml.YAML; -import org.apache.commons.cli.CommandLine; - -import java.util.List; -import java.util.function.Function; -import java.util.stream.Collectors; - -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.LanguageValidatorUtil.isLanguageValid; - -@Deprecated -public class AttributeConfigValidator extends ConfigValidator> { - private static final String SEPARATOR = ":"; - - public AttributeConfigValidator() { - super(ConfigProperty.ATTRIBUTE_CONFIG, true, null); - } - - /** - * {@inheritDoc} - */ - public ValidationResult validate(YAML yaml, CommandLine cmd) { - System.out.printf("%s: ", property.prop()); - List result; - - - if (cmd.hasOption(property.prop())) { - List values = List.of(cmd.getOptionValues(property.prop())); - result = values.stream().anyMatch(pair -> !pair.contains(SEPARATOR)) - ? List.of() - : values.stream().map(pair -> pair.split(SEPARATOR)) - .map(split -> new AttributeConfig(split[0], split[1])) - .collect(Collectors.toList()); - } else if(yaml.getKeysFiltered(property.prop() + ".*").size() > 0) { - Function audio = key -> yaml.getString(key + ".audio", null); - Function subtitle = key -> yaml.getString(key + ".subtitle", null); - - result = yaml.getKeysFiltered(".*audio.*").stream() - .sorted() - .map(key -> key.replace(".audio", "")) - .map(key -> new AttributeConfig(audio.apply(key), subtitle.apply(key))) - .collect(Collectors.toList()); - } else if (required) { - System.out.println("missing"); - return ValidationResult.MISSING; - } else { - System.out.println("ok"); - return ValidationResult.NOT_PRESENT; - } - - if (!isValid(result) || !setValue(result)) { - System.out.println("invalid"); - return ValidationResult.INVALID; - } - - System.out.println("ok"); - return ValidationResult.VALID; - } - - /** - * {@inheritDoc} - */ - @Override - List parse(String value) { - return null; - } - - /** - * {@inheritDoc} - */ - @Override - boolean isValid(List result) { - if (result.isEmpty()) { - return false; - } - boolean isValid; - for (AttributeConfig attributeConfig : result) { - isValid = isLanguageValid(attributeConfig.getAudioLanguage()) - && isLanguageValid(attributeConfig.getSubtitleLanguage()); - if (!isValid) return false; - } - return true; - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/BooleanValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/BooleanValidator.java deleted file mode 100644 index 6446722..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/BooleanValidator.java +++ /dev/null @@ -1,64 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.yaml.YAML; -import at.pcgamingfreaks.yaml.YamlKeyNotFoundException; -import org.apache.commons.cli.CommandLine; - -import java.util.List; -import java.util.Optional; -import java.util.function.BiFunction; - -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.ARGUMENTS; - -@Deprecated -public class BooleanValidator extends ConfigValidator { - - public BooleanValidator(ConfigProperty property, boolean required) { - super(property, required, null); - } - - /** - * {@inheritDoc} - */ - protected BiFunction> provideDataYaml() { - return (yaml, property) -> { - if (yaml.isSet(ARGUMENTS.prop()) - && yaml.getStringList(ARGUMENTS.prop(), List.of()).contains(property.prop())) { - return Optional.of(true); - } - return Optional.empty(); - }; - } - - /** - * {@inheritDoc} - */ - protected BiFunction> provideDataCmd() { - return (cmd, property) -> { - if (cmd.hasOption(property.prop())) { - return Optional.of(true); - } - return Optional.empty(); - }; - } - - /** - * {@inheritDoc} - * This should not be used. - */ - @Override - Boolean parse(String value) { - throw new RuntimeException("This should not be called"); - } - - /** - * {@inheritDoc} - * Validation is skipped. - */ - @Override - boolean isValid(Boolean result) { - return true; // skip - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/CoherentConfigValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/CoherentConfigValidator.java deleted file mode 100644 index 9f9bdee..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/CoherentConfigValidator.java +++ /dev/null @@ -1,23 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import org.apache.commons.lang3.math.NumberUtils; - -@Deprecated -public class CoherentConfigValidator extends ConfigValidator { - private static final Integer DISABLED = -1; - - public CoherentConfigValidator(ConfigProperty property, boolean required) { - super(property, required, null); - } - - @Override - Integer parse(String value) { - return NumberUtils.isParsable(value) ? Integer.parseInt(value) : DISABLED; - } - - @Override - boolean isValid(Integer result) { - return result >= 0; - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidator.java deleted file mode 100644 index d9fa7dc..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidator.java +++ /dev/null @@ -1,36 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.yaml.YAML; - -import java.io.File; -import java.util.Optional; -import java.util.function.BiFunction; - -@Deprecated -public class ConfigPathValidator extends PathValidator { - public ConfigPathValidator(ConfigProperty property, boolean required) { - super(property, required, null); - } - - /** - * {@inheritDoc} - */ - @Override - protected BiFunction> provideDataYaml() { - return (yaml, property) -> Optional.empty(); - } - - /** - * {@inheritDoc} - */ - @Override - protected boolean isValid(File result) { - return super.isValid(result) && (result.getAbsolutePath().endsWith(".yml") || result.getAbsolutePath().endsWith(".yaml")); - } - - @Override - public int getWeight() { - return 100; - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java deleted file mode 100644 index cae426b..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigValidator.java +++ /dev/null @@ -1,177 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.yaml.YAML; -import at.pcgamingfreaks.yaml.YamlKeyNotFoundException; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.lang3.StringUtils; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.Optional; -import java.util.StringJoiner; -import java.util.function.BiFunction; -import java.util.function.Predicate; - -@Slf4j -@RequiredArgsConstructor -@Deprecated -public abstract class ConfigValidator { - protected final ConfigProperty property; - protected final boolean required; - protected final FieldType defaultValue; - - /** - * Validate the user input. Parameters of cmd are prioritised. - * - * @param yaml config file - * @param cmd command line parameters - * @return {@link ValidationResult} containing validity of input. - */ - public ValidationResult validate(YAML yaml, CommandLine cmd) { - System.out.printf("%s: ", property.prop()); - FieldType result; - - Optional cmdResult = provideDataCmd().apply(cmd, property); - Optional yamlResult = provideDataYaml().apply(yaml, property); - - if (isOverwritingNecessary()) { - result = overwriteValue(); - } else if (cmdResult.isPresent()) { - result = cmdResult.get(); - } else if (yamlResult.isPresent()) { - result = yamlResult.get(); - } else { - if (defaultValue != null) { - if (setValue(defaultValue)) { - System.out.println("default"); - return ValidationResult.DEFAULT; - } else { - System.out.println("invalid"); - return ValidationResult.INVALID; - } - } - if (required) { - System.out.println("missing"); - return ValidationResult.MISSING; - } else { - System.out.println("ok"); - return ValidationResult.NOT_PRESENT; - } - } - - if (!isValid(result) || !setValue(result)) { - System.out.println("invalid"); - return ValidationResult.INVALID; - } - - System.out.println("ok"); - return ValidationResult.VALID; - } - - /** - * @return parsed input of yaml config for property - */ - protected BiFunction> provideDataYaml() { - return (yaml, property) -> { - if (yaml.isSet(property.prop())) { - try { - return Optional.of(parse(yaml.getString(property.prop()))); - } catch (YamlKeyNotFoundException e) { - throw new RuntimeException(e); - } - } - return Optional.empty(); - }; - } - - /** - * @return parsed input of command line parameters config for property - */ - protected BiFunction> provideDataCmd() { - return (cmd, property) -> { - if (cmd.hasOption(property.prop())) { - return Optional.of(parse(cmd.getOptionValue(property.prop()))); - } - return Optional.empty(); - }; - } - - /** - * @return true if overwriting this property is necessary. - */ - protected boolean isOverwritingNecessary() { - return false; - } - - /** - * @return {@link FieldType} to overwrite result with. - */ - protected FieldType overwriteValue() { - return null; - } - - /** - * Parse input parameter to desired format. - * - * @param value input parameter - * @return parsed property - */ - abstract FieldType parse(String value); - - /** - * Validate if the data has the desired and allowed format. - * - * @param result parsed property - * @return true if data is in desired format. - */ - abstract boolean isValid(FieldType result); - - /** - * Sets valid properties to {@link Config} via reflections. - * - * @param result parsed property - * @return false if method invocation failed - */ - protected boolean setValue(FieldType result) { - for (Method method : Config.getInstance().getClass().getDeclaredMethods()) { - if (containsSetterOf(property).test(method)) { - try { - method.invoke(Config.getInstance(), result); - return true; - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } - } - } - - return false; - } - - protected Predicate containsSetterOf(ConfigProperty property) { - return method -> StringUtils.startsWith(method.getName(), "set") - && StringUtils.equalsIgnoreCase(method.getName().replace("set", ""), property.prop().replace("-", "")); - } - - protected Predicate containsGetterOf(ConfigProperty property) { - return method -> StringUtils.startsWith(method.getName(), "get") - && StringUtils.equalsIgnoreCase(method.getName().replace("get", ""), property.prop().replace("-", "")); - } - - public int getWeight() { - return 50; - } - - @Override - public String toString() { - return new StringJoiner(", ", ConfigValidator.class.getSimpleName() + "[", "]") - .add("property=" + property) - .add("required=" + required) - .add("defaultValue=" + defaultValue) - .toString(); - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java deleted file mode 100644 index 4a1963f..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/DateValidator.java +++ /dev/null @@ -1,62 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.DateUtils; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.util.ProjectUtil; -import at.pcgamingfreaks.yaml.YAML; -import at.pcgamingfreaks.yaml.YamlInvalidContentException; -import lombok.extern.slf4j.Slf4j; -import net.harawata.appdirs.AppDirsFactory; - -import java.io.File; -import java.io.IOException; -import java.nio.file.Path; -import java.util.Date; - -@Slf4j -@Deprecated -public class DateValidator extends ConfigValidator { - private static final Date INVALID_DATE = new Date(0); - private static final Date DEFAULT_DATE = new Date(1000); - - public DateValidator(ConfigProperty property, boolean required) { - super(property, required, null); - } - - @Override - protected boolean isOverwritingNecessary() { - return Config.getInstance().isOnlyNewFiles(); - } - - @Override - protected Date overwriteValue() { - try { - String filePath = AppDirsFactory.getInstance().getUserConfigDir(ProjectUtil.getProjectName(), null, null); - File lastExecutionFile = Path.of(filePath + "/last-execution.yml").toFile(); - if (!lastExecutionFile.exists()) { - return DEFAULT_DATE; - } - YAML yaml = new YAML(lastExecutionFile); - return parse(yaml.getString(Config.getInstance().getNormalizedLibraryPath(), DateUtils.convert(DEFAULT_DATE))); - } catch (YamlInvalidContentException | IOException e) { - log.error("Couldn't open last-execution.properties", e); - return INVALID_DATE; - } - } - - @Override - Date parse(String value) { - return DateUtils.convert(value, INVALID_DATE); - } - - @Override - boolean isValid(Date result) { - return !result.equals(INVALID_DATE); - } - - @Override - public int getWeight() { - return 40; - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/MkvToolNixPathValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/MkvToolNixPathValidator.java deleted file mode 100644 index c9ff163..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/MkvToolNixPathValidator.java +++ /dev/null @@ -1,27 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; - -import java.io.File; -import java.nio.file.Path; - -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix.MKV_MERGE; -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.MkvToolNix.MKV_PROP_EDIT; - -@Deprecated -public class MkvToolNixPathValidator extends PathValidator { - private static final String EXE = ".exe"; - - public MkvToolNixPathValidator(ConfigProperty property, boolean required, File defaultValue) { - super(property, required, defaultValue); - } - - @Override - protected boolean isValid(File result) { - return result.isDirectory() - && (Path.of(result.getAbsolutePath() + "/" + MKV_MERGE + EXE).toFile().isFile() - && Path.of(result.getAbsolutePath() + "/" + MKV_PROP_EDIT + EXE).toFile().isFile()) - || (Path.of(result.getAbsolutePath() + "/" + MKV_MERGE).toFile().isFile() - && Path.of(result.getAbsolutePath() + "/" + MKV_PROP_EDIT).toFile().isFile()); - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidator.java deleted file mode 100644 index 688d8aa..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PathValidator.java +++ /dev/null @@ -1,31 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; - -import java.io.File; -import java.nio.file.Path; - -@Deprecated -public class PathValidator extends ConfigValidator { - - public PathValidator(ConfigProperty property, boolean required, File defaultValue) { - super(property, required, defaultValue); - } - - /** - * {@inheritDoc} - */ - @Override - protected File parse(String value) { - return Path.of(value).toFile(); - } - - /** - * {@inheritDoc} - */ - @Override - protected boolean isValid(File result) { - return result.isDirectory() || result.isFile(); - } - -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PatternValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PatternValidator.java deleted file mode 100644 index 9ee0468..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/PatternValidator.java +++ /dev/null @@ -1,35 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; - -import java.util.regex.Pattern; -import java.util.regex.PatternSyntaxException; - -@Deprecated -public class PatternValidator extends ConfigValidator { - private static final Pattern EMPTY_PATTERN = Pattern.compile(""); - - public PatternValidator(ConfigProperty property, boolean required, Pattern defaultValue) { - super(property, required, defaultValue); - } - - /** - * {@inheritDoc} - */ - @Override - Pattern parse(String value) { - try { - return Pattern.compile(value); - } catch (PatternSyntaxException e) { - return EMPTY_PATTERN; - } - } - - /** - * {@inheritDoc} - */ - @Override - boolean isValid(Pattern result) { - return !result.equals(EMPTY_PATTERN); - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/SetValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/SetValidator.java deleted file mode 100644 index cddbb05..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/SetValidator.java +++ /dev/null @@ -1,112 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.Config; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.yaml.YAML; -import at.pcgamingfreaks.yaml.YamlKeyNotFoundException; -import org.apache.commons.cli.CommandLine; - -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.util.*; -import java.util.function.BiFunction; -import java.util.stream.Collectors; - -@Deprecated -public class SetValidator extends ConfigValidator> { - private final boolean append; - - public SetValidator(ConfigProperty property, boolean required, boolean append) { - super(property, required, null); - this.append = append; - } - - public ValidationResult validate(YAML yaml, CommandLine cmd) { - System.out.printf("%s: ", property.prop()); - List resultList = null; - - if (cmd.hasOption(property.prop())) { - resultList = List.of(cmd.getOptionValues(property.prop())); - } else if (yaml.isSet(property.prop())) { - try { - resultList = yaml.getStringList(property.prop()); - } catch (YamlKeyNotFoundException ignored) {} - } else if (required) { - System.out.println("missing"); - return ValidationResult.MISSING; - } else { - System.out.println("ok"); - return ValidationResult.NOT_PRESENT; - } - - Set result = parse(resultList); - - if (!isValid(result) || !setValue(result)) { - System.out.println("invalid"); - return ValidationResult.INVALID; - } - - System.out.println("ok"); - return ValidationResult.VALID; - } - - protected BiFunction>> provideDataYaml() { - return (yaml, property) -> { - if (yaml.isSet(property.prop())) { - try { - return Optional.of(parse(yaml.getStringList(property.prop()))); - } catch (YamlKeyNotFoundException ignored) { - } - } - return Optional.empty(); - }; - } - - protected BiFunction>> provideDataCmd() { - return (cmd, property) -> { - if (cmd.hasOption(property.prop())) { - return Optional.of(parse(List.of(cmd.getOptionValues(property.prop())))); - } - return Optional.empty(); - }; - } - - @Override - Set parse(String value) { - throw new RuntimeException("This should not be called"); - } - - protected Set parse(List value) { - return new HashSet<>(value); - } - - @Override - boolean isValid(Set result) { - return true; - } - - @SuppressWarnings("unchecked") - protected boolean setValue(Set result) { - List methods = append - ? Arrays.stream(Config.getInstance().getClass().getDeclaredMethods()) - .filter(containsGetterOf(property)) - .collect(Collectors.toList()) - : Arrays.stream(Config.getInstance().getClass().getDeclaredMethods()) - .filter(containsSetterOf(property)) - .collect(Collectors.toList()); - if (methods.size() != 1) { - return false; - } - try { - if (append) { - ((Set) methods.get(0).invoke(Config.getInstance())).addAll(result); - } else { - methods.get(0).invoke(Config.getInstance(), result); - } - } catch (IllegalAccessException | InvocationTargetException e) { - throw new RuntimeException(e); - } - return true; - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ThreadValidator.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ThreadValidator.java deleted file mode 100644 index 85086a4..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ThreadValidator.java +++ /dev/null @@ -1,27 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import org.apache.commons.lang3.math.NumberUtils; - -@Deprecated -public class ThreadValidator extends ConfigValidator{ - public ThreadValidator(ConfigProperty property, boolean required, Integer defaultValue) { - super(property, required, defaultValue); - } - - /** - * {@inheritDoc} - */ - @Override - Integer parse(String value) { - return NumberUtils.isParsable(value) ? Integer.parseInt(value) : defaultValue; - } - - /** - * {@inheritDoc} - */ - @Override - boolean isValid(Integer result) { - return result > 0; - } -} diff --git a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/CommandLineOptionsUtil.java b/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/CommandLineOptionsUtil.java deleted file mode 100644 index 3b887a8..0000000 --- a/src/main/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/util/CommandLineOptionsUtil.java +++ /dev/null @@ -1,23 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.util; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import org.apache.commons.cli.Option; - -public class CommandLineOptionsUtil { - public static Option optionOf(ConfigProperty property, String opt, int args) { - return optionOf(property, opt, args, false); - } - - public static Option optionOf(ConfigProperty property, String opt, boolean hasArg, boolean required) { - return optionOf(property, opt, hasArg ? 1 : 0, required); - } - - public static Option optionOf(ConfigProperty property, String opt, int args, boolean required) { - Option option = new Option(opt, property.desc()); - option.setArgs(args); - option.setLongOpt(property.prop()); - option.setRequired(required); - return option; - } - -} diff --git a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidatorTest.java b/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidatorTest.java deleted file mode 100644 index ec4c7ba..0000000 --- a/src/test/java/at/pcgamingfreaks/mkvaudiosubtitlechanger/config/validator/ConfigPathValidatorTest.java +++ /dev/null @@ -1,57 +0,0 @@ -package at.pcgamingfreaks.mkvaudiosubtitlechanger.config.validator; - -import at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult; -import at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty; -import at.pcgamingfreaks.yaml.YAML; -import at.pcgamingfreaks.yaml.YamlInvalidContentException; -import org.apache.commons.cli.CommandLineParser; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; -import org.junit.jupiter.api.BeforeAll; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.Arguments; -import org.junit.jupiter.params.provider.MethodSource; - -import java.util.stream.Stream; - -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.*; -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.config.ValidationResult.INVALID; -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.model.ConfigProperty.CONFIG_PATH; -import static at.pcgamingfreaks.mkvaudiosubtitlechanger.util.CommandLineOptionsUtil.optionOf; -import static org.junit.jupiter.api.Assertions.*; - -class ConfigPathValidatorTest { - private static final String TEST_FILE = "src/test/resources/test-dir/test-file.mkv"; - private static final String TEST_CONFIG = "src/test/resources/test-dir/test-config.yaml"; - - private static CommandLineParser parser; - private static Options options; - - @BeforeAll - static void before() { - parser = new DefaultParser(); - options = new Options(); - options.addOption(optionOf(CONFIG_PATH, CONFIG_PATH.abrv(), CONFIG_PATH.args())); - } - - private static Stream provideTestCases() { - return Stream.of( - Arguments.of(CONFIG_PATH, true, "", new String[]{"-p", TEST_CONFIG}, VALID), - Arguments.of(CONFIG_PATH, true, "config-path: " + TEST_CONFIG, new String[]{}, MISSING), - Arguments.of(CONFIG_PATH, false, "config-path: " + TEST_CONFIG, new String[]{}, NOT_PRESENT), - Arguments.of(CONFIG_PATH, true, "", new String[]{"-p", TEST_FILE}, INVALID) - ); - } - - @ParameterizedTest - @MethodSource("provideTestCases") - void validate(ConfigProperty property, boolean required, String yamlArgs, String[] cmdArgs, - ValidationResult expectedResult) throws ParseException, YamlInvalidContentException { - ConfigPathValidator underTest = new ConfigPathValidator(property, required); - - ValidationResult result = underTest.validate(new YAML(yamlArgs), parser.parse(options, cmdArgs)); - - assertEquals(expectedResult, result); - } -} \ No newline at end of file