diff options
Diffstat (limited to 'src/main/java/re/jag/mcqtt/McqttSettings.java')
-rw-r--r-- | src/main/java/re/jag/mcqtt/McqttSettings.java | 78 |
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))); + } +} |