From 3b90758f3d618663d885ce190053a1d88858917f Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 25 Nov 2017 16:10:47 +0100 Subject: [PATCH] #68 - implemented sqlite DatabaseHandler, DatabaseTagHandler, DatabaseCreator; updated Unit Tests --- .gitignore | 2 + BudgetMasterServer/pom.xml | 9 +- .../budgetmasterserver/logic/Settings.java | 39 ++- .../budgetmasterserver/logic/Utils.java | 72 +++++ .../logic/database/DatabaseExporter.java | 5 +- .../logic/database/DatabaseImporter.java | 6 +- .../database/creator/DatabaseCreator.java | 73 ++++++ .../MysqlDatabaseCreator.java} | 71 ++--- .../creator/SqliteDatabaseCreator.java | 248 ++++++++++++++++++ .../{ => handler}/DatabaseHandler.java | 241 ++--------------- .../handler/MysqlDatabaseHandler.java | 247 +++++++++++++++++ .../handler/SqliteDatabaseHandler.java | 245 +++++++++++++++++ .../{ => taghandler}/DatabaseTagHandler.java | 41 +-- .../taghandler/MysqlDatabaseTagHandler.java | 45 ++++ .../taghandler/SqliteDatabaseTagHandler.java | 46 ++++ .../budgetmasterserver/main/Main.java | 34 +++ .../server/SparkServer.java | 88 ++++--- .../server/category/CategoryAdd.java | 5 +- .../server/category/CategoryDelete.java | 2 +- .../server/category/CategoryGet.java | 2 +- .../server/category/CategoryGetAll.java | 2 +- .../server/category/CategoryUpdate.java | 2 +- .../categorybudget/CategoryBudgetGet.java | 2 +- .../charts/CategoryInOutSumForMonth.java | 2 +- .../server/charts/MonthInOutSum.java | 2 +- .../server/database/DatabaseDelete.java | 11 +- .../server/database/DatabaseImport.java | 4 +- .../server/payment/normal/PaymentAdd.java | 2 +- .../server/payment/normal/PaymentDelete.java | 4 +- .../server/payment/normal/PaymentGet.java | 2 +- .../server/payment/normal/PaymentUpdate.java | 2 +- .../repeating/RepeatingPaymentAdd.java | 2 +- .../repeating/RepeatingPaymentDelete.java | 4 +- .../repeating/RepeatingPaymentGet.java | 2 +- .../repeating/RepeatingPaymentGetAll.java | 2 +- .../payment/search/PaymentMaxAmount.java | 2 +- .../server/payment/search/PaymentSearch.java | 4 +- .../server/rest/RestGet.java | 2 +- .../tag/match/TagMatchAddForPayment.java | 2 +- .../match/TagMatchAddForRepeatingPayment.java | 2 +- .../tag/match/TagMatchDeleteForPayment.java | 2 +- .../TagMatchDeleteForRepeatingPayment.java | 2 +- .../tag/match/TagMatchExistingForPayment.java | 2 +- .../TagMatchExistingForRepeatingPayment.java | 2 +- .../tag/match/TagMatchGetAllForPayment.java | 2 +- .../TagMatchGetAllForRepeatingPayment.java | 2 +- .../server/tag/tag/TagAdd.java | 2 +- .../server/tag/tag/TagDelete.java | 2 +- .../server/tag/tag/TagGet.java | 2 +- .../server/tag/tag/TagGetAll.java | 2 +- .../server/tag/tag/TagGetByName.java | 2 +- .../updater/RepeatingPaymentUpdater.java | 6 +- .../server/updater/TagUpdater.java | 2 +- .../budgetmasterserver/settings.json | 3 +- .../tests/database/DatabaseHandlerTest.java | 16 +- .../database/DatabaseImportExportTest.java | 26 +- .../database/DatabaseTagHandlerTest.java | 16 +- .../tests/settings/SettingsTest.java | 9 +- 58 files changed, 1235 insertions(+), 443 deletions(-) create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/DatabaseCreator.java rename BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/{DatabaseCreator.java => creator/MysqlDatabaseCreator.java} (84%) create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/creator/SqliteDatabaseCreator.java rename BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/{ => handler}/DatabaseHandler.java (70%) create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/MysqlDatabaseHandler.java create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/handler/SqliteDatabaseHandler.java rename BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/{ => taghandler}/DatabaseTagHandler.java (89%) create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/MysqlDatabaseTagHandler.java create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/taghandler/SqliteDatabaseTagHandler.java diff --git a/.gitignore b/.gitignore index ae91f7292..a3f7c058f 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 d6804dc29..b3a9bffda 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 821531725..fe2227c3f 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 265ab169d..3b8f6ac01 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 2213d9100..fb0dc3277 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 3070bf67b..091440c11 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 000000000..2fef700c2 --- /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 81350a988..7c73373c7 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 000000000..0e869e60c --- /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 5f471c460..d211841f2 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 000000000..b2c8e92b9 --- /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 000000000..139b20dff --- /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 2a0844fcb..4b65d9132 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 000000000..70b319a02 --- /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 000000000..d3e3fcba6 --- /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 eb3a19f90..6083c46fe 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 3a0f1d91b..5ff516091 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 80b4673cb..4a5e3fa25 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 e8c137e63..e1b80572c 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 c33e5f3b8..1fd8abe32 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 27f7c5ae4..1e6af5f18 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 a5ab6addb..8f651e484 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 08f9b94b3..545365e59 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 36c9d654e..6aad5ea8a 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 05c059e3e..292fae1f3 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 33014e1c7..e6a5f5ced 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 ef4612be1..65800d25d 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 d4a2dd0f3..b6bc9fd85 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 45a593f1e..fe70574aa 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 545d4ccd2..d82b8842b 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 355b6c9eb..e0e94e52d 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 aafc7d566..05c1bd614 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 a40740932..1ba52b1a2 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 b90492539..f1ef2b2a3 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 4a5aa61f4..88dbe39ff 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 cd6bc6855..e64331e25 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 3feb937d9..4c9a8987e 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 b1a1e0083..03e26be34 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 ade526516..85533edcc 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 58dd6ce2d..f82989dce 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 fa472b60e..b607b3fc8 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 1573d495e..e8d9b4dd6 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 5ebc766c7..c14317c7e 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 e44eca844..6bc8dd8a2 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 e558cc36c..dcea960f4 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 2dc02afaa..45d3ec84f 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 18c892ccc..03dddec88 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 3b08cee13..df498f1d5 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 4d1704b9a..1a6f419b1 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 9cac86976..3fc9d1437 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 7e2816d16..c2d834a1b 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 5c22f4c42..6baa1a309 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 1263871ae..1776c9be0 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 fa065f988..4de1cf29b 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 bf5afebfa..4014f6c79 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 8a811f873..f3d334296 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 aa8270b53..49d8a5fef 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 cd660fade..7a9329b64 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); } -- GitLab