From 4315351832a7bd728ca09b36d73ffc1ebf56f88f Mon Sep 17 00:00:00 2001 From: Matthew Cech Date: Thu, 27 Jun 2019 01:17:28 -0700 Subject: [PATCH] + Added config system --- assets/config.csv | 1 + src/core/Config.java | 20 ++++++++++++++++---- src/core/ConfigCSV.java | 10 ++++++++-- 3 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 assets/config.csv diff --git a/assets/config.csv b/assets/config.csv new file mode 100644 index 0000000..b0e83e6 --- /dev/null +++ b/assets/config.csv @@ -0,0 +1 @@ +"Type","Key","Value" diff --git a/src/core/Config.java b/src/core/Config.java index dd16f40..c73b4fb 100644 --- a/src/core/Config.java +++ b/src/core/Config.java @@ -1,6 +1,7 @@ package core; import java.util.List; +import java.util.Map; import java.util.Vector; import utils.io.FileMonitor; @@ -25,9 +26,9 @@ public class Config sections.add(new LocStrings()); sections.add(new CommandEnabler()); - // Being monitoring configs and mark this as the instance now that it's made + // Build the config file, then start monitoring it. + buildConfigFile(filepath); monitoredConfigFile = new FileMonitor(filepath); - build(filepath); instance = this; } @@ -39,16 +40,27 @@ public class Config } } - public void build(String path) + public void buildConfigFile(String path) { configCSV = new ConfigCSV(sections, path); + Map> groupedSections = ConfigCSV.groupByColumn(configCSV.getItems(), 0); + + if(groupedSections != null) + { + for(IConfigSection section : sections) + { + List items = groupedSections.getOrDefault(section.getSectionTitle(), new Vector()); + section.consume(items); + } + } + configCSV.writeFile(); } public void upkeep() { monitoredConfigFile.update((monitoredFile) -> { - build(monitoredFile.path.toString()); + buildConfigFile(monitoredFile.path.toString()); }); } } diff --git a/src/core/ConfigCSV.java b/src/core/ConfigCSV.java index 1a276e8..9f5d36a 100644 --- a/src/core/ConfigCSV.java +++ b/src/core/ConfigCSV.java @@ -6,7 +6,6 @@ import java.io.Reader; import java.io.Writer; import java.nio.file.Files; import java.nio.file.Paths; -import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -91,7 +90,14 @@ public class ConfigCSV // Get a copy of the internal items public List getItems() { - return Arrays.asList((ConfigItem[])fileContents.toArray()); + List out = new Vector(); + + for(ConfigItem item : fileContents) + { + out.add(new ConfigItem(item.type, item.key, item.value)); + } + + return out; } // Set the internal items