diff --git a/pom.xml b/pom.xml
index c3d9781..18f9739 100644
--- a/pom.xml
+++ b/pom.xml
@@ -14,8 +14,8 @@
UTF-8
- 1.7
- 1.7
+ 1.8
+ 1.8
@@ -96,6 +96,16 @@
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 8
+ 8
+
+
+
diff --git a/src/main/java/org/leolo/nrdatad/App.java b/src/main/java/org/leolo/nrdatad/App.java
index 8f4f4ce..cef45fd 100644
--- a/src/main/java/org/leolo/nrdatad/App.java
+++ b/src/main/java/org/leolo/nrdatad/App.java
@@ -78,5 +78,12 @@ public class App {
return;
}
config.getDatabaseManager().initPool();
+ if(config.getDatabaseManager().checkConnection())
+ log.atInfo().log("Database connected!");
+ else{
+ log.atFatal().log("Unable to connect to database.");
+ System.exit(1);
+ return;
+ }
}
}
diff --git a/src/main/java/org/leolo/nrdatad/ConfigurationManager.java b/src/main/java/org/leolo/nrdatad/ConfigurationManager.java
index 2d030c9..687054b 100644
--- a/src/main/java/org/leolo/nrdatad/ConfigurationManager.java
+++ b/src/main/java/org/leolo/nrdatad/ConfigurationManager.java
@@ -9,6 +9,7 @@ import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.*;
+import java.util.function.BiConsumer;
public final class ConfigurationManager {
private static ConfigurationManager instance;
@@ -116,4 +117,11 @@ public final class ConfigurationManager {
prop.clear();
}
+ public Object getOrDefault(Object key, Object defaultValue) {
+ return prop.getOrDefault(key, defaultValue);
+ }
+
+ public void forEach(BiConsumer super Object, ? super Object> action) {
+ prop.forEach(action);
+ }
}
diff --git a/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java b/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
index 5af26e7..7e383f3 100644
--- a/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
+++ b/src/main/java/org/leolo/nrdatad/db/DatabaseManager.java
@@ -1,6 +1,13 @@
package org.leolo.nrdatad.db;
+import java.sql.Connection;
+import java.sql.SQLException;
+
public interface DatabaseManager {
public void initPool();
+
+ public boolean checkConnection();
+
+ public Connection getConnection() throws SQLException;
}
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 0388714..fab1e79 100644
--- a/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java
+++ b/src/main/java/org/leolo/nrdatad/db/mariadb/DatabaseManager.java
@@ -5,6 +5,8 @@ import org.apache.logging.log4j.Logger;
import org.leolo.nrdatad.ConfigurationManager;
import org.mariadb.jdbc.MariaDbPoolDataSource;
+import java.sql.*;
+
public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager{
Logger logger = LogManager.getLogger();
private MariaDbPoolDataSource ds;
@@ -26,5 +28,33 @@ public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager{
":"+conf.getProperty("db.port", "3306")+
"/"+conf.getProperty("db.name");
logger.atDebug().log("URL={}",url);
+ try {
+ ds = new MariaDbPoolDataSource(url);
+ ds.setMinPoolSize(1);
+ ds.setMaxPoolSize(Integer.parseInt(conf.getOrDefault("db.poolsize", "20").toString()));
+ ds.setUser(conf.getProperty("db.user").toString());
+ ds.setPassword(conf.getProperty("db.pwd").toString());
+ } catch (SQLException e) {
+ logger.atFatal().withThrowable(e).log("Cannot connect to DB");
+ System.exit(-2);
+ }
+ }
+
+ @Override
+ public boolean checkConnection() {
+ try(
+ Connection conn = ds.getConnection();
+ Statement stmt = conn.createStatement();
+ ResultSet rs = stmt.executeQuery("SELECT 1")
+ ){
+ return rs.next();
+ }catch(SQLException e){
+ return false;
+ }
+ }
+
+ @Override
+ public Connection getConnection() throws SQLException{
+ return ds.getConnection();
}
}
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 e4d843d..8aaacc9 100644
--- a/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java
+++ b/src/test/java/org/leolo/nrdatad/db/test/DatabaseManager.java
@@ -1,8 +1,7 @@
package org.leolo.nrdatad.db.test;
-public class DatabaseManager implements org.leolo.nrdatad.db.DatabaseManager {
+public class DatabaseManager {
- @Override
public void initPool() {
}