diff --git a/.gitignore b/.gitignore index ae91f72929d3edca467a68702753e6a8bdcebe87..a3f7c058fb3c7b891c9a28efde06d27ac96daa75 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,6 @@ bin/ target/ certs/ +*.db + build/[0-9]*.[0-9]*.[0-9]* \ No newline at end of file diff --git a/BudgetMasterServer/pom.xml b/BudgetMasterServer/pom.xml index d6804dc29c70e0dd5bfaa9a7ada52eb63ff2dfc5..b3a9bffdae599cd06b11cba02255e73b622bf952 100644 --- a/BudgetMasterServer/pom.xml +++ b/BudgetMasterServer/pom.xml @@ -40,7 +40,7 @@ </goals> </execution> </executions> - </plugin> + </plugin> </plugins> </build> @@ -73,7 +73,7 @@ <dependency> <groupId>de.deadlocker8</groupId> <artifactId>tools</artifactId> - <version>1.0.0</version> + <version>1.0.0</version> </dependency> <dependency> <groupId>de.deadlocker8</groupId> @@ -86,5 +86,10 @@ <version>4.12</version> <scope>test</scope> </dependency> + <dependency> + <groupId>org.xerial</groupId> + <artifactId>sqlite-jdbc</artifactId> + <version>3.21.0</version> + </dependency> </dependencies> </project> \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java index 821531725dcb7c8f81ddbd9061dd996d052f135e..fe2227c3fe6bd06b27b41d149dd45cee50d04ffc 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Settings.java @@ -2,6 +2,7 @@ package de.deadlocker8.budgetmasterserver.logic; public class Settings { + private String databaseType; private String databaseUrl; private String databaseName; private String databaseUsername; @@ -16,6 +17,16 @@ public class Settings } + public String getDatabaseType() + { + return databaseType; + } + + public void setDatabaseType(String databaseType) + { + this.databaseType = databaseType; + } + public String getDatabaseUrl() { return databaseUrl; @@ -99,8 +110,25 @@ public class Settings @Override public String toString() { - return "Settings [databaseUrl=" + databaseUrl + ", databaseName=" + databaseName + ", databaseUsername=" + databaseUsername + ", databasePassword=" + databasePassword + ", serverPort=" + serverPort + ", serverSecret=" + serverSecret + ", keystorePath=" + keystorePath + ", keystorePassword=" - + keystorePassword + "]"; + return "Settings [databaseType=" + databaseType + ", databaseUrl=" + databaseUrl + ", databaseName=" + databaseName + ", databaseUsername=" + databaseUsername + ", databasePassword=" + databasePassword + ", serverPort=" + serverPort + ", serverSecret=" + serverSecret + ", keystorePath=" + + keystorePath + ", keystorePassword=" + keystorePassword + "]"; + } + + @Override + public int hashCode() + { + final int prime = 31; + int result = 1; + result = prime * result + ((databaseName == null) ? 0 : databaseName.hashCode()); + result = prime * result + ((databasePassword == null) ? 0 : databasePassword.hashCode()); + result = prime * result + ((databaseType == null) ? 0 : databaseType.hashCode()); + result = prime * result + ((databaseUrl == null) ? 0 : databaseUrl.hashCode()); + result = prime * result + ((databaseUsername == null) ? 0 : databaseUsername.hashCode()); + result = prime * result + ((keystorePassword == null) ? 0 : keystorePassword.hashCode()); + result = prime * result + ((keystorePath == null) ? 0 : keystorePath.hashCode()); + result = prime * result + serverPort; + result = prime * result + ((serverSecret == null) ? 0 : serverSecret.hashCode()); + return result; } @Override @@ -127,6 +155,13 @@ public class Settings } else if(!databasePassword.equals(other.databasePassword)) return false; + if(databaseType == null) + { + if(other.databaseType != null) + return false; + } + else if(!databaseType.equals(other.databaseType)) + return false; if(databaseUrl == null) { if(other.databaseUrl != null) diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java index 265ab169df0cec23bb18cc16c6ebd9e87a9fa639..3b8f6ac01a3e19cc8f6f03811297613f1af1c6d4 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/Utils.java @@ -1,11 +1,26 @@ package de.deadlocker8.budgetmasterserver.logic; import java.io.IOException; +import java.io.Writer; import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Paths; +import java.sql.Connection; +import java.sql.DriverManager; +import java.sql.SQLException; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.creator.MysqlDatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.creator.SqliteDatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.MysqlDatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.SqliteDatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.MysqlDatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.SqliteDatabaseTagHandler; public class Utils { @@ -20,4 +35,61 @@ public class Utils settings = gson.fromJson(settingsJSON, Settings.class); return settings; } + + public static void saveSettings(Settings settings) throws IOException, URISyntaxException + { + Gson gson = new GsonBuilder().setPrettyPrinting().create(); + String jsonString = gson.toJson(settings); + Writer writer = Files.newBufferedWriter(Paths.get(Settings.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getParent().resolve("settings.json")); + writer.write(jsonString); + writer.close(); + } + + public static Connection getDatabaseConnection(Settings settings) throws SQLException + { + if(settings.getDatabaseType().equals("mysql")) + { + return DriverManager.getConnection("jdbc:mysql://" + settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); + } + else + { + return DriverManager.getConnection("jdbc:sqlite://" + settings.getDatabaseUrl()); + } + } + + public static DatabaseCreator getDatabaseCreator(Connection connection, Settings settings) + { + if(settings.getDatabaseType().equals("mysql")) + { + return new MysqlDatabaseCreator(connection, settings); + } + else + { + return new SqliteDatabaseCreator(connection, settings); + } + } + + public static DatabaseHandler getDatabaseHandler(Settings settings) + { + if(settings.getDatabaseType().equals("mysql")) + { + return new MysqlDatabaseHandler(settings); + } + else + { + return new SqliteDatabaseHandler(settings); + } + } + + public static DatabaseTagHandler getDatabaseTagHandler(Settings settings) + { + if(settings.getDatabaseType().equals("mysql")) + { + return new MysqlDatabaseTagHandler(settings); + } + else + { + return new SqliteDatabaseTagHandler(settings); + } + } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java index 2213d91003b903824193d41803d4afa0f96daf6e..fb0dc3277e444078ec989a9d48910f2c60273a55 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseExporter.java @@ -1,7 +1,6 @@ package de.deadlocker8.budgetmasterserver.logic.database; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -15,6 +14,7 @@ import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmaster.logic.tag.TagMatch; import de.deadlocker8.budgetmasterserver.logic.Settings; +import de.deadlocker8.budgetmasterserver.logic.Utils; import logger.Logger; public class DatabaseExporter @@ -25,7 +25,7 @@ public class DatabaseExporter { try { - this.connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin", settings.getDatabaseUsername(), settings.getDatabasePassword()); + this.connection = Utils.getDatabaseConnection(settings); } catch(Exception e) { @@ -200,7 +200,6 @@ public class DatabaseExporter int tagID = rs.getInt("Tag_ID"); int paymentID = rs.getInt("Payment_ID"); int repeatingPaymentID = rs.getInt("RepeatingPayment_ID"); - results.add(new TagMatch(tagID, paymentID, repeatingPaymentID)); } } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java index 3070bf67b655552cb6d552d0c3824ce12808b2c0..091440c113937302906d18ecb2144da6c15f8cf7 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseImporter.java @@ -9,6 +9,8 @@ import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmaster.logic.tag.TagMatch; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; public class DatabaseImporter { @@ -96,7 +98,7 @@ public class DatabaseImporter updateTagMatchesByTagID(tagID, existingTag.getID()); } } - + tagMatches.addAll(changedTagMatches); importTagMatches(tagMatches); } @@ -117,7 +119,7 @@ public class DatabaseImporter * call 2 = replace ID 3 with 4 * --> would replace category IDs in payments where category ID has already been replaced * --> would lead to wrong import - * --> remove payment from list but add to "changedPayments" in order not to loose the payment completly + * --> remove payment from list but add to "changedPayments" in order not to loose the payment completely * --> remaining payments in list and all payments from "changedPayments" will be merged after all categories are imported */ changedNormalPayments.add(currentPayment); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java new file mode 100644 index 0000000000000000000000000000000000000000..2fef700c27eb32a763cc2c21fe02a9cbb43b501e --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java @@ -0,0 +1,73 @@ +package de.deadlocker8.budgetmasterserver.logic.database.creator; + +import java.sql.Connection; +import java.util.ArrayList; + +import de.deadlocker8.budgetmasterserver.logic.Settings; +import logger.Logger; + +public abstract class DatabaseCreator +{ + Connection connection; + Settings settings; + + public DatabaseCreator(Connection connection, Settings settings) + { + this.connection = connection; + this.settings = settings; + } + + public void createTables() + { + Logger.info("Checking tables..."); + createTables(getExistingTables()); + Logger.info("Checking tables [DONE]"); + } + + public abstract ArrayList<String> getExistingTables(); + + private void createTables(ArrayList<String> existingTables) + { + if(!existingTables.contains("category")) + { + createTableCategory(); + } + + if(!existingTables.contains("payment")) + { + createTablePayment(); + } + + if(!existingTables.contains("repeating_payment")) + { + createTableRepeatingPayment(); + } + + if(!existingTables.contains("repeating_entry")) + { + createTableRepeatingEntry(); + } + + if(!existingTables.contains("tag")) + { + createTableTag(); + } + + if(!existingTables.contains("tag_match")) + { + createTableTagMatch(); + } + } + + public abstract void createTableCategory(); + + public abstract void createTablePayment(); + + public abstract void createTableRepeatingEntry(); + + public abstract void createTableRepeatingPayment(); + + public abstract void createTableTag(); + + public abstract void createTableTagMatch(); +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseCreator.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/MysqlDatabaseCreator.java similarity index 84% rename from BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseCreator.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/MysqlDatabaseCreator.java index 81350a988fbacb3bf8bd2742fc3f5b77cb6889c9..7c73373c7df95cf01e5c68955f9d843e85ff33ae 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseCreator.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/MysqlDatabaseCreator.java @@ -1,4 +1,4 @@ -package de.deadlocker8.budgetmasterserver.logic.database; +package de.deadlocker8.budgetmasterserver.logic.database.creator; import java.sql.Connection; import java.sql.DatabaseMetaData; @@ -10,21 +10,15 @@ import java.util.ArrayList; import de.deadlocker8.budgetmasterserver.logic.Settings; import logger.Logger; -public class DatabaseCreator +public class MysqlDatabaseCreator extends DatabaseCreator { - private Connection connection; - private Settings settings; - - public DatabaseCreator(Connection connection, Settings settings) + public MysqlDatabaseCreator(Connection connection, Settings settings) { - this.connection = connection; - this.settings = settings; - Logger.info("Checking tables..."); - createTables(getExistingTables()); - Logger.info("Checking tables [DONE]"); + super(connection, settings); } - private ArrayList<String> getExistingTables() + @Override + public ArrayList<String> getExistingTables() { ArrayList<String> tables = new ArrayList<>(); try @@ -41,42 +35,10 @@ public class DatabaseCreator Logger.error(e); } return tables; - } - - private void createTables(ArrayList<String> existingTables) - { - if(!existingTables.contains("category")) - { - createTableCategory(); - } - - if(!existingTables.contains("payment")) - { - createTablePayment(); - } - - if(!existingTables.contains("repeating_payment")) - { - createTableRepeatingPayment(); - } - - if(!existingTables.contains("repeating_entry")) - { - createTableRepeatingEntry(); - } - - if(!existingTables.contains("tag")) - { - createTableTag(); - } - - if(!existingTables.contains("tag_match")) - { - createTableTagMatch(); - } - } + } - private void createTableCategory() + @Override + public void createTableCategory() { Statement stmt = null; String query = "CREATE TABLE `category` (`ID` int(11) NOT NULL COMMENT 'ID'," + @@ -115,7 +77,8 @@ public class DatabaseCreator } } - private void createTablePayment() + @Override + public void createTablePayment() { Statement stmt = null; String query = "CREATE TABLE `payment` (" + @@ -156,7 +119,8 @@ public class DatabaseCreator } } - private void createTableRepeatingEntry() + @Override + public void createTableRepeatingEntry() { Statement stmt = null; String query = "CREATE TABLE `repeating_entry` (" + @@ -196,7 +160,8 @@ public class DatabaseCreator } } - private void createTableRepeatingPayment() + @Override + public void createTableRepeatingPayment() { Statement stmt = null; String query = "CREATE TABLE `repeating_payment` (" + @@ -240,7 +205,8 @@ public class DatabaseCreator } } - private void createTableTag() + @Override + public void createTableTag() { Statement stmt = null; String query = "CREATE TABLE `tag` (`ID` int(11) NOT NULL COMMENT 'ID'," + @@ -276,7 +242,8 @@ public class DatabaseCreator } } - private void createTableTagMatch() + @Override + public void createTableTagMatch() { Statement stmt = null; String query = "CREATE TABLE `tag_match` (`Tag_ID` int(11) NOT NULL," + diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java new file mode 100644 index 0000000000000000000000000000000000000000..0e869e60c48b7fe9db3663fdbaa008acb4c1de1d --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java @@ -0,0 +1,248 @@ +package de.deadlocker8.budgetmasterserver.logic.database.creator; + +import java.sql.Connection; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +import de.deadlocker8.budgetmasterserver.logic.Settings; +import logger.Logger; + +public class SqliteDatabaseCreator extends DatabaseCreator +{ + public SqliteDatabaseCreator(Connection connection, Settings settings) + { + super(connection, settings); + } + + @Override + public ArrayList<String> getExistingTables() + { + ArrayList<String> tables = new ArrayList<>(); + try + { + DatabaseMetaData meta = connection.getMetaData(); + ResultSet res = meta.getTables(settings.getDatabaseName(), null, "", new String[] { "TABLE" }); + while(res.next()) + { + tables.add(res.getString("TABLE_NAME")); + } + } + catch(Exception e) + { + Logger.error(e); + } + return tables; + } + + @Override + public void createTableCategory() + { + Statement stmt = null; + String query = "CREATE TABLE `category` (`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `Name` TEXT DEFAULT NULL, `Color` TEXT NOT NULL);"; + String query2 = "INSERT INTO `category` (`ID`, `Name`, `Color`) VALUES(1, 'NONE', '#FFFFFF'),(2, 'Übertrag', '#FFFF00');"; + + try + { + stmt = connection.createStatement(); + stmt.execute(query); + stmt.execute(query2); + Logger.info("Successfully created table category"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + if(stmt != null) + { + try + { + stmt.close(); + } + catch(SQLException e) + { + } + } + } + } + + @Override + public void createTablePayment() + { + Statement stmt = null; + String query = "CREATE TABLE `payment` (" + + "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + + "`Name` TEXT DEFAULT NULL," + + "`CategoryID` INTEGER DEFAULT NULL," + + "`Amount` INTEGER DEFAULT NULL," + + "`Date` TEXT DEFAULT NULL," + + "`Description` TEXT DEFAULT NULL);"; + + try + { + stmt = connection.createStatement(); + stmt.execute(query); + Logger.info("Successfully created table payment"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + if(stmt != null) + { + try + { + stmt.close(); + } + catch(SQLException e) + { + } + } + } + } + + @Override + public void createTableRepeatingEntry() + { + Statement stmt = null; + String query = "CREATE TABLE `repeating_entry` (" + + "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT," + + "`RepeatingPaymentID` INTEGER NOT NULL," + + "`Date` TEXT NOT NULL," + + "FOREIGN KEY (RepeatingPaymentID) REFERENCES repeating_payment(ID) ON DELETE CASCADE ON UPDATE CASCADE);"; + + try + { + stmt = connection.createStatement(); + stmt.execute(query); + Logger.info("Successfully created table repeating_entry"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + if(stmt != null) + { + try + { + stmt.close(); + } + catch(SQLException e) + { + } + } + } + } + + @Override + public void createTableRepeatingPayment() + { + Statement stmt = null; + String query = "CREATE TABLE `repeating_payment` (\r\n" + + "`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\r\n" + + "`Name` TEXT DEFAULT NULL,\r\n" + + "`CategoryID` INTEGER DEFAULT NULL,\r\n" + + "`Amount` INTEGER DEFAULT NULL,\r\n" + + "`Date` TEXT DEFAULT NULL,\r\n" + + "`Description` TEXT DEFAULT NULL,\r\n" + + "`RepeatInterval` INTEGER DEFAULT NULL,\r\n" + + "`RepeatEndDate` TEXT DEFAULT NULL,\r\n" + + "`RepeatMonthDay` INTEGER DEFAULT NULL);"; + + try + { + stmt = connection.createStatement(); + stmt.execute(query); + Logger.info("Successfully created table repeating_payment"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + if(stmt != null) + { + try + { + stmt.close(); + } + catch(SQLException e) + { + } + } + } + } + + @Override + public void createTableTag() + { + Statement stmt = null; + String query = "CREATE TABLE `tag` (`ID` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, `Name` TEXT NOT NULL);"; + + try + { + stmt = connection.createStatement(); + stmt.execute(query); + Logger.info("Successfully created table tag"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + if(stmt != null) + { + try + { + stmt.close(); + } + catch(SQLException e) + { + } + } + } + } + + @Override + public void createTableTagMatch() + { + Statement stmt = null; + String query = "CREATE TABLE `tag_match` (`Tag_ID` INTEGER NOT NULL," + + "`Payment_ID` INTEGER NOT NULL," + + "`RepeatingPayment_ID` INTEGER NOT NULL);"; + + try + { + stmt = connection.createStatement(); + stmt.execute(query); + Logger.info("Successfully created table tag_match"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + if(stmt != null) + { + try + { + stmt.close(); + } + catch(SQLException e) + { + } + } + } + } +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/DatabaseHandler.java similarity index 70% rename from BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/DatabaseHandler.java index 5f471c46008c5da65f360f845d88778c9c376194..d211841f2be15da2fe5a7391995fa01df568e8d3 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/DatabaseHandler.java @@ -1,7 +1,6 @@ -package de.deadlocker8.budgetmasterserver.logic.database; +package de.deadlocker8.budgetmasterserver.logic.database.handler; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -19,18 +18,18 @@ import de.deadlocker8.budgetmaster.logic.payment.Payment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; import de.deadlocker8.budgetmasterserver.logic.Settings; +import de.deadlocker8.budgetmasterserver.logic.Utils; import logger.Logger; -public class DatabaseHandler +public abstract class DatabaseHandler { - private Connection connection; - private Settings settings; - private final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); + Connection connection; + Settings settings; + final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); public DatabaseHandler(Settings settings) throws IllegalStateException { this.settings = settings; - connect(); } public void connect() @@ -39,7 +38,7 @@ public class DatabaseHandler { if(connection == null || connection.isClosed()) { - connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); + connection = Utils.getDatabaseConnection(settings); } } catch(Exception e) @@ -61,7 +60,7 @@ public class DatabaseHandler } } - private void closeStatement(Statement statement) + void closeStatement(Statement statement) { if(statement != null) { @@ -78,33 +77,8 @@ public class DatabaseHandler /* * GET */ - public int getLastInsertID() - { - PreparedStatement stmt = null; - int lastInsertID = 0; - try - { - stmt = connection.prepareStatement("SELECT LAST_INSERT_ID();"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - lastInsertID = rs.getInt("LAST_INSERT_ID()"); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return lastInsertID; - } - + public abstract int getLastInsertID(); + public DateTime getFirstNormalPaymentDate() { PreparedStatement stmt = null; @@ -430,161 +404,13 @@ public class DatabaseHandler return results; } - public ArrayList<NormalPayment> getPayments(int year, int month) - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE YEAR(Date) = ? AND MONTH(Date) = ?;"); - stmt.setInt(1, year); - stmt.setInt(2, month); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } + public abstract ArrayList<NormalPayment> getPayments(int year, int month); - public ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate) - { - PreparedStatement stmt = null; - - ArrayList<NormalPayment> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT * FROM payment WHERE DATE(Date) BETWEEN ? AND ?;"); - stmt.setString(1, startDate); - stmt.setString(2, endDate); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - String name = rs.getString("Name"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - String description = rs.getString("Description"); - - results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } - - public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month) - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND YEAR(repeating_entry.Date) = ? AND MONTH(repeating_entry.Date) = ?;"); - stmt.setInt(1, year); - stmt.setInt(2, month); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } + public abstract ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate); - public ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate) - { - PreparedStatement stmt = null; - - ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); - try - { - stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND DATE(repeating_entry.Date) BETWEEN ? AND ?;"); - stmt.setString(1, startDate); - stmt.setString(2, endDate); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - int resultID = rs.getInt("ID"); - int repeatingPaymentID = rs.getInt("repeatingPaymentID"); - String name = rs.getString("Name"); - String description = rs.getString("Description"); - int amount = rs.getInt("amount"); - String date = rs.getString("Date"); - int categoryID = rs.getInt("CategoryID"); - int repeatInterval = rs.getInt("RepeatInterval"); - String repeatEndDate = rs.getString("RepeatEndDate"); - int repeatMonthDay = rs.getInt("RepeatMonthDay"); - - results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay)); - } - rs.close(); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return results; - } + public abstract ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month); + + public abstract ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate); public ArrayList<RepeatingPayment> getAllRepeatingPayments() { @@ -807,42 +633,7 @@ public class DatabaseHandler } } - public void deleteDatabase() - { - Statement stmt = null; - String tableCategory = "DROP TABLE IF EXISTS category;"; - String tablePayment = "DROP TABLE IF EXISTS payment;"; - String tableRepeatingPayment = "DROP TABLE IF EXISTS repeating_payment;"; - String tableRepeatingEntry = "DROP TABLE IF EXISTS repeating_entry;"; - String tableTag = "DROP TABLE IF EXISTS tag;"; - String tableTagMatch = "DROP TABLE IF EXISTS tag_match;"; - try - { - stmt = connection.createStatement(); - stmt.execute("SET FOREIGN_KEY_CHECKS = 0;"); - stmt.execute(tableCategory); - Logger.info("Deleted table: category"); - stmt.execute(tablePayment); - Logger.info("Deleted table: payment"); - stmt.execute(tableRepeatingPayment); - Logger.info("Deleted table: repeating_payment"); - stmt.execute(tableRepeatingEntry); - Logger.info("Deleted table: repeating_entry"); - stmt.execute(tableTag); - Logger.info("Deleted table: tag"); - stmt.execute(tableTagMatch); - Logger.info("Deleted table: tag_match"); - stmt.execute("SET FOREIGN_KEY_CHECKS = 1;"); - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - } + public abstract void deleteDatabase(); /* * ADD diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..b2c8e92b994416230be328b23fa86e561bd684c2 --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java @@ -0,0 +1,247 @@ +package de.deadlocker8.budgetmasterserver.logic.database.handler; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; +import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; +import de.deadlocker8.budgetmasterserver.logic.Settings; +import logger.Logger; + +public class MysqlDatabaseHandler extends DatabaseHandler +{ + public MysqlDatabaseHandler(Settings settings) throws IllegalStateException + { + super(settings); + connect(); + } + + @Override + public int getLastInsertID() + { + PreparedStatement stmt = null; + int lastInsertID = 0; + try + { + stmt = connection.prepareStatement("SELECT LAST_INSERT_ID();"); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + lastInsertID = rs.getInt("LAST_INSERT_ID()"); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return lastInsertID; + } + + @Override + public ArrayList<NormalPayment> getPayments(int year, int month) + { + PreparedStatement stmt = null; + + ArrayList<NormalPayment> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT * FROM payment WHERE YEAR(Date) = ? AND MONTH(Date) = ?;"); + stmt.setInt(1, year); + stmt.setInt(2, month); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + String name = rs.getString("Name"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + String description = rs.getString("Description"); + + results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month) + { + PreparedStatement stmt = null; + + ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND YEAR(repeating_entry.Date) = ? AND MONTH(repeating_entry.Date) = ?;"); + stmt.setInt(1, year); + stmt.setInt(2, month); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + int repeatingPaymentID = rs.getInt("repeatingPaymentID"); + String name = rs.getString("Name"); + String description = rs.getString("Description"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + int repeatInterval = rs.getInt("RepeatInterval"); + String repeatEndDate = rs.getString("RepeatEndDate"); + int repeatMonthDay = rs.getInt("RepeatMonthDay"); + + results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate) + { + PreparedStatement stmt = null; + + ArrayList<NormalPayment> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT * FROM payment WHERE DATE(Date) BETWEEN ? AND ?;"); + stmt.setString(1, startDate); + stmt.setString(2, endDate); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + String name = rs.getString("Name"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + String description = rs.getString("Description"); + + results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate) + { + PreparedStatement stmt = null; + + ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND DATE(repeating_entry.Date) BETWEEN ? AND ?;"); + stmt.setString(1, startDate); + stmt.setString(2, endDate); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + int repeatingPaymentID = rs.getInt("repeatingPaymentID"); + String name = rs.getString("Name"); + String description = rs.getString("Description"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + int repeatInterval = rs.getInt("RepeatInterval"); + String repeatEndDate = rs.getString("RepeatEndDate"); + int repeatMonthDay = rs.getInt("RepeatMonthDay"); + + results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public void deleteDatabase() + { + Statement stmt = null; + String tableCategory = "DROP TABLE IF EXISTS category;"; + String tablePayment = "DROP TABLE IF EXISTS payment;"; + String tableRepeatingPayment = "DROP TABLE IF EXISTS repeating_payment;"; + String tableRepeatingEntry = "DROP TABLE IF EXISTS repeating_entry;"; + String tableTag = "DROP TABLE IF EXISTS tag;"; + String tableTagMatch = "DROP TABLE IF EXISTS tag_match;"; + try + { + stmt = connection.createStatement(); + stmt.execute("SET FOREIGN_KEY_CHECKS = 0;"); + stmt.execute(tableCategory); + Logger.info("Deleted table: category"); + stmt.execute(tablePayment); + Logger.info("Deleted table: payment"); + stmt.execute(tableRepeatingPayment); + Logger.info("Deleted table: repeating_payment"); + stmt.execute(tableRepeatingEntry); + Logger.info("Deleted table: repeating_entry"); + stmt.execute(tableTag); + Logger.info("Deleted table: tag"); + stmt.execute(tableTagMatch); + Logger.info("Deleted table: tag_match"); + stmt.execute("SET FOREIGN_KEY_CHECKS = 1;"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + } +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..139b20dff3bcc44e08da074c40301cef425c1a93 --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java @@ -0,0 +1,245 @@ +package de.deadlocker8.budgetmasterserver.logic.database.handler; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; + +import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; +import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; +import de.deadlocker8.budgetmasterserver.logic.Settings; +import logger.Logger; + +public class SqliteDatabaseHandler extends DatabaseHandler +{ + public SqliteDatabaseHandler(Settings settings) throws IllegalStateException + { + super(settings); + connect(); + } + + @Override + public int getLastInsertID() + { + PreparedStatement stmt = null; + int lastInsertID = 0; + try + { + stmt = connection.prepareStatement("SELECT last_insert_rowid() as `ID`"); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + lastInsertID = rs.getInt("ID"); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return lastInsertID; + } + + @Override + public ArrayList<NormalPayment> getPayments(int year, int month) + { + PreparedStatement stmt = null; + + ArrayList<NormalPayment> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT * FROM payment WHERE strftime('%Y', Date) = ? AND strftime('%m', Date) = ?;"); + stmt.setString(1, String.format("%02d", year)); + stmt.setString(2, String.format("%02d", month)); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + String name = rs.getString("Name"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + String description = rs.getString("Description"); + + results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public ArrayList<RepeatingPaymentEntry> getRepeatingPayments(int year, int month) + { + PreparedStatement stmt = null; + + ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND strftime('%Y', repeating_entry.Date) = ? AND strftime('%m', repeating_entry.Date) = ?;"); + stmt.setString(1, String.format("%02d", year)); + stmt.setString(2, String.format("%02d", month)); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + int repeatingPaymentID = rs.getInt("repeatingPaymentID"); + String name = rs.getString("Name"); + String description = rs.getString("Description"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + int repeatInterval = rs.getInt("RepeatInterval"); + String repeatEndDate = rs.getString("RepeatEndDate"); + int repeatMonthDay = rs.getInt("RepeatMonthDay"); + + results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public ArrayList<NormalPayment> getPaymentsBetween(String startDate, String endDate) + { + PreparedStatement stmt = null; + + ArrayList<NormalPayment> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT * FROM payment WHERE Date BETWEEN ? AND ?;"); + stmt.setString(1, startDate); + stmt.setString(2, endDate); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + String name = rs.getString("Name"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + String description = rs.getString("Description"); + + results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public ArrayList<RepeatingPaymentEntry> getRepeatingPaymentsBetween(String startDate, String endDate) + { + PreparedStatement stmt = null; + + ArrayList<RepeatingPaymentEntry> results = new ArrayList<>(); + try + { + stmt = connection.prepareStatement("SELECT repeating_entry.ID, repeating_entry.RepeatingPaymentID, repeating_entry.Date, repeating_payment.Name, repeating_payment.CategoryID, repeating_payment.Amount, repeating_payment.RepeatInterval, repeating_payment.RepeatEndDate, repeating_payment.RepeatMonthDay, repeating_payment.Description FROM repeating_entry, repeating_payment WHERE repeating_entry.RepeatingPaymentID = repeating_payment.ID AND repeating_entry.Date BETWEEN ? AND ?;"); + stmt.setString(1, startDate); + stmt.setString(2, endDate); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + int resultID = rs.getInt("ID"); + int repeatingPaymentID = rs.getInt("repeatingPaymentID"); + String name = rs.getString("Name"); + String description = rs.getString("Description"); + int amount = rs.getInt("amount"); + String date = rs.getString("Date"); + int categoryID = rs.getInt("CategoryID"); + int repeatInterval = rs.getInt("RepeatInterval"); + String repeatEndDate = rs.getString("RepeatEndDate"); + int repeatMonthDay = rs.getInt("RepeatMonthDay"); + + results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay)); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return results; + } + + @Override + public void deleteDatabase() + { + Statement stmt = null; + String tableCategory = "DROP TABLE IF EXISTS category;"; + String tablePayment = "DROP TABLE IF EXISTS payment;"; + String tableRepeatingPayment = "DROP TABLE IF EXISTS repeating_payment;"; + String tableRepeatingEntry = "DROP TABLE IF EXISTS repeating_entry;"; + String tableTag = "DROP TABLE IF EXISTS tag;"; + String tableTagMatch = "DROP TABLE IF EXISTS tag_match;"; + try + { + stmt = connection.createStatement(); + stmt.execute(tableCategory); + Logger.info("Deleted table: category"); + stmt.execute(tablePayment); + Logger.info("Deleted table: payment"); + stmt.execute(tableRepeatingPayment); + Logger.info("Deleted table: repeating_payment"); + stmt.execute(tableRepeatingEntry); + Logger.info("Deleted table: repeating_entry"); + stmt.execute(tableTag); + Logger.info("Deleted table: tag"); + stmt.execute(tableTagMatch); + Logger.info("Deleted table: tag_match"); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + } +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/DatabaseTagHandler.java similarity index 89% rename from BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java rename to BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/DatabaseTagHandler.java index 2a0844fcbed652a541c1c49857556cd25189e4d3..4b65d91329fc409ebcdd4835c63209bda5bba1a0 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/DatabaseTagHandler.java @@ -1,7 +1,6 @@ -package de.deadlocker8.budgetmasterserver.logic.database; +package de.deadlocker8.budgetmasterserver.logic.database.taghandler; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -10,17 +9,17 @@ import java.util.ArrayList; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.Settings; +import de.deadlocker8.budgetmasterserver.logic.Utils; import logger.Logger; -public class DatabaseTagHandler +public abstract class DatabaseTagHandler { - private Connection connection; - private Settings settings; + Connection connection; + Settings settings; public DatabaseTagHandler(Settings settings) throws IllegalStateException { this.settings = settings; - connect(); } public void connect() @@ -29,7 +28,7 @@ public class DatabaseTagHandler { if(connection == null || connection.isClosed()) { - this.connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); + this.connection = Utils.getDatabaseConnection(settings); } } catch(Exception e) @@ -51,7 +50,7 @@ public class DatabaseTagHandler } } - private void closeStatement(Statement statement) + void closeStatement(Statement statement) { if(statement != null) { @@ -65,31 +64,7 @@ public class DatabaseTagHandler } } - public int getLastInsertID() - { - PreparedStatement stmt = null; - int lastInsertID = 0; - try - { - stmt = connection.prepareStatement("SELECT LAST_INSERT_ID();"); - ResultSet rs = stmt.executeQuery(); - - while(rs.next()) - { - lastInsertID = rs.getInt("LAST_INSERT_ID()"); - } - } - catch(SQLException e) - { - Logger.error(e); - } - finally - { - closeStatement(stmt); - } - - return lastInsertID; - } + public abstract int getLastInsertID(); public ArrayList<Tag> getAllTags() { diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..70b319a02a894763d907bfac904ce61563688c64 --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java @@ -0,0 +1,45 @@ +package de.deadlocker8.budgetmasterserver.logic.database.taghandler; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import de.deadlocker8.budgetmasterserver.logic.Settings; +import logger.Logger; + +public class MysqlDatabaseTagHandler extends DatabaseTagHandler +{ + public MysqlDatabaseTagHandler(Settings settings) throws IllegalStateException + { + super(settings); + connect(); + } + + @Override + public int getLastInsertID() + { + PreparedStatement stmt = null; + int lastInsertID = 0; + try + { + stmt = connection.prepareStatement("SELECT LAST_INSERT_ID();"); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + lastInsertID = rs.getInt("LAST_INSERT_ID()"); + } + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return lastInsertID; + } + +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java new file mode 100644 index 0000000000000000000000000000000000000000..d3e3fcba629a9d10f84e03bc75388457fe4459a8 --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java @@ -0,0 +1,46 @@ +package de.deadlocker8.budgetmasterserver.logic.database.taghandler; + +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +import de.deadlocker8.budgetmasterserver.logic.Settings; +import logger.Logger; + +public class SqliteDatabaseTagHandler extends DatabaseTagHandler +{ + public SqliteDatabaseTagHandler(Settings settings) throws IllegalStateException + { + super(settings); + connect(); + } + + @Override + public int getLastInsertID() + { + PreparedStatement stmt = null; + int lastInsertID = 0; + try + { + stmt = connection.prepareStatement("SELECT last_insert_rowid() as `ID`"); + ResultSet rs = stmt.executeQuery(); + + while(rs.next()) + { + lastInsertID = rs.getInt("ID"); + } + rs.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + finally + { + closeStatement(stmt); + } + + return lastInsertID; + } + +} \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java index eb3a19f902e893737a2313c3b84d29a3d87e0731..6083c46fefc9700a5de59b90022c9667cc755012 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/main/Main.java @@ -46,6 +46,7 @@ public class Main if(!Files.exists(settingsPath)) { + Logger.warning("No settings file found! Creating default settings file..."); try { Files.copy(SparkServer.class.getClassLoader().getResourceAsStream("de/deadlocker8/budgetmasterserver/settings.json"), settingsPath); @@ -60,6 +61,39 @@ public class Main try { settings = Utils.loadSettings(); + boolean settingsChanged = false; + if(settings.getDatabaseType() == null) + { + settings.setDatabaseType("mysql"); + settingsChanged = true; + } + + if(!settings.getDatabaseType().equals("mysql") && !settings.getDatabaseType().equals("sqlite")) + { + Logger.error(settings.getDatabaseType() + " is no valid database type! (allowed types are: mysql and sqlite)"); + return; + } + + if(settings.getDatabaseType().equals("sqlite") && (settings.getDatabaseUrl() == null || settings.getDatabaseUrl().equals(""))) + { + Logger.warning("There is no save path specified for the sqlite database file. It will be saved as \"BudgetMaster.db\" in current directory."); + settings.setDatabaseUrl(System.getProperty("user.dir").replace("\\", "/") + "/BudgetMaster.db"); + settingsChanged = true; + } + + if(settings.getDatabaseUrl().contains("jdbc")) + { + settings.setDatabaseUrl(settings.getDatabaseUrl().replace("jdbc:mysql://", "")); + settingsChanged = true; + } + + + if(settingsChanged) + { + Logger.warning("Settings file is not up to date! Updated settings to new version."); + Utils.saveSettings(settings); + } + VersionInformation versionInfo = new VersionInformation(); versionInfo.setVersionCode(Integer.parseInt(Localization.getString("version.code"))); versionInfo.setVersionName(Localization.getString("version.name")); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java index 3a0f1d91b1c1d4ed851e676f01ca34e28fd18adf..5ff516091fb8490d558beb75b0cfb94d42e7703b 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java @@ -12,7 +12,6 @@ import static spark.Spark.secure; import java.io.File; import java.sql.Connection; -import java.sql.DriverManager; import org.joda.time.DateTime; @@ -22,9 +21,9 @@ import com.google.gson.GsonBuilder; import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; import de.deadlocker8.budgetmaster.logic.utils.Helpers; import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.Utils; +import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import de.deadlocker8.budgetmasterserver.server.category.CategoryAdd; import de.deadlocker8.budgetmasterserver.server.category.CategoryDelete; import de.deadlocker8.budgetmasterserver.server.category.CategoryGet; @@ -109,11 +108,14 @@ public class SparkServer RouteOverview.enableRouteOverview(); + Logger.info("Trying to connect to database (jdbc:" + settings.getDatabaseType() + "://" + settings.getDatabaseUrl() + settings.getDatabaseName() + ")"); + try { - Connection connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - new DatabaseCreator(connection, settings); - Logger.info("Successfully initialized database (" + settings.getDatabaseUrl() + settings.getDatabaseName() + ")"); + Connection connection = Utils.getDatabaseConnection(settings); + DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); + creator.createTables(); + Logger.info("Successfully initialized database (jdbc:" + settings.getDatabaseType() + "://" + settings.getDatabaseUrl() + settings.getDatabaseName() + ")"); connection.close(); } catch(Exception e) @@ -131,72 +133,72 @@ public class SparkServer halt(401, "Unauthorized"); } - DatabaseHandler handler = new DatabaseHandler(settings); + DatabaseHandler handler = Utils.getDatabaseHandler(settings); RepeatingPaymentUpdater paymentUpdater = new RepeatingPaymentUpdater(handler); paymentUpdater.updateRepeatingPayments(DateTime.now()); handler.closeConnection(); }); // Category - get("/category", new CategoryGetAll(new DatabaseHandler(settings), gson)); - get("/category/single", new CategoryGet(new DatabaseHandler(settings), gson)); - post("/category", new CategoryAdd(new DatabaseHandler(settings))); - put("/category", new CategoryUpdate(new DatabaseHandler(settings))); - delete("/category", new CategoryDelete(new DatabaseHandler(settings))); + get("/category", new CategoryGetAll(Utils.getDatabaseHandler(settings), gson)); + get("/category/single", new CategoryGet(Utils.getDatabaseHandler(settings), gson)); + post("/category", new CategoryAdd(Utils.getDatabaseHandler(settings))); + put("/category", new CategoryUpdate(Utils.getDatabaseHandler(settings))); + delete("/category", new CategoryDelete(Utils.getDatabaseHandler(settings))); // Payment - get("/payment/search", new PaymentSearch(new DatabaseHandler(settings), new DatabaseTagHandler(settings))); - get("/payment/search/maxAmount", new PaymentMaxAmount(new DatabaseHandler(settings), gson)); + get("/payment/search", new PaymentSearch(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings))); + get("/payment/search/maxAmount", new PaymentMaxAmount(Utils.getDatabaseHandler(settings), gson)); // Normal - get("/payment", new PaymentGet(new DatabaseHandler(settings), gson)); - post("/payment", new PaymentAdd(new DatabaseHandler(settings), gson)); - put("/payment", new PaymentUpdate(new DatabaseHandler(settings))); - delete("/payment", new PaymentDelete(new DatabaseHandler(settings), new DatabaseTagHandler(settings))); + get("/payment", new PaymentGet(Utils.getDatabaseHandler(settings), gson)); + post("/payment", new PaymentAdd(Utils.getDatabaseHandler(settings), gson)); + put("/payment", new PaymentUpdate(Utils.getDatabaseHandler(settings))); + delete("/payment", new PaymentDelete(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings))); // Repeating - get("/repeatingpayment/single", new RepeatingPaymentGet(new DatabaseHandler(settings), gson)); - get("/repeatingpayment", new RepeatingPaymentGetAll(new DatabaseHandler(settings), gson)); - post("/repeatingpayment", new RepeatingPaymentAdd(new DatabaseHandler(settings), gson)); - delete("/repeatingpayment", new RepeatingPaymentDelete(new DatabaseHandler(settings), new DatabaseTagHandler(settings))); + get("/repeatingpayment/single", new RepeatingPaymentGet(Utils.getDatabaseHandler(settings), gson)); + get("/repeatingpayment", new RepeatingPaymentGetAll(Utils.getDatabaseHandler(settings), gson)); + post("/repeatingpayment", new RepeatingPaymentAdd(Utils.getDatabaseHandler(settings), gson)); + delete("/repeatingpayment", new RepeatingPaymentDelete(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings))); // CategoryBudget - get("/categorybudget", new CategoryBudgetGet(new DatabaseHandler(settings), gson)); + get("/categorybudget", new CategoryBudgetGet(Utils.getDatabaseHandler(settings), gson)); // Rest - get("/rest", new RestGet(new DatabaseHandler(settings), gson)); + get("/rest", new RestGet(Utils.getDatabaseHandler(settings), gson)); // charts - get("/charts/categoryInOutSum", new CategoryInOutSumForMonth(new DatabaseHandler(settings), gson)); - get("/charts/monthInOutSum", new MonthInOutSum(new DatabaseHandler(settings), gson)); + get("/charts/categoryInOutSum", new CategoryInOutSumForMonth(Utils.getDatabaseHandler(settings), gson)); + get("/charts/monthInOutSum", new MonthInOutSum(Utils.getDatabaseHandler(settings), gson)); // tag - get("/tag/single", new TagGet(new DatabaseTagHandler(settings), gson)); - get("/tag/single/byName", new TagGetByName(new DatabaseTagHandler(settings), gson)); - get("/tag", new TagGetAll(new DatabaseTagHandler(settings), gson)); - post("/tag", new TagAdd(new DatabaseTagHandler(settings))); - delete("/tag", new TagDelete(new DatabaseTagHandler(settings))); + get("/tag/single", new TagGet(Utils.getDatabaseTagHandler(settings), gson)); + get("/tag/single/byName", new TagGetByName(Utils.getDatabaseTagHandler(settings), gson)); + get("/tag", new TagGetAll(Utils.getDatabaseTagHandler(settings), gson)); + post("/tag", new TagAdd(Utils.getDatabaseTagHandler(settings))); + delete("/tag", new TagDelete(Utils.getDatabaseTagHandler(settings))); // tag match - get("/tag/match/all/normal", new TagMatchGetAllForPayment(new DatabaseTagHandler(settings), gson)); - get("/tag/match/all/repeating", new TagMatchGetAllForRepeatingPayment(new DatabaseTagHandler(settings), gson)); - get("/tag/match/normal", new TagMatchExistingForPayment(new DatabaseTagHandler(settings), gson)); - get("/tag/match/repeating", new TagMatchExistingForRepeatingPayment(new DatabaseTagHandler(settings), gson)); - post("/tag/match/normal", new TagMatchAddForPayment(new DatabaseTagHandler(settings))); - post("/tag/match/repeating", new TagMatchAddForRepeatingPayment(new DatabaseTagHandler(settings))); - delete("/tag/match/normal", new TagMatchDeleteForPayment(new DatabaseTagHandler(settings))); - delete("/tag/match/repeating", new TagMatchDeleteForRepeatingPayment(new DatabaseTagHandler(settings))); + get("/tag/match/all/normal", new TagMatchGetAllForPayment(Utils.getDatabaseTagHandler(settings), gson)); + get("/tag/match/all/repeating", new TagMatchGetAllForRepeatingPayment(Utils.getDatabaseTagHandler(settings), gson)); + get("/tag/match/normal", new TagMatchExistingForPayment(Utils.getDatabaseTagHandler(settings), gson)); + get("/tag/match/repeating", new TagMatchExistingForRepeatingPayment(Utils.getDatabaseTagHandler(settings), gson)); + post("/tag/match/normal", new TagMatchAddForPayment(Utils.getDatabaseTagHandler(settings))); + post("/tag/match/repeating", new TagMatchAddForRepeatingPayment(Utils.getDatabaseTagHandler(settings))); + delete("/tag/match/normal", new TagMatchDeleteForPayment(Utils.getDatabaseTagHandler(settings))); + delete("/tag/match/repeating", new TagMatchDeleteForRepeatingPayment(Utils.getDatabaseTagHandler(settings))); // Database get("/database", new DatabaseExport(settings, gson)); - post("/database", new DatabaseImport(new DatabaseHandler(settings), new DatabaseTagHandler(settings), gson)); - delete("/database", new DatabaseDelete(new DatabaseHandler(settings), settings)); + post("/database", new DatabaseImport(Utils.getDatabaseHandler(settings), Utils.getDatabaseTagHandler(settings), gson)); + delete("/database", new DatabaseDelete(Utils.getDatabaseHandler(settings), settings)); get("/info", new InformationGet(gson, versionInfo, settings)); get("/version", new VersionGet(gson, versionInfo)); delete("/log", new LogDelete()); after((request, response) -> { - DatabaseHandler handler = new DatabaseHandler(settings); + DatabaseHandler handler = Utils.getDatabaseHandler(settings); RepeatingPaymentUpdater paymentUpdater = new RepeatingPaymentUpdater(handler); paymentUpdater.updateRepeatingPayments(DateTime.now()); handler.closeConnection(); diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java index 80b4673cbc1df94bdeda5d4bac7fc521374ed9a5..4a5e3fa258a2bdd2ff3c5fb1f18a7e4b439e13ab 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryAdd.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.category; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; @@ -11,7 +11,7 @@ public class CategoryAdd implements AdvancedRoute { private DatabaseHandler handler; - public CategoryAdd( DatabaseHandler handler) + public CategoryAdd(DatabaseHandler handler) { this.handler = handler; } @@ -19,6 +19,7 @@ public class CategoryAdd implements AdvancedRoute @Override public void before() { + handler.connect(); } @Override diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java index e8c137e639f4b47b45ddd41b5d051cd794a5fe56..e1b80572c702584a7e63b41e35754f579c273fc4 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryDelete.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.category; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java index c33e5f3b82861ba1fa026b9166a371f0416a2ad7..1fd8abe32f79a99dbc0205d81961865d13898438 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGet.java @@ -6,7 +6,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java index 27f7c5ae479a4b0327e8553e4d09e8fb4ede982d..1e6af5f18d3bb93134e76ca200c25dc5c22f427c 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryGetAll.java @@ -9,7 +9,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java index a5ab6addbe7b1e90930f7ab8aae02ce933097356..8f651e484a685143788ee9a128d275771aeed184 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/category/CategoryUpdate.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.category; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java index 08f9b94b3144d112bd4dc378fd5557fa3025ad5d..545365e594dbbf0bf95a647de9093e62e75acae2 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/categorybudget/CategoryBudgetGet.java @@ -13,7 +13,7 @@ import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmaster.logic.category.CategoryBudget; import de.deadlocker8.budgetmaster.logic.payment.Payment; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java index 36c9d654e5e30d36e58f0634ac0b36cad9729522..6aad5ea8afdfbdfb497b8e66247a26a3ced7a84b 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/CategoryInOutSumForMonth.java @@ -10,7 +10,7 @@ import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmaster.logic.charts.CategoryInOutSum; import de.deadlocker8.budgetmaster.logic.payment.Payment; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java index 05c059e3e1ff724de86ad8f8eb98e36be6e3d7fd..292fae1f31afa02f271be7ef1406c5587de8a96a 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/charts/MonthInOutSum.java @@ -12,7 +12,7 @@ import de.deadlocker8.budgetmaster.logic.category.Category; import de.deadlocker8.budgetmaster.logic.charts.CategoryInOutSum; import de.deadlocker8.budgetmaster.logic.payment.Payment; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java index 33014e1c74efb3e1a6a6e847ac036f6eab19c962..e6a5f5ced5935bf653632800019affe044d34fb0 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseDelete.java @@ -3,13 +3,13 @@ package de.deadlocker8.budgetmasterserver.server.database; import static spark.Spark.halt; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.SQLException; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.Settings; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.Utils; +import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import logger.Logger; import spark.Request; import spark.Response; @@ -37,8 +37,9 @@ public class DatabaseDelete implements AdvancedRoute try { handler.deleteDatabase(); - Connection connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - new DatabaseCreator(connection, settings); + Connection connection = Utils.getDatabaseConnection(settings); + DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); + creator.createTables(); Logger.info("Successfully initialized database (" + settings.getDatabaseUrl() + settings.getDatabaseName() + ")"); return ""; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java index ef4612be1a9eed5a3cdb441432e705bb12a27ab4..65800d25ddff4083fccc56b147893bb58b8f65f2 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseImport.java @@ -6,9 +6,9 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.database.Database; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseImporter; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import logger.Logger; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java index d4a2dd0f3cfc7b58daeb32dcedb74a474320b190..b6bc9fd85da4272e16e8d2d0f8ce07673ed8a191 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentAdd.java @@ -5,7 +5,7 @@ import static spark.Spark.halt; import com.google.gson.Gson; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java index 45a593f1e981cf6bf874e33cc39c8c610a0138b3..fe70574aa24ff13f1d01908331426bf316588bb5 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentDelete.java @@ -5,8 +5,8 @@ import static spark.Spark.halt; import java.util.ArrayList; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java index 545d4ccd292278ae84dec0b607683f4d4a0afcd0..d82b8842b3a37c968785968711fb2981e0867f8b 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentGet.java @@ -10,7 +10,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java index 355b6c9eb35798ff2e7a416adfc6a995fd867307..e0e94e52d9e2bbdb7f5a81e53188486d625759fd 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/normal/PaymentUpdate.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.payment.normal; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java index aafc7d566897a9831c3817a440e2588e709a70b2..05c1bd614d6f3b557f97cdc7f78148acda90c5fa 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentAdd.java @@ -5,7 +5,7 @@ import static spark.Spark.halt; import com.google.gson.Gson; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java index a407409323b3f26fa73c28206bcfbd9c3777a389..1ba52b1a2c90a42603eb733e8f2fcd1cc14c93f6 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentDelete.java @@ -5,8 +5,8 @@ import static spark.Spark.halt; import java.util.ArrayList; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java index b904925396301f0d14e9dab3fbea97ec702d3438..f1ef2b2a38d0be9f6f710e9eb3e46f3d7089c1ab 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGet.java @@ -6,7 +6,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java index 4a5aa61f4d6b49baff59d198f1250f9d5c382114..88dbe39ffb5c270158febc78ceeed0a20c084985 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/repeating/RepeatingPaymentGetAll.java @@ -10,7 +10,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPaymentEntry; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import de.deadlocker8.budgetmasterserver.server.updater.RepeatingPaymentUpdater; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java index cd6bc68558adf379fb62c094f866f55c0275ec79..e64331e253b10ebaa7d919b8fd431a4224101912 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentMaxAmount.java @@ -5,7 +5,7 @@ import static spark.Spark.halt; import com.google.gson.Gson; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java index 3feb937d920bef42beb3c1d8b1f6f96451d5b127..4c9a8987e82bdf727f7e067661d1c683cd1e2b27 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/payment/search/PaymentSearch.java @@ -13,8 +13,8 @@ import de.deadlocker8.budgetmaster.logic.payment.PaymentJSONSerializer; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java index b1a1e00838a405b633f8f626a49bfccf47f4d5c8..03e26be3425bf53cf418cd7aa6956a1e635bc6b2 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/rest/RestGet.java @@ -5,7 +5,7 @@ import static spark.Spark.halt; import com.google.gson.Gson; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java index ade52651680ed8750b4606cbe85288bf092f513c..85533edccee9ded42a02bb95ca0edcd3f65dcd8f 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForPayment.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.match; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java index 58dd6ce2d4346a80548cc0ee2204e3447eea6d7e..f82989dce43ad5d3f20d99d31d7822ef0f410fcd 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchAddForRepeatingPayment.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.match; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java index fa472b60e59f4bc117222bc569ccb182a22a41cc..b607b3fc8a475e88bd1298c850b69d6983e2bbef 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForPayment.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.match; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import de.deadlocker8.budgetmasterserver.server.updater.TagUpdater; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java index 1573d495e6e8ef155ba1d4ffc7d3c717e954b803..e8d9b4dd61a70d470c03207e57680bd3d3e4cbf3 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchDeleteForRepeatingPayment.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.match; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import de.deadlocker8.budgetmasterserver.server.updater.TagUpdater; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java index 5ebc766c70c5c457bd6c5c0ee2d7b0060a2c9f96..c14317c7e6318de787c50ddedcf476d0880f8619 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForPayment.java @@ -5,7 +5,7 @@ import static spark.Spark.halt; import com.google.gson.Gson; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java index e44eca84437c788d90edc8b77eea8bd94e43b875..6bc8dd8a2d84d8eb7ce2b0767d572c9dce76597c 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchExistingForRepeatingPayment.java @@ -5,7 +5,7 @@ import static spark.Spark.halt; import com.google.gson.Gson; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java index e558cc36cd4dbfe32702a9a8dab065feace17ab2..dcea960f421f1115b3eb11f1aa6b3b71abe93b52 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForPayment.java @@ -8,7 +8,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java index 2dc02afaa5b43362da92b816417890ced3bed878..45d3ec84f142eeb61b8d433bdf36d9a4093fccbe 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/match/TagMatchGetAllForRepeatingPayment.java @@ -8,7 +8,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java index 18c892ccc16cf402ff49ff5c7e5d5ca94570fe0e..03dddec883199737478b354444cc5fcfbddbd250 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagAdd.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.tag; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java index 3b08cee137404b6a84d1487f167513538518c6ee..df498f1d5260d39867692ce4f39133708e228d79 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagDelete.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.tag.tag; import static spark.Spark.halt; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java index 4d1704b9a22d6e4e4f11016c3e9560ff00c2d2f7..1a6f419b191e2c762250d394449550c18b9885b9 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGet.java @@ -6,7 +6,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java index 9cac86976375fe579197ba05fbc92c2f7c0640c6..3fc9d143729c636eb20a22cd58a76a4e50807e46 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetAll.java @@ -8,7 +8,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java index 7e2816d1686eaef98165d7cfa7117378090c6eba..c2d834a1b04e30820f5d305eb2fd89dcb9e87e9f 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/tag/tag/TagGetByName.java @@ -6,7 +6,7 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import spark.Request; import spark.Response; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java index 5c22f4c42ffd5a3ac7a5a0b85960f756c2fed21a..6baa1a309ee9fa16db207ec8692bec8bead0089e 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/RepeatingPaymentUpdater.java @@ -8,7 +8,7 @@ import org.joda.time.Months; import de.deadlocker8.budgetmaster.logic.payment.LatestRepeatingPayment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import logger.Logger; public class RepeatingPaymentUpdater @@ -82,8 +82,8 @@ public class RepeatingPaymentUpdater if(payment.getRepeatInterval() != 0) { int numberOfDays = Days.daysBetween(startDate, now).getDays(); - int occurrences = numberOfDays / payment.getRepeatInterval(); - for(int i = 0; i <= occurrences + 1; i++) + int occurrences = numberOfDays / payment.getRepeatInterval(); + for(int i = 0; i <= occurrences; i++) { dates.add(startDate.plusDays(i * payment.getRepeatInterval())); } diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java index 1263871aee24650744f3cf742506dbf93505bca9..1776c9be0d3ed3367181b8b5e588750c93b1b841 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/updater/TagUpdater.java @@ -3,7 +3,7 @@ package de.deadlocker8.budgetmasterserver.server.updater; import java.util.ArrayList; import de.deadlocker8.budgetmaster.logic.tag.Tag; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; public class TagUpdater { diff --git a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json index fa065f988324083afb1c194089be199d78abf367..4de1cf29b1942c6d0fab4778daf28fe5573f7eca 100644 --- a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json +++ b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/settings.json @@ -1,5 +1,6 @@ { - "databaseUrl": "jdbc:mysql://localhost:3306/", + "databaseType": "mysql", + "databaseUrl": "localhost:3306/", "databaseName": "budgetmaster", "databaseUsername": "root", "databasePassword": "", diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java index bf5afebfac2a509c3b5f770922cdddcf7ff6b5ff..4014f6c7925a10bd958d85cb4c36586842a08788 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseHandlerTest.java @@ -8,7 +8,6 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.net.URISyntaxException; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Locale; @@ -24,8 +23,8 @@ import de.deadlocker8.budgetmaster.logic.payment.NormalPayment; import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmasterserver.logic.Settings; import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; import tools.Localization; public class DatabaseHandlerTest @@ -40,13 +39,14 @@ public class DatabaseHandlerTest //init Settings settings = Utils.loadSettings(); System.out.println(settings); - DatabaseHandler handler = new DatabaseHandler(settings); + DatabaseHandler handler = Utils.getDatabaseHandler(settings); handler.deleteDatabase(); handler.closeConnection(); - Connection connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - new DatabaseCreator(connection, settings); + Connection connection = Utils.getDatabaseConnection(settings); + DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); + creator.createTables(); connection.close(); - databaseHandler = new DatabaseHandler(settings); + databaseHandler = Utils.getDatabaseHandler(settings); Localization.init("de/deadlocker8/budgetmaster/"); Localization.loadLanguage(Locale.ENGLISH); @@ -75,7 +75,7 @@ public class DatabaseHandlerTest Category expected = new Category("123 Tü+?est Category", "#FF0000"); databaseHandler.addCategory(expected.getName(), expected.getColor()); //3 because "NONE" and "Übertrag" has already been inserted at database creation - assertEquals(3, databaseHandler.getLastInsertID()); + assertEquals(3, databaseHandler.getLastInsertID()); } @Test diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java index 8a811f873d4a75938d6195e7bc30d726501e4808..f3d334296576c27bd1c96ad8ea6286fbb7ee507e 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseImportExportTest.java @@ -9,7 +9,6 @@ import java.net.URISyntaxException; import java.nio.file.Files; import java.nio.file.Paths; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Locale; @@ -29,11 +28,11 @@ import de.deadlocker8.budgetmaster.logic.payment.RepeatingPayment; import de.deadlocker8.budgetmaster.logic.utils.FileHelper; import de.deadlocker8.budgetmasterserver.logic.Settings; import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseCreator; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseExporter; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseImporter; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import tools.Localization; public class DatabaseImportExportTest @@ -50,14 +49,15 @@ public class DatabaseImportExportTest //init settings = Utils.loadSettings(); System.out.println(settings); - DatabaseHandler handler = new DatabaseHandler(settings); + DatabaseHandler handler = Utils.getDatabaseHandler(settings); handler.deleteDatabase(); handler.closeConnection(); - Connection connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - new DatabaseCreator(connection, settings); + Connection connection = Utils.getDatabaseConnection(settings); + DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); + creator.createTables(); connection.close(); - databaseHandler = new DatabaseHandler(settings); - tagHandler = new DatabaseTagHandler(settings); + databaseHandler = Utils.getDatabaseHandler(settings); + tagHandler = Utils.getDatabaseTagHandler(settings); Localization.init("de/deadlocker8/budgetmaster/"); Localization.loadLanguage(Locale.ENGLISH); @@ -136,10 +136,11 @@ public class DatabaseImportExportTest { databaseHandler.deleteDatabase(); databaseHandler.closeConnection(); - Connection connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - new DatabaseCreator(connection, settings); + Connection connection = Utils.getDatabaseConnection(settings); + DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); + creator.createTables(); connection.close(); - databaseHandler = new DatabaseHandler(settings); + databaseHandler = Utils.getDatabaseHandler(settings);; File file = Paths.get("src/test/resources/de/deadlocker8/budgetmaster/import.json").toFile(); Database database = FileHelper.loadDatabaseJSON(file); @@ -152,7 +153,6 @@ public class DatabaseImportExportTest Gson gson = new GsonBuilder().setPrettyPrinting().create(); String databaseJSON = gson.toJson(exporter.exportDatabase()).replaceAll("\n", ""); FileHelper.saveDatabaseJSON(file, databaseJSON); - FileHelper.saveDatabaseJSON(new File("C:/Users/ROGO2/Desktop/123.json"), databaseJSON); String expectedJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/de/deadlocker8/budgetmaster/import.json"))); String exportedJSON = new String(Files.readAllBytes(Paths.get("src/test/resources/de/deadlocker8/budgetmaster/export.json"))); diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java index aa8270b536c1150206fb27f5c6a2b7d0c4a39ea1..49d8a5fef10046b726a37488946e5d1495b9c6c4 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/database/DatabaseTagHandlerTest.java @@ -9,7 +9,6 @@ import static org.junit.Assert.fail; import java.io.IOException; import java.net.URISyntaxException; import java.sql.Connection; -import java.sql.DriverManager; import java.sql.SQLException; import java.util.ArrayList; import java.util.Locale; @@ -22,9 +21,9 @@ import org.junit.Test; import de.deadlocker8.budgetmaster.logic.tag.Tag; import de.deadlocker8.budgetmasterserver.logic.Settings; import de.deadlocker8.budgetmasterserver.logic.Utils; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseCreator; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; -import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; +import de.deadlocker8.budgetmasterserver.logic.database.creator.DatabaseCreator; +import de.deadlocker8.budgetmasterserver.logic.database.handler.DatabaseHandler; +import de.deadlocker8.budgetmasterserver.logic.database.taghandler.DatabaseTagHandler; import tools.Localization; public class DatabaseTagHandlerTest @@ -39,13 +38,14 @@ public class DatabaseTagHandlerTest //init Settings settings = Utils.loadSettings(); System.out.println(settings); - DatabaseHandler handler = new DatabaseHandler(settings); + DatabaseHandler handler = Utils.getDatabaseHandler(settings); handler.deleteDatabase(); handler.closeConnection(); - Connection connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin&autoReconnect=true&wait_timeout=86400", settings.getDatabaseUsername(), settings.getDatabasePassword()); - new DatabaseCreator(connection, settings); + Connection connection = Utils.getDatabaseConnection(settings); + DatabaseCreator creator = Utils.getDatabaseCreator(connection, settings); + creator.createTables(); connection.close(); - tagHandler = new DatabaseTagHandler(settings); + tagHandler = Utils.getDatabaseTagHandler(settings); Localization.init("de/deadlocker8/budgetmaster/"); Localization.loadLanguage(Locale.ENGLISH); diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java index cd660fadeff8ab2b817352d3015b707c77277490..7a9329b642561f3b5ac477d8c3b5dc73f83a538c 100644 --- a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/tests/settings/SettingsTest.java @@ -21,14 +21,15 @@ public class SettingsTest Settings settings = Utils.loadSettings(); Settings expectedSettings = new Settings(); - expectedSettings.setDatabaseName("b"); - expectedSettings.setDatabaseUrl("jdbc:mysql://localhost:3306/"); + expectedSettings.setDatabaseType("mysql"); + expectedSettings.setDatabaseName("budgetmaster"); + expectedSettings.setDatabaseUrl("localhost:3306/"); expectedSettings.setDatabaseUsername("root"); expectedSettings.setDatabasePassword(""); expectedSettings.setServerPort(9000); expectedSettings.setServerSecret("geheim"); - expectedSettings.setKeystorePath("C:/Programmierung/eclipse/workspace/BudgetMaster/certs/keystore_self_signed.jks"); - expectedSettings.setKeystorePassword("geheim"); + expectedSettings.setKeystorePath("default"); + expectedSettings.setKeystorePassword("BudgetMaster"); assertEquals(expectedSettings, settings); }