From eadbb489a7fbf9c7971872b4bc0948ba858282c9 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 18 Jul 2021 23:37:41 +0100 Subject: [PATCH] Added more config methods --- .../eco/core/config/interfaces/Config.java | 33 +++++++++++++++++++ .../core/config/wrapper/ConfigWrapper.java | 18 ++++++++++ .../config/json/EcoJSONConfigWrapper.java | 31 ++++++++++++++++- .../config/yaml/EcoYamlConfigWrapper.java | 32 ++++++++++++++++++ 4 files changed, 113 insertions(+), 1 deletion(-) diff --git a/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java b/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java index e6f525ae..5afed91e 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java +++ b/eco-api/src/main/java/com/willfp/eco/core/config/interfaces/Config.java @@ -162,6 +162,17 @@ public interface Config extends Cloneable { @NotNull String getString(@NotNull String path); + /** + * Get a string from config. + * + * @param path The key to fetch the value from. + * @param format If the string should be formatted. + * @return The found value, or an empty string if not found. + */ + @NotNull + String getString(@NotNull String path, + boolean format); + /** * Get a string from config. * @@ -171,6 +182,17 @@ public interface Config extends Cloneable { @Nullable String getStringOrNull(@NotNull String path); + /** + * Get a string from config. + * + * @param path The key to fetch the value from. + * @param format If the string should be formatted. + * @return The found value, or null if not found. + */ + @Nullable + String getStringOrNull(@NotNull String path, + boolean format); + /** * Get a list of strings from config. *

@@ -202,6 +224,17 @@ public interface Config extends Cloneable { @Nullable List getStringsOrNull(@NotNull String path); + /** + * Get a list of strings from config. + * + * @param path The key to fetch the value from. + * @param format If the strings should be formatted. + * @return The found value, or null if not found. + */ + @Nullable + List getStringsOrNull(@NotNull String path, + boolean format); + /** * Get a decimal from config. * diff --git a/eco-api/src/main/java/com/willfp/eco/core/config/wrapper/ConfigWrapper.java b/eco-api/src/main/java/com/willfp/eco/core/config/wrapper/ConfigWrapper.java index d14ec05b..c948b5b6 100644 --- a/eco-api/src/main/java/com/willfp/eco/core/config/wrapper/ConfigWrapper.java +++ b/eco-api/src/main/java/com/willfp/eco/core/config/wrapper/ConfigWrapper.java @@ -117,11 +117,23 @@ public abstract class ConfigWrapper implements Config { return handle.getString(path); } + @Override + public @NotNull String getString(@NotNull final String path, + final boolean format) { + return handle.getString(path, format); + } + @Override public @Nullable String getStringOrNull(@NotNull final String path) { return handle.getStringOrNull(path); } + @Override + public @Nullable String getStringOrNull(@NotNull final String path, + final boolean format) { + return handle.getStringOrNull(path, format); + } + @Override public @NotNull List getStrings(@NotNull final String path) { return handle.getStrings(path); @@ -138,6 +150,12 @@ public abstract class ConfigWrapper implements Config { return handle.getStringsOrNull(path); } + @Override + public @Nullable List getStringsOrNull(@NotNull final String path, + final boolean format) { + return handle.getStringsOrNull(path, format); + } + @Override public double getDouble(@NotNull final String path) { return handle.getDouble(path); diff --git a/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/json/EcoJSONConfigWrapper.java b/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/json/EcoJSONConfigWrapper.java index 478d74d6..e4d2a24f 100644 --- a/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/json/EcoJSONConfigWrapper.java +++ b/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/json/EcoJSONConfigWrapper.java @@ -278,7 +278,15 @@ public class EcoJSONConfigWrapper implements JSONConfig { @Override @NotNull public String getString(@NotNull final String path) { - return StringUtils.translate(Objects.requireNonNullElse(getOfKnownType(path, String.class), "")); + return getString(path, true); + } + + @Override + @NotNull + public String getString(@NotNull final String path, + final boolean format) { + String string = Objects.requireNonNullElse(getOfKnownType(path, String.class), ""); + return format ? StringUtils.translate(string) : string; } @Override @@ -291,6 +299,17 @@ public class EcoJSONConfigWrapper implements JSONConfig { } } + @Override + @Nullable + public String getStringOrNull(@NotNull final String path, + final boolean format) { + if (has(path)) { + return getString(path, format); + } else { + return null; + } + } + @Override @NotNull public List getStrings(@NotNull final String path) { @@ -316,6 +335,16 @@ public class EcoJSONConfigWrapper implements JSONConfig { } } + @Override + public @Nullable List getStringsOrNull(@NotNull final String path, + final boolean format) { + if (has(path)) { + return getStrings(path, format); + } else { + return null; + } + } + @Override public double getDouble(@NotNull final String path) { return Objects.requireNonNullElse(getOfKnownType(path, Double.class), 0D); diff --git a/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/yaml/EcoYamlConfigWrapper.java b/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/yaml/EcoYamlConfigWrapper.java index fddf1386..6132887a 100644 --- a/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/yaml/EcoYamlConfigWrapper.java +++ b/eco-core/core-backend/src/main/java/com/willfp/eco/internal/config/yaml/EcoYamlConfigWrapper.java @@ -207,6 +207,18 @@ public class EcoYamlConfigWrapper implements Con } } + @Override + public @NotNull String getString(@NotNull final String path, + final boolean format) { + if (cache.containsKey(path)) { + return (String) cache.get(path); + } else { + String string = Objects.requireNonNull(handle.getString(path, "")); + cache.put(path, format ? StringUtils.translate(string) : string); + return getString(path); + } + } + @Override @Nullable public String getStringOrNull(@NotNull final String path) { @@ -217,6 +229,16 @@ public class EcoYamlConfigWrapper implements Con } } + @Override + public @Nullable String getStringOrNull(@NotNull final String path, + final boolean format) { + if (has(path)) { + return getString(path, format); + } else { + return null; + } + } + @Override @NotNull public List getStrings(@NotNull final String path) { @@ -245,6 +267,16 @@ public class EcoYamlConfigWrapper implements Con } } + @Override + public @Nullable List getStringsOrNull(@NotNull final String path, + final boolean format) { + if (has(path)) { + return getStrings(path, format); + } else { + return null; + } + } + @Override public double getDouble(@NotNull final String path) { if (cache.containsKey(path)) {