From 9619cd0deb2dce30bb6cc92ea2c05b73c4ca892c Mon Sep 17 00:00:00 2001
From: Tharre <tharre3@gmail.com>
Date: Tue, 1 May 2018 22:42:46 +0200
Subject: Add JDBCConnectionManager

---
 .../groupphase/util/JDBCConnectionManager.java     | 45 ++++++++++++++++++++++
 1 file changed, 45 insertions(+)
 create mode 100644 src/main/java/at/ac/tuwien/sepm/assignment/groupphase/util/JDBCConnectionManager.java

(limited to 'src/main/java')

diff --git a/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/util/JDBCConnectionManager.java b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/util/JDBCConnectionManager.java
new file mode 100644
index 0000000..5494471
--- /dev/null
+++ b/src/main/java/at/ac/tuwien/sepm/assignment/groupphase/util/JDBCConnectionManager.java
@@ -0,0 +1,45 @@
+package at.ac.tuwien.sepm.assignment.groupphase.util;
+
+import java.lang.invoke.MethodHandles;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Component;
+
+@Component
+public class JDBCConnectionManager {
+
+    private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+    private static final String CONNECTION_URL =
+            "jdbc:h2:~/sepm;INIT=RUNSCRIPT FROM 'classpath:sql/database.sql'";
+
+    private Connection connection;
+
+    public JDBCConnectionManager() {
+        try {
+            Class.forName("org.h2.Driver");
+        } catch (ClassNotFoundException e) {
+            LOG.error("Failed to load H2 JDBC driver '{}'", e.getMessage(), e);
+            throw new IllegalStateException(e);
+        }
+    }
+
+    public Connection getConnection() throws SQLException {
+        if (connection == null) connection = DriverManager.getConnection(CONNECTION_URL);
+
+        return connection;
+    }
+
+    public void closeConnection() {
+        if (connection == null) return;
+
+        try {
+            connection.close();
+        } catch (SQLException e) {
+            LOG.error("Failed to close connection '{}'", e.getMessage(), e);
+        }
+        connection = null;
+    }
+}
-- 
cgit v1.2.3-70-g09d2