X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=Addressbook%2Fsrc%2Forg%2Fmxchange%2Faddressbook%2FBaseFrameworkSystem.java;h=6315877d1f81f9d9387e012b0451777e77637b3f;hb=5c0579d7d5f6ba9512d96610872cc4c359a0558a;hp=431aeb456a8e49677e56f1aba655014fd1dc7f92;hpb=ea30fd0dc674dcd10c3aead1acd47000a99d7334;p=jfinancials-swing.git diff --git a/Addressbook/src/org/mxchange/addressbook/BaseFrameworkSystem.java b/Addressbook/src/org/mxchange/addressbook/BaseFrameworkSystem.java index 431aeb4..6315877 100644 --- a/Addressbook/src/org/mxchange/addressbook/BaseFrameworkSystem.java +++ b/Addressbook/src/org/mxchange/addressbook/BaseFrameworkSystem.java @@ -16,6 +16,13 @@ */ package org.mxchange.addressbook; +import java.io.BufferedReader; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.PrintWriter; +import java.util.Properties; import java.util.ResourceBundle; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -55,6 +62,11 @@ public class BaseFrameworkSystem implements FrameworkInterface { */ private ManageableContact contactManager; + /** + * Instance for own properties + */ + private final Properties properties; + /** * Name of used database table, handled over to backend */ @@ -72,6 +84,11 @@ public class BaseFrameworkSystem implements FrameworkInterface { * No instances can be created of this class */ protected BaseFrameworkSystem () { + // Init properties instance + this.properties = new Properties(); + + // Init properties file + this.initProperties(); } /** @@ -104,6 +121,54 @@ public class BaseFrameworkSystem implements FrameworkInterface { return this.contactManager; } + /** + * Prepares all properties, the file is written if it is not found + */ + private void initProperties () { + try { + // Try to read it + this.properties.load(new BufferedReader(new InputStreamReader(new FileInputStream(FrameworkInterface.PROPERTIES_CONFIG_FILE)))); + } catch (final FileNotFoundException ex) { + /* + * The file is not found which is normal for first run, so + * initialize default values. + */ + this.initPropertiesWithDefault(); + + // Write file + this.writePropertiesFile(); + } catch (final IOException ex) { + // Something else didn't work + this.abortProgramWithException(ex); + } + } + + /** + * Initializes properties with default values + */ + private void initPropertiesWithDefault () { + // Init default values: + // Default database backend + this.properties.put("org.mxchange.addressbook.database.backendType", "base64csv"); + + // For MySQL backend + this.properties.put("org.mxchange.addressbook.database.mysql.host", "localhost"); + this.properties.put("org.mxchange.addressbook.database.mysql.login", ""); + this.properties.put("org.mxchange.addressbook.database.mysql.password", ""); + } + + /** + * Writes the properties file to disk + */ + private void writePropertiesFile () { + try { + // Write it + this.properties.store(new PrintWriter(FrameworkInterface.PROPERTIES_CONFIG_FILE), "This file is automatically generated. You may wish to alter it."); + } catch (final IOException ex) { + this.abortProgramWithException(ex); + } + } + /** * Contact manager instance * @@ -131,6 +196,41 @@ public class BaseFrameworkSystem implements FrameworkInterface { this.application = application; } + /** + * Getter for human-readable string from given key + * + * @param key Key to return + * @return Human-readable message + */ + @Override + public final String getMessageStringFromKey (final String key) { + // Return message + return this.getBundle().getString(key); + } + + /** + * Aborts program with given exception + * + * @param throwable Any type of Throwable + */ + protected final void abortProgramWithException (final Throwable throwable) { + // Log exception ... + this.getLogger().catching(throwable); + + // .. and exit + System.exit(1); + + } + + /** + * Getter for bundle instance + * + * @return Resource bundle + */ + protected final ResourceBundle getBundle () { + return this.bundle; + } + /** * Getter for logger * @@ -140,6 +240,16 @@ public class BaseFrameworkSystem implements FrameworkInterface { return this.LOG; } + /** + * Getter for property which must exist + * + * @param key Key to get + * @return Propety value + */ + protected String getProperty (final String key) { + return this.properties.getProperty(key); + } + /** * Name of used database table, handled over to backend * @@ -157,13 +267,4 @@ public class BaseFrameworkSystem implements FrameworkInterface { protected final void setTableName (final String tableName) { this.tableName = tableName; } - - /** - * Getter for bundle instance - * - * @return Resource bundle - */ - protected final ResourceBundle getBundle () { - return this.bundle; - } }