aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/re/jag/mcqtt/McqttSettings.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/re/jag/mcqtt/McqttSettings.java')
-rw-r--r--src/main/java/re/jag/mcqtt/McqttSettings.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/re/jag/mcqtt/McqttSettings.java b/src/main/java/re/jag/mcqtt/McqttSettings.java
new file mode 100644
index 0000000..086b550
--- /dev/null
+++ b/src/main/java/re/jag/mcqtt/McqttSettings.java
@@ -0,0 +1,78 @@
+package re.jag.mcqtt;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.FileSystems;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.util.Properties;
+
+public class McqttSettings {
+ private Properties properties = new Properties();
+ private boolean changed_config = false;
+
+ public final String mqtt_server;
+ public final String mqtt_user;
+ public final String mqtt_password;
+ public final String mqtt_certificate;
+ public final String mqtt_base_topic;
+
+ public final int publish_interval;
+
+ public McqttSettings(String _properties_file) {
+ Path path = FileSystems.getDefault().getPath(_properties_file);
+ load(path);
+
+ this.mqtt_server = get_string("mqtt-server", "tcp://localhost");
+ this.mqtt_user = get_string("mqtt-user", "username");
+ this.mqtt_password = get_string("mqtt-password", "p4assword");
+ this.mqtt_certificate = get_string("mqtt-certificate", "");
+ this.mqtt_base_topic = get_string("mqtt-base-topic", "minecraft");
+
+ this.publish_interval = get_int("publish-interval-mins", 5);
+
+ if(changed_config)
+ save(path);
+ }
+
+ private void load(Path _path) {
+ try {
+ InputStream inp = Files.newInputStream(_path);
+ properties.load(inp);
+ } catch (IOException e) {
+ Mcqtt.LOG.warn("Failed to read from " + _path.getFileName());
+ }
+ }
+
+ private void save(Path _path) {
+ try {
+ OutputStream out = Files.newOutputStream(_path);
+ properties.store(out, "McQTT mod settings");
+ } catch (IOException e) {
+ Mcqtt.LOG.error("Failed to write to " + _path.getFileName());
+ }
+ }
+
+ private String get(String _name, String _default) {
+ String val = properties.getProperty(_name);
+ if (val == null) {
+ properties.setProperty(_name, _default);
+ changed_config = true;
+ return _default;
+ }
+ return val;
+ }
+
+ private boolean get_boolean(String _name, boolean _default) {
+ return Boolean.parseBoolean(get(_name, String.valueOf(_default)));
+ }
+
+ private String get_string(String _name, String _default) {
+ return get(_name, _default);
+ }
+
+ private int get_int(String _name, int _default) {
+ return Integer.parseInt(get(_name, String.valueOf(_default)));
+ }
+}