From 87c483f3d497fc606b1ea4f625e634c87421b182 Mon Sep 17 00:00:00 2001
From: Martin Goik <goik@hdm-stuttgart.de>
Date: Tue, 24 Nov 2015 08:31:24 +0100
Subject: [PATCH] Centralized database init

---
 .../hdm_stuttgart/mi/persistence/DbProps.java |  2 +-
 .../mi/persistence/test/ConnectionTest.java   | 20 ++++++
 .../mi/persistence/test/DataInsertTest.java   | 49 +-------------
 .../mi/persistence/test/InitDatabase.java     | 66 +++++++++++++++++++
 .../mi/persistence/test}/database.properties  |  0
 5 files changed, 90 insertions(+), 47 deletions(-)
 create mode 100644 P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/InitDatabase.java
 rename P/Sda1/PersistenceHandler/Authenticate/src/{main/resources/de/hdm_stuttgart/mi => test/java/de/hdm_stuttgart/mi/persistence/test}/database.properties (100%)

diff --git a/P/Sda1/PersistenceHandler/Authenticate/src/main/java/de/hdm_stuttgart/mi/persistence/DbProps.java b/P/Sda1/PersistenceHandler/Authenticate/src/main/java/de/hdm_stuttgart/mi/persistence/DbProps.java
index fd4307500..32daa6f5e 100644
--- a/P/Sda1/PersistenceHandler/Authenticate/src/main/java/de/hdm_stuttgart/mi/persistence/DbProps.java
+++ b/P/Sda1/PersistenceHandler/Authenticate/src/main/java/de/hdm_stuttgart/mi/persistence/DbProps.java
@@ -8,7 +8,7 @@ import java.util.ResourceBundle;
  *
  */
 public class DbProps {
-   private static final String BUNDLE_NAME = "de.hdm_stuttgart.mi.database";
+   private static final String BUNDLE_NAME = "de.hdm_stuttgart.mi.persistence.test.database";
 
    private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
          .getBundle(BUNDLE_NAME);
diff --git a/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/ConnectionTest.java b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/ConnectionTest.java
index 069bf7ff4..e01314d9f 100644
--- a/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/ConnectionTest.java
+++ b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/ConnectionTest.java
@@ -1,6 +1,9 @@
 package de.hdm_stuttgart.mi.persistence.test;
 
+import java.sql.SQLException;
+
 import org.junit.Assert;
+import org.junit.BeforeClass;
 import org.junit.Test;
 
 import de.hdm_stuttgart.mi.persistence.PersistenceHandler;
@@ -14,6 +17,23 @@ public class ConnectionTest {
    final ViewMockup viewMockup = new ViewMockup();
 
    final PersistenceHandler ph = new PersistenceHandler(viewMockup);
+   
+   
+   
+   /**
+    * Initialize database
+    * 
+    */
+   @BeforeClass
+   static public void init() {
+      try {
+         InitDatabase.initDatabase();
+      } catch (SQLException e) {
+         Assert.fail("Unable to initialize database:" + e.getLocalizedMessage());
+         return;
+      }
+   }
+   
 
    /**
     * Opening and closing a connection
diff --git a/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/DataInsertTest.java b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/DataInsertTest.java
index 34e0259c6..b6caad4f2 100644
--- a/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/DataInsertTest.java
+++ b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/DataInsertTest.java
@@ -1,14 +1,10 @@
 package de.hdm_stuttgart.mi.persistence.test;
 
-import java.sql.Connection;
-import java.sql.DriverManager;
 import java.sql.SQLException;
-import java.sql.Statement;
 
 import org.junit.Assert;
 import org.junit.Test;
 
-import de.hdm_stuttgart.mi.persistence.DbProps;
 import de.hdm_stuttgart.mi.persistence.PersistenceHandler;
 
 /**
@@ -25,7 +21,7 @@ public class DataInsertTest {
    @Test ()
    public void addDatasets() {
       try {
-         initDatabase();
+         InitDatabase.initDatabase();
       } catch (SQLException e) {
          Assert.fail("Unable to initialize database:" + e.getLocalizedMessage());
          return;
@@ -41,7 +37,7 @@ public class DataInsertTest {
             viewMockup.error);
 
       try {
-         cleanDatabase();
+         InitDatabase.initDatabase();
       } catch (SQLException e) {
          System.err.println("Unable to clean database");
       }
@@ -50,44 +46,5 @@ public class DataInsertTest {
 
    }
 
-   private void initDatabase() throws SQLException {
-
-      try (
-            final Connection conn = DriverManager.getConnection(
-                  DbProps.getString("PersistenceHandler.jdbcUrl"),
-                  DbProps.getString("PersistenceHandler.username"),
-                  DbProps.getString("PersistenceHandler.password"));
-
-            final Statement stmt = conn.createStatement();
-            ) {
-         stmt.executeUpdate("DROP TABLE IF EXISTS Person");
-         stmt.executeUpdate("CREATE TABLE Person (\n" +
-               "name CHAR(20) NOT NULL," +
-               "email CHAR(20) NOT NULL UNIQUE," +
-               "login CHAR(20) PRIMARY KEY," +
-               "password TEXT" +
-               ");");
-
-         stmt.executeUpdate(
-               "INSERT INTO Person VALUES (\n" +
-                     "'Master admin',\n" +
-                     "'admin@company.com',\n" +
-                     "'admin',\n" +
-                     "'B5DllJLkC06vW7KwoTq/vLSWneEQirD3UQGVXNDEwIg=$ZzlQz/1l0yWV1vQokhDTI9j2vbFt5zFo/kXARI2wNlc='\n)"
-               );
-      }
-   }
-   private void cleanDatabase() throws SQLException {
-
-      try (
-            final Connection conn = DriverManager.getConnection(
-                  DbProps.getString("PersistenceHandler.jdbcUrl"),
-                  DbProps.getString("PersistenceHandler.username"),
-                  DbProps.getString("PersistenceHandler.password"));
-
-                  final Statement stmt = conn.createStatement();
-            ) {
-         stmt.executeUpdate("DELETE FROM Person");
-      }
-   }
+   
 }
diff --git a/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/InitDatabase.java b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/InitDatabase.java
new file mode 100644
index 000000000..0fca80cac
--- /dev/null
+++ b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/InitDatabase.java
@@ -0,0 +1,66 @@
+package de.hdm_stuttgart.mi.persistence.test;
+
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.SQLException;
+import java.sql.Statement;
+
+import de.hdm_stuttgart.mi.persistence.DbProps;
+
+/**
+ * Create database schema or erase entry records
+ */
+public class InitDatabase {
+
+   /**
+    * Erase if required and re-create application related tables.
+    * 
+    * @throws SQLException
+    */
+   static public void initDatabase() throws SQLException {
+
+      try (
+            final Connection conn = DriverManager.getConnection(
+                  DbProps.getString("PersistenceHandler.jdbcUrl"),
+                  DbProps.getString("PersistenceHandler.username"),
+                  DbProps.getString("PersistenceHandler.password"));
+
+            final Statement stmt = conn.createStatement();
+            ) {
+         stmt.executeUpdate("DROP TABLE IF EXISTS Person");
+         stmt.executeUpdate("CREATE TABLE Person (\n" +
+               "name CHAR(20) NOT NULL," +
+               "email CHAR(20) NOT NULL UNIQUE," +
+               "login CHAR(20) PRIMARY KEY," +
+               "password TEXT" +
+               ");");
+
+         stmt.executeUpdate(
+               "INSERT INTO Person VALUES (\n" +
+                     "'Master admin',\n" +
+                     "'admin@company.com',\n" +
+                     "'admin',\n" +
+                     "'B5DllJLkC06vW7KwoTq/vLSWneEQirD3UQGVXNDEwIg=$ZzlQz/1l0yWV1vQokhDTI9j2vbFt5zFo/kXARI2wNlc='\n)"
+               );
+      }
+   }
+   
+   /**
+    * Erase existing records.
+    * 
+    * @throws SQLException
+    */
+   static public void cleanDatabase() throws SQLException {
+
+      try (
+            final Connection conn = DriverManager.getConnection(
+                  DbProps.getString("PersistenceHandler.jdbcUrl"),
+                  DbProps.getString("PersistenceHandler.username"),
+                  DbProps.getString("PersistenceHandler.password"));
+
+                  final Statement stmt = conn.createStatement();
+            ) {
+         stmt.executeUpdate("DELETE FROM Person");
+      }
+   }
+}
diff --git a/P/Sda1/PersistenceHandler/Authenticate/src/main/resources/de/hdm_stuttgart/mi/database.properties b/P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/database.properties
similarity index 100%
rename from P/Sda1/PersistenceHandler/Authenticate/src/main/resources/de/hdm_stuttgart/mi/database.properties
rename to P/Sda1/PersistenceHandler/Authenticate/src/test/java/de/hdm_stuttgart/mi/persistence/test/database.properties
-- 
GitLab