diff --git a/src/main/java/org/leolo/nrdatad/App.java b/src/main/java/org/leolo/nrdatad/App.java index e9131d7..bb55ab4 100644 --- a/src/main/java/org/leolo/nrdatad/App.java +++ b/src/main/java/org/leolo/nrdatad/App.java @@ -4,8 +4,10 @@ package org.leolo.nrdatad; import org.apache.commons.cli.*; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.leolo.nrdatad.db.DatabaseManager; import java.io.IOException; +import java.lang.reflect.InvocationTargetException; /** * Hello world! @@ -14,6 +16,8 @@ import java.io.IOException; public class App { Logger log = LogManager.getLogger(); + + private ConfigurationManager config = ConfigurationManager.getInstance(); public static void main( String[] args ) { Option confFile = Option.builder() .required(false) @@ -38,23 +42,38 @@ public class App { private void run(String configPath){ log.always().log("System Started."); + try { - ConfigurationManager.getInstance().loadConfiguration(configPath); + config.loadConfiguration(configPath); } catch (IOException e) { log.atError().withThrowable(e).log("Unable to load confog file"); return; } // log.atDebug() - if(ConfigurationManager.getInstance().getProperty("general.debug","false").equals("true")){ - for(String key:ConfigurationManager.getInstance().stringPropertyNames()){ + if(config.getProperty("general.debug","false").equals("true")){ + for(String key:config.stringPropertyNames()){ if(key.endsWith("pwd")){ - log.atDebug().log("Config: {} : ****({} chars)", key, ConfigurationManager.getInstance().getProperty(key).length()); + log.atDebug().log("Config: {} : ****({} chars)", key, config.getProperty(key).length()); }else{ - log.atDebug().log("Config: {} : {}", key, ConfigurationManager.getInstance().getProperty(key)); + log.atDebug().log("Config: {} : {}", key, config.getProperty(key)); } } } + String databaseManagerClass = config.getProperty("db.manager","org.leolo.nrdatad.db.DatabaseManager"); + log.atInfo().log("Creating database manager {}", databaseManagerClass); + try { + config.setDatabaseManager((DatabaseManager) Class.forName(databaseManagerClass).getConstructor().newInstance()); + } catch ( + InstantiationException|IllegalAccessException|InvocationTargetException| + NoSuchMethodException|ClassNotFoundException e + ) { + log.atFatal().log("Unable to create instance of {}", databaseManagerClass); + System.exit(1); + } catch (ClassCastException e){ + log.atFatal().log("{} is not a DatabaseManager", databaseManagerClass); + System.exit(1); + } } } diff --git a/src/main/java/org/leolo/nrdatad/ConfigurationManager.java b/src/main/java/org/leolo/nrdatad/ConfigurationManager.java index 70eb9d8..2d030c9 100644 --- a/src/main/java/org/leolo/nrdatad/ConfigurationManager.java +++ b/src/main/java/org/leolo/nrdatad/ConfigurationManager.java @@ -2,6 +2,7 @@ package org.leolo.nrdatad; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.leolo.nrdatad.db.DatabaseManager; import java.io.FileReader; import java.io.IOException; @@ -13,7 +14,17 @@ public final class ConfigurationManager { private static ConfigurationManager instance; Logger logger = LogManager.getLogger(); Properties prop = new Properties(); - + + private DatabaseManager databaseManager; + + public DatabaseManager getDatabaseManager() { + return databaseManager; + } + + public void setDatabaseManager(DatabaseManager databaseManager) { + this.databaseManager = databaseManager; + } + public synchronized static ConfigurationManager getInstance(){ if(instance==null){ instance = new ConfigurationManager(); diff --git a/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java b/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java index ac0bb71..5af26e7 100644 --- a/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java +++ b/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java @@ -1,4 +1,6 @@ package org.leolo.nrdatad.db; public interface DatabaseManager { + + public void initPool(); } diff --git a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java index 1f08f2f..5646143 100644 --- a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java +++ b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java @@ -1,5 +1,8 @@ package org.leolo.nrdatad.db.mariadb; public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager{ + @Override + public void initPool() { + } } diff --git a/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java b/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java index 2424f59..e4d843d 100644 --- a/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java +++ b/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java @@ -1,4 +1,9 @@ package org.leolo.nrdatad.db.test; public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager { + + @Override + public void initPool() { + + } }