diff --git a/src/core/Config.java b/src/core/Config.java index 2cf3ca0..b7d15d8 100644 --- a/src/core/Config.java +++ b/src/core/Config.java @@ -3,25 +3,39 @@ import java.nio.file.Path; import utils.GlobalLog; import utils.LogFilter; -import utils.io.MonitoredFile; +import utils.io.FileMonitor; public class Config { - private static final Path filepath = Constants.AssetDirectory + Constants.ConfigFilename; - MonitoredFile configFile; + private static final String filepath = Constants.AssetDirectory + Constants.ConfigFilename; + FileMonitor configFile; - Config instance; + public static Config instance; + + // Accessable config related things + public LocStrings locStrings; + public LocCommands locCommands; + public CommandEnabler commandEnabler; public Config() { if(instance == null) { - configFile = new MonitoredFile(filepath); + // Start by reading from things that are external. Because + // we require these things to be resolved before the rest of the application, + // we place them here. + configFile = new FileMonitor(filepath); + + commandEnabler = new CommandEnabler(); + locStrings = new LocStrings(); + locCommands = new LocCommands(); + instance = this; } else { GlobalLog.error(LogFilter.Core, "You can't have two of the following: " + this.getClass().getSimpleName()); + System.exit(-1); } } diff --git a/src/core/LocStrings.java b/src/core/LocStrings.java index 29e2eb1..dafee4b 100644 --- a/src/core/LocStrings.java +++ b/src/core/LocStrings.java @@ -40,9 +40,4 @@ public class LocStrings extends BaseLocFile { return instance.getKey(stubbedPreviously); } - - public static void upkeep() - { - instance.update(); - } } \ No newline at end of file diff --git a/src/core/ObjectBuilderFactory.java b/src/core/ObjectBuilderFactory.java index 65bfbb9..c0fb982 100644 --- a/src/core/ObjectBuilderFactory.java +++ b/src/core/ObjectBuilderFactory.java @@ -57,8 +57,8 @@ public class ObjectBuilderFactory @SuppressWarnings("unused") private static LocStrings locStrings; @SuppressWarnings("unused") private static LocCommands locCommands; - // Handles if we can or can't use specific commands, parsing a config file based on loc data to do so. - private static CommandEnabler commandEnabler; + // Config + private static Config config; // Lazy initialization multithreaded mutex stuff to prevent explosions. // TODO: Investigate using 'synchronized' instead potentially @@ -85,11 +85,8 @@ public class ObjectBuilderFactory database = null; stats = null; - // Start by reading from things that are external. Because - // we require these things to be resolved before the rest of the application, - // we place them here. - locStrings = new LocStrings(); - locCommands = new LocCommands(); + // Create the config. We need to do this all first. + config = new Config(); } finally { @@ -442,17 +439,6 @@ public class ObjectBuilderFactory return manager; } - // Constructs a CommandEnabler if it doesn't exist, and gets the existing one if it does. - public static CommandEnabler constructCommandEnabler() - { - lazyInit(); - - if(commandEnabler == null) - commandEnabler = new CommandEnabler(); - - return commandEnabler; - } - // Default database manager construction. It can be constructed // in different ways, and so we construct it outside of the constructor for // the factory since it doesn't have to be present / can be elsewhere. diff --git a/src/core/Settings.java b/src/core/Settings.java deleted file mode 100644 index 9ffdf42..0000000 --- a/src/core/Settings.java +++ /dev/null @@ -1,5 +0,0 @@ -package core; - -public class Settings { - -} diff --git a/src/main/Main.java b/src/main/Main.java index c0387a8..83be8af 100644 --- a/src/main/Main.java +++ b/src/main/Main.java @@ -7,6 +7,7 @@ import javax.security.auth.login.LoginException; import core.CharacterManager; import core.CommandEnabler; import core.CommandManager; +import core.Config; import core.DatabaseManager; import core.ObjectBuilderFactory; import core.RPManager; @@ -36,7 +37,6 @@ public class Main extends ListenerAdapter // Variables and bot specific objects private static KittyCore kittyCore; private static DatabaseManager databaseManager; - private static CommandEnabler commandEnabler; private static CommandManager commandManager; private static Stats stats; private static RPManager rpManager; @@ -49,8 +49,7 @@ public class Main extends ListenerAdapter // Factory startup. The ordering is intentional. GlobalLog.initialize(); databaseManager = ObjectBuilderFactory.constructDatabaseManager(); - commandEnabler = ObjectBuilderFactory.constructCommandEnabler(); - commandManager = ObjectBuilderFactory.constructCommandManager(commandEnabler); + commandManager = ObjectBuilderFactory.constructCommandManager(Config.instance.commandEnabler); stats = ObjectBuilderFactory.constructStats(commandManager); charManager = new CharacterManager(); rpManager = ObjectBuilderFactory.constructRPManager(); diff --git a/src/utils/io/MonitoredFile.java b/src/utils/io/MonitoredFile.java index 4ceb6c3..d4fb294 100644 --- a/src/utils/io/MonitoredFile.java +++ b/src/utils/io/MonitoredFile.java @@ -12,7 +12,7 @@ public class MonitoredFile implements Comparable this.path = path; this.lastModified = lastModified; } - + // Override equals operator - used for .contains(...) on list items @Override public boolean equals(Object other)