diff --git a/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java b/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java new file mode 100644 index 0000000..357b96c --- /dev/null +++ b/common/src/main/java/cc/carm/lib/mineconfiguration/common/AbstractConfiguration.java @@ -0,0 +1,51 @@ +package cc.carm.lib.mineconfiguration.common; + +import cc.carm.lib.configuration.core.ConfigurationRoot; +import cc.carm.lib.configuration.core.source.ConfigurationProvider; +import org.jetbrains.annotations.NotNull; + +public abstract class AbstractConfiguration

> { + + private final P configProvider; + private final P messageProvider; + + protected AbstractConfiguration(@NotNull P configProvider, @NotNull P messageProvider) { + this.configProvider = configProvider; + this.messageProvider = messageProvider; + } + + public void initializeConfig(@NotNull ConfigurationRoot configRoot) { + this.configProvider.initialize(configRoot); + } + + public void initializeMessage(@NotNull ConfigurationRoot messageRoot) { + this.messageProvider.initialize(messageRoot); + } + + public void initializeConfig(@NotNull Class configRoot) { + this.configProvider.initialize(configRoot); + } + + public void initializeMessage(@NotNull Class messageRoot) { + this.messageProvider.initialize(messageRoot); + } + + public P getConfigProvider() { + return configProvider; + } + + public P getMessageProvider() { + return messageProvider; + } + + public void reload() throws Exception { + getConfigProvider().reload(); + getMessageProvider().reload(); + } + + public void save() throws Exception { + getConfigProvider().save(); + getMessageProvider().save(); + } + +} diff --git a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java index fb4df82..41c74e3 100644 --- a/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java +++ b/platform/bukkit/src/main/java/cc/carm/lib/mineconfiguration/bukkit/MineConfiguration.java @@ -1,12 +1,16 @@ package cc.carm.lib.mineconfiguration.bukkit; +import cc.carm.lib.configuration.core.ConfigurationRoot; import cc.carm.lib.mineconfiguration.bukkit.source.BukkitConfigProvider; +import cc.carm.lib.mineconfiguration.common.AbstractConfiguration; import org.bukkit.plugin.Plugin; +import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; -public class MineConfiguration { +public class MineConfiguration extends AbstractConfiguration { public static BukkitConfigProvider from(File file, String source) { BukkitConfigProvider provider = new BukkitConfigProvider(file); @@ -39,4 +43,24 @@ public class MineConfiguration { return from(new File(plugin.getDataFolder(), fileName), source); } + public MineConfiguration(@NotNull JavaPlugin plugin) { + super(from(plugin, "config.yml"), from(plugin, "messages.yml")); + } + + public MineConfiguration(@NotNull JavaPlugin plugin, + @NotNull ConfigurationRoot configRoot, + @NotNull ConfigurationRoot messageRoot) { + this(plugin); + initializeConfig(configRoot); + initializeMessage(messageRoot); + } + + public MineConfiguration(@NotNull JavaPlugin plugin, + @NotNull Class configRoot, + @NotNull Class messageRoot) { + this(plugin); + initializeConfig(configRoot); + initializeMessage(messageRoot); + } + } diff --git a/platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/bungee/MineConfiguration.java b/platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/bungee/MineConfiguration.java index 8d4b69a..0e862af 100644 --- a/platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/bungee/MineConfiguration.java +++ b/platform/bungee/src/main/java/cc/carm/lib/mineconfiguration/bungee/MineConfiguration.java @@ -1,15 +1,18 @@ package cc.carm.lib.mineconfiguration.bungee; +import cc.carm.lib.configuration.core.ConfigurationRoot; import cc.carm.lib.mineconfiguration.bungee.source.BungeeConfigProvider; +import cc.carm.lib.mineconfiguration.common.AbstractConfiguration; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.config.ConfigurationProvider; import net.md_5.bungee.config.JsonConfiguration; import net.md_5.bungee.config.YamlConfiguration; +import org.jetbrains.annotations.NotNull; import java.io.File; import java.io.IOException; -public class MineConfiguration { +public class MineConfiguration extends AbstractConfiguration { protected static BungeeConfigProvider create(File file, String source, ConfigurationProvider loader) { BungeeConfigProvider provider = new BungeeConfigProvider(file, loader); @@ -94,4 +97,26 @@ public class MineConfiguration { return fromJSON(new File(plugin.getDataFolder(), fileName), source); } + + public MineConfiguration(@NotNull Plugin plugin) { + super(from(plugin, "config.yml"), from(plugin, "messages.yml")); + } + + public MineConfiguration(@NotNull Plugin plugin, + @NotNull ConfigurationRoot configRoot, + @NotNull ConfigurationRoot messageRoot) { + this(plugin); + initializeConfig(configRoot); + initializeMessage(messageRoot); + } + + public MineConfiguration(@NotNull Plugin plugin, + @NotNull Class configRoot, + @NotNull Class messageRoot) { + this(plugin); + initializeConfig(configRoot); + initializeMessage(messageRoot); + } + + }