From b844d271baebdf4ad9b7a3d76b31f37f1baf8a3e Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Fri, 3 Nov 2017 15:09:39 +0100 Subject: [PATCH] Fixed #225 - database connection error after long idle time --- BudgetMasterClient/pom.xml | 2 +- .../budgetmaster/languages/_de.properties | 6 +- .../budgetmaster/languages/_en.properties | 6 +- BudgetMasterServer/pom.xml | 2 +- .../logic/AdvancedRoute.java | 19 +++ .../logic/database/DatabaseHandler.java | 124 ++++++++++++------ .../logic/database/DatabaseTagHandler.java | 74 +++++++---- .../server/SparkServer.java | 99 ++++++++------ .../server/category/CategoryAdd.java | 17 ++- .../server/category/CategoryDelete.java | 18 ++- .../server/category/CategoryGet.java | 18 ++- .../server/category/CategoryGetAll.java | 22 +++- .../server/category/CategoryUpdate.java | 18 ++- .../categorybudget/CategoryBudgetGet.java | 67 ++++++---- .../charts/CategoryInOutSumForMonth.java | 18 ++- .../server/charts/MonthInOutSum.java | 18 ++- .../server/database/DatabaseDelete.java | 32 ++++- .../server/database/DatabaseExport.java | 16 ++- .../server/database/DatabaseImport.java | 30 +++-- .../server/info/InformationGet.java | 16 ++- .../server/info/VersionGet.java | 16 ++- .../server/log/LogDelete.java | 18 ++- .../server/payment/normal/PaymentAdd.java | 82 +++++++----- .../server/payment/normal/PaymentDelete.java | 19 ++- .../server/payment/normal/PaymentGet.java | 20 ++- .../server/payment/normal/PaymentUpdate.java | 96 ++++++++------ .../repeating/RepeatingPaymentAdd.java | 67 +++++----- .../repeating/RepeatingPaymentDelete.java | 20 ++- .../repeating/RepeatingPaymentGet.java | 18 ++- .../repeating/RepeatingPaymentGetAll.java | 18 ++- .../payment/search/PaymentMaxAmount.java | 18 ++- .../server/payment/search/PaymentSearch.java | 104 ++++++++------- .../server/rest/RestGet.java | 18 ++- .../tag/match/TagMatchAddForPayment.java | 18 ++- .../match/TagMatchAddForRepeatingPayment.java | 18 ++- .../tag/match/TagMatchDeleteForPayment.java | 18 ++- .../TagMatchDeleteForRepeatingPayment.java | 18 ++- .../tag/match/TagMatchExistingForPayment.java | 18 ++- .../TagMatchExistingForRepeatingPayment.java | 18 ++- .../tag/match/TagMatchGetAllForPayment.java | 18 ++- .../TagMatchGetAllForRepeatingPayment.java | 18 ++- .../server/tag/tag/TagAdd.java | 18 ++- .../server/tag/tag/TagDelete.java | 18 ++- .../server/tag/tag/TagGet.java | 18 ++- .../server/tag/tag/TagGetAll.java | 18 ++- .../server/tag/tag/TagGetByName.java | 18 ++- .../updater/RepeatingPaymentUpdater.java | 4 +- .../budgetmasterserver/_en.properties | 6 +- .../tests/database/DatabaseHandlerTest.java | 33 ++++- .../database/DatabaseImportExportTest.java | 38 +++++- .../database/DatabaseTagHandlerTest.java | 30 ++++- 51 files changed, 1059 insertions(+), 422 deletions(-) create mode 100644 BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java diff --git a/BudgetMasterClient/pom.xml b/BudgetMasterClient/pom.xml index 1d5b244e4..af6a7b9b5 100644 --- a/BudgetMasterClient/pom.xml +++ b/BudgetMasterClient/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.deadlocker8</groupId> <artifactId>BudgetMasterClient</artifactId> - <version>1.7.0</version> + <version>1.8.0</version> <name>BudgetMasterClient</name> <build> <plugins> diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties index 3c9a5ea1f..c3d0c4bff 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_de.properties @@ -1,8 +1,8 @@ # DEFAULT app.name=BudgetMaster -version.code=11 -version.name=1.7.0 -version.date=26.10.17 +version.code=12 +version.name=1.8.0_alpha +version.date=03.11.17 author=Robert Goldmann credits=L�nderflaggen von Freepik auf https://www.flaticon.com\nVerwendete Schriftarten: OpenSans diff --git a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties index f0cb6b148..04f8fbe66 100644 --- a/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties +++ b/BudgetMasterClient/src/main/resources/de/deadlocker8/budgetmaster/languages/_en.properties @@ -1,8 +1,8 @@ # DEFAULT app.name=BudgetMaster -version.code=11 -version.name=1.7.0 -version.date=26.10.17 +version.code=12 +version.name=1.8.0_alpha +version.date=03.11.17 author=Robert Goldmann credits=Flags by Freepik on https://www.flaticon.com\nFonts used: OpenSans diff --git a/BudgetMasterServer/pom.xml b/BudgetMasterServer/pom.xml index 0a022441b..2fc7fb501 100644 --- a/BudgetMasterServer/pom.xml +++ b/BudgetMasterServer/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>de.deadlocker8</groupId> <artifactId>BudgetMasterServer</artifactId> - <version>1.7.0</version> + <version>1.8.0</version> <name>BudgetMasterServer</name> <build> <plugins> diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java new file mode 100644 index 000000000..898188ab9 --- /dev/null +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/AdvancedRoute.java @@ -0,0 +1,19 @@ +package de.deadlocker8.budgetmasterserver.logic; + +import spark.Request; +import spark.Response; +import spark.Route; + +public interface AdvancedRoute extends Route +{ + void before(); + Object handleRequest(Request req, Response res); + void after(); + default Object handle(Request request, Response response) throws Exception + { + before(); + Object value = handleRequest(request, response); + after(); + return value; + } +} \ 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/DatabaseHandler.java index b9f91615a..5f471c460 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseHandler.java @@ -24,15 +24,23 @@ import logger.Logger; public class DatabaseHandler { private Connection connection; + private Settings settings; private final DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd"); public DatabaseHandler(Settings settings) throws IllegalStateException + { + this.settings = settings; + connect(); + } + + public void connect() { try { - this.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() + ")"); + 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()); + } } catch(Exception e) { @@ -41,7 +49,19 @@ public class DatabaseHandler } } - private void closeConnection(Statement statement) + public void closeConnection() + { + try + { + connection.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + } + + private void closeStatement(Statement statement) { if(statement != null) { @@ -71,6 +91,7 @@ public class DatabaseHandler { lastInsertID = rs.getInt("LAST_INSERT_ID()"); } + rs.close(); } catch(SQLException e) { @@ -78,7 +99,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return lastInsertID; @@ -105,6 +126,7 @@ public class DatabaseHandler dateTime = formatter.parseDateTime(rs.getString("min")); } } + rs.close(); } catch(SQLException e) { @@ -112,7 +134,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return dateTime; @@ -139,6 +161,7 @@ public class DatabaseHandler dateTime = formatter.parseDateTime(rs.getString("min")); } } + rs.close(); } catch(SQLException e) { @@ -146,7 +169,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return dateTime; @@ -229,6 +252,7 @@ public class DatabaseHandler results.add(new Category(id, name, color)); } + rs.close(); } catch(SQLException e) { @@ -236,7 +260,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -259,6 +283,7 @@ public class DatabaseHandler result = new Category(id, name, color); } + rs.close(); } catch(SQLException e) { @@ -266,7 +291,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return result; @@ -291,6 +316,7 @@ public class DatabaseHandler result = new Category(id, categoryName, categoryColor); } + rs.close(); } catch(SQLException e) { @@ -298,7 +324,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return result; @@ -320,6 +346,7 @@ public class DatabaseHandler exists = true; } } + rs.close(); } catch(SQLException e) { @@ -327,7 +354,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return exists; @@ -350,9 +377,10 @@ public class DatabaseHandler String date = rs.getString("Date"); int categoryID = rs.getInt("CategoryID"); String description = rs.getString("Description"); - + rs.close(); return new NormalPayment(resultID, amount, date, categoryID, name, description); } + rs.close(); } catch(SQLException e) { @@ -360,7 +388,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return null; @@ -388,6 +416,7 @@ public class DatabaseHandler results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); } + rs.close(); } catch(SQLException e) { @@ -395,7 +424,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -424,6 +453,7 @@ public class DatabaseHandler results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); } + rs.close(); } catch(SQLException e) { @@ -431,7 +461,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -460,6 +490,7 @@ public class DatabaseHandler results.add(new NormalPayment(resultID, amount, date, categoryID, name, description)); } + rs.close(); } catch(SQLException e) { @@ -467,7 +498,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -500,6 +531,7 @@ public class DatabaseHandler results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); } + rs.close(); } catch(SQLException e) { @@ -507,7 +539,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -540,6 +572,7 @@ public class DatabaseHandler results.add(new RepeatingPaymentEntry(resultID, repeatingPaymentID, date, amount, categoryID, name, description,repeatInterval, repeatEndDate, repeatMonthDay)); } + rs.close(); } catch(SQLException e) { @@ -547,7 +580,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -577,6 +610,7 @@ public class DatabaseHandler results.add(new RepeatingPayment(resultID, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay)); } + rs.close(); } catch(SQLException e) { @@ -584,7 +618,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -608,6 +642,7 @@ public class DatabaseHandler results.add(new LatestRepeatingPayment(resultID, repeatingPaymentID, date)); } + rs.close(); } catch(SQLException e) { @@ -615,7 +650,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -644,6 +679,7 @@ public class DatabaseHandler result = new RepeatingPayment(id, amount, date, categoryID, name, description, repeatInterval, repeatEndDate, repeatMonthDay); } + rs.close(); } catch(SQLException e) { @@ -651,7 +687,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return result; @@ -666,8 +702,11 @@ public class DatabaseHandler ResultSet rs = stmt.executeQuery(); while(rs.next()) { - return rs.getInt("max"); + int result = rs.getInt("max"); + rs.close(); + return result; } + rs.close(); } catch(SQLException e) { @@ -675,7 +714,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return -1; @@ -690,8 +729,11 @@ public class DatabaseHandler ResultSet rs = stmt.executeQuery(); while(rs.next()) { - return rs.getInt("max"); + int result = rs.getInt("max"); + rs.close(); + return result; } + rs.close(); } catch(SQLException e) { @@ -699,7 +741,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return -1; @@ -723,7 +765,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -742,7 +784,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -761,7 +803,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -798,7 +840,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -821,7 +863,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -842,7 +884,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -863,8 +905,11 @@ public class DatabaseHandler ResultSet rs = stmt.getGeneratedKeys(); if(rs.next()) { - return rs.getInt(1); + int result = rs.getInt(1); + rs.close(); + return result; } + rs.close(); } catch(SQLException e) { @@ -872,7 +917,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return -1; @@ -904,8 +949,11 @@ public class DatabaseHandler ResultSet rs = stmt.getGeneratedKeys(); if(rs.next()) { - return rs.getInt(1); + int result = rs.getInt(1); + rs.close(); + return result; } + rs.close(); } catch(SQLException e) { @@ -913,7 +961,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return -1; @@ -936,7 +984,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -960,7 +1008,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -984,7 +1032,7 @@ public class DatabaseHandler } finally { - closeConnection(stmt); + 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/DatabaseTagHandler.java index 562e2b20f..2a0844fcb 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/logic/database/DatabaseTagHandler.java @@ -15,21 +15,43 @@ import logger.Logger; public class DatabaseTagHandler { private Connection connection; + private Settings settings; public DatabaseTagHandler(Settings settings) throws IllegalStateException { - try - { - this.connection = DriverManager.getConnection(settings.getDatabaseUrl() + settings.getDatabaseName() + "?useLegacyDatetimeCode=false&serverTimezone=Europe/Berlin", settings.getDatabaseUsername(), settings.getDatabasePassword()); - } - catch(Exception e) - { - Logger.error(e); - throw new IllegalStateException("Cannot connect the database!", e); - } - } + this.settings = settings; + connect(); + } + + public void connect() + { + try + { + 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()); + } + } + catch(Exception e) + { + Logger.error(e); + throw new IllegalStateException("Cannot connect the database!", e); + } + } + + public void closeConnection() + { + try + { + connection.close(); + } + catch(SQLException e) + { + Logger.error(e); + } + } - private void closeConnection(Statement statement) + private void closeStatement(Statement statement) { if(statement != null) { @@ -63,7 +85,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return lastInsertID; @@ -91,7 +113,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return results; @@ -121,7 +143,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return tag; @@ -151,7 +173,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return tag; @@ -172,7 +194,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -191,7 +213,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -216,7 +238,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return false; @@ -243,7 +265,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return false; @@ -271,7 +293,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return tagIDs; @@ -299,7 +321,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return tagIDs; @@ -322,7 +344,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -343,7 +365,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -363,7 +385,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -383,7 +405,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } } @@ -407,7 +429,7 @@ public class DatabaseTagHandler } finally { - closeConnection(stmt); + closeStatement(stmt); } return false; 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 2e4d55abf..9f47f2ca5 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/SparkServer.java @@ -11,6 +11,8 @@ import static spark.Spark.put; import static spark.Spark.secure; import java.io.File; +import java.sql.Connection; +import java.sql.DriverManager; import org.joda.time.DateTime; @@ -20,6 +22,7 @@ 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.server.category.CategoryAdd; @@ -69,8 +72,6 @@ import tools.HashUtils; public class SparkServer { private Gson gson; - private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; public SparkServer(Settings settings, VersionInformation versionInfo) { @@ -99,9 +100,19 @@ public class SparkServer RouteOverview.enableRouteOverview(); - handler = new DatabaseHandler(settings); - tagHandler = new DatabaseTagHandler(settings); - + 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.close(); + } + catch(Exception e) + { + Logger.error(e); + throw new IllegalStateException("Cannot connect the database!", e); + } + before((request, response) -> { String clientSecret = request.queryMap("secret").value(); @@ -111,69 +122,75 @@ public class SparkServer halt(401, "Unauthorized"); } - new RepeatingPaymentUpdater(handler).updateRepeatingPayments(DateTime.now()); + DatabaseHandler handler = new DatabaseHandler(settings); + RepeatingPaymentUpdater paymentUpdater = new RepeatingPaymentUpdater(handler); + paymentUpdater.updateRepeatingPayments(DateTime.now()); + handler.closeConnection(); }); // Category - get("/category", new CategoryGetAll(handler, gson)); - get("/category/single", new CategoryGet(handler, gson)); - post("/category", new CategoryAdd(handler)); - put("/category", new CategoryUpdate(handler)); - delete("/category", new CategoryDelete(handler)); + 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))); // Payment - get("/payment/search", new PaymentSearch(handler, tagHandler)); - get("/payment/search/maxAmount", new PaymentMaxAmount(handler, gson)); + get("/payment/search", new PaymentSearch(new DatabaseHandler(settings), new DatabaseTagHandler(settings))); + get("/payment/search/maxAmount", new PaymentMaxAmount(new DatabaseHandler(settings), gson)); // Normal - get("/payment", new PaymentGet(handler, gson)); - post("/payment", new PaymentAdd(handler, gson)); - put("/payment", new PaymentUpdate(handler)); - delete("/payment", new PaymentDelete(handler, tagHandler)); + 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))); // Repeating - get("/repeatingpayment/single", new RepeatingPaymentGet(handler, gson)); - get("/repeatingpayment", new RepeatingPaymentGetAll(handler, gson)); - post("/repeatingpayment", new RepeatingPaymentAdd(handler, gson)); - delete("/repeatingpayment", new RepeatingPaymentDelete(handler, tagHandler)); + 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))); // CategoryBudget - get("/categorybudget", new CategoryBudgetGet(handler, gson)); + get("/categorybudget", new CategoryBudgetGet(new DatabaseHandler(settings), gson)); // Rest - get("/rest", new RestGet(handler, gson)); + get("/rest", new RestGet(new DatabaseHandler(settings), gson)); // charts - get("/charts/categoryInOutSum", new CategoryInOutSumForMonth(handler, gson)); - get("/charts/monthInOutSum", new MonthInOutSum(handler, gson)); + get("/charts/categoryInOutSum", new CategoryInOutSumForMonth(new DatabaseHandler(settings), gson)); + get("/charts/monthInOutSum", new MonthInOutSum(new DatabaseHandler(settings), gson)); // tag - get("/tag/single", new TagGet(tagHandler, gson)); - get("/tag/single/byName", new TagGetByName(tagHandler, gson)); - get("/tag", new TagGetAll(tagHandler, gson)); - post("/tag", new TagAdd(tagHandler)); - delete("/tag", new TagDelete(tagHandler)); + 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))); // tag match - get("/tag/match/all/normal", new TagMatchGetAllForPayment(tagHandler, gson)); - get("/tag/match/all/repeating", new TagMatchGetAllForRepeatingPayment(tagHandler, gson)); - get("/tag/match/normal", new TagMatchExistingForPayment(tagHandler, gson)); - get("/tag/match/repeating", new TagMatchExistingForRepeatingPayment(tagHandler, gson)); - post("/tag/match/normal", new TagMatchAddForPayment(tagHandler)); - post("/tag/match/repeating", new TagMatchAddForRepeatingPayment(tagHandler)); - delete("/tag/match/normal", new TagMatchDeleteForPayment(tagHandler)); - delete("/tag/match/repeating", new TagMatchDeleteForRepeatingPayment(tagHandler)); + 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))); // Database get("/database", new DatabaseExport(settings, gson)); - post("/database", new DatabaseImport(handler, tagHandler, gson)); - delete("/database", new DatabaseDelete(handler, settings)); + post("/database", new DatabaseImport(new DatabaseHandler(settings), new DatabaseTagHandler(settings), gson)); + delete("/database", new DatabaseDelete(new DatabaseHandler(settings), settings)); get("/info", new InformationGet(gson, versionInfo, settings)); get("/version", new VersionGet(gson, versionInfo)); delete("/log", new LogDelete()); after((request, response) -> { - new RepeatingPaymentUpdater(handler).updateRepeatingPayments(DateTime.now()); + DatabaseHandler handler = new DatabaseHandler(settings); + RepeatingPaymentUpdater paymentUpdater = new RepeatingPaymentUpdater(handler); + paymentUpdater.updateRepeatingPayments(DateTime.now()); + handler.closeConnection(); }); Spark.exception(Exception.class, (exception, request, response) -> { 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 e1c68a1fa..80b4673cb 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryAdd implements Route +public class CategoryAdd implements AdvancedRoute { private DatabaseHandler handler; @@ -17,7 +17,12 @@ public class CategoryAdd implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("name") || !req.queryParams().contains("color")) { @@ -41,4 +46,10 @@ public class CategoryAdd implements Route return ""; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 134d68b26..e8c137e63 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryDelete implements Route +public class CategoryDelete implements AdvancedRoute { private DatabaseHandler handler; @@ -17,7 +17,13 @@ public class CategoryDelete implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -53,4 +59,10 @@ public class CategoryDelete implements Route return ""; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 bda73e67a..c33e5f3b8 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 @@ -5,12 +5,12 @@ import static spark.Spark.halt; 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryGet implements Route +public class CategoryGet implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -22,7 +22,13 @@ public class CategoryGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -58,4 +64,10 @@ public class CategoryGet implements Route } return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 2cb97062a..27f7c5ae4 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 @@ -8,12 +8,12 @@ import java.util.Collections; 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryGetAll implements Route +public class CategoryGetAll implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -25,10 +25,16 @@ public class CategoryGetAll implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { try - { + { ArrayList<Category> categories = handler.getCategories(); Collections.sort(categories, (c1, c2) -> c1.getName().toLowerCase().compareTo(c2.getName().toLowerCase())); @@ -37,7 +43,13 @@ public class CategoryGetAll implements Route catch(IllegalStateException e) { halt(500, "Internal Server Error"); - } + } return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 0b55664fa..a5ab6addb 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryUpdate implements Route +public class CategoryUpdate implements AdvancedRoute { private DatabaseHandler handler; @@ -17,7 +17,13 @@ public class CategoryUpdate implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id") ||!req.queryParams().contains("name") || !req.queryParams().contains("color")) { @@ -53,4 +59,10 @@ public class CategoryUpdate implements Route return ""; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 7ae44cb59..08f9b94b3 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 @@ -12,12 +12,12 @@ import com.google.gson.Gson; 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryBudgetGet implements Route +public class CategoryBudgetGet implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -29,65 +29,72 @@ public class CategoryBudgetGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) { halt(400, "Bad Request"); } - + int year = 0; int month = 0; - + try - { + { year = Integer.parseInt(req.queryMap("year").value()); month = Integer.parseInt(req.queryMap("month").value()); - + if(year < 0 || month < 1 || month > 12) { halt(400, "Bad Request"); } - + try - { + { ArrayList<Payment> payments = new ArrayList<>(); payments.addAll(handler.getPayments(year, month)); - payments.addAll(handler.getRepeatingPayments(year, month)); - + payments.addAll(handler.getRepeatingPayments(year, month)); + ArrayList<CategoryBudget> budgets = new ArrayList<>(); - + for(Category currentCategory : handler.getCategories()) { budgets.add(new CategoryBudget(currentCategory, 0)); CategoryBudget currentBudget = budgets.get(budgets.size() - 1); for(Payment currentPayment : payments) - { + { if(currentCategory.getID() == currentPayment.getCategoryID()) { currentBudget.setBudget(currentBudget.getBudget() + currentPayment.getAmount()); - } + } } } - - //filter empty categories + + // filter empty categories Iterator<CategoryBudget> iterator = budgets.iterator(); while(iterator.hasNext()) - { + { if(iterator.next().getBudget() == 0) { iterator.remove(); } } - - Collections.sort(budgets, new Comparator<CategoryBudget>() { - @Override - public int compare(CategoryBudget budget1, CategoryBudget budget2) - { - return Double.compare(budget1.getBudget(), budget2.getBudget()); - } - }); - + + Collections.sort(budgets, new Comparator<CategoryBudget>() + { + @Override + public int compare(CategoryBudget budget1, CategoryBudget budget2) + { + return Double.compare(budget1.getBudget(), budget2.getBudget()); + } + }); + return gson.toJson(budgets); } catch(IllegalStateException ex) @@ -99,7 +106,13 @@ public class CategoryBudgetGet implements Route { halt(400, "Bad Request"); } - + return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 a83a7a509..36c9d654e 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 @@ -9,12 +9,12 @@ import com.google.gson.Gson; 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 spark.Request; import spark.Response; -import spark.Route; -public class CategoryInOutSumForMonth implements Route +public class CategoryInOutSumForMonth implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -26,7 +26,13 @@ public class CategoryInOutSumForMonth implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("startDate") || !req.queryParams().contains("endDate")) { @@ -71,4 +77,10 @@ public class CategoryInOutSumForMonth implements Route return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 8a4f43f18..05c059e3e 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 @@ -11,12 +11,12 @@ import com.google.gson.Gson; 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 spark.Request; import spark.Response; -import spark.Route; -public class MonthInOutSum implements Route +public class MonthInOutSum implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -28,7 +28,13 @@ public class MonthInOutSum implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("startDate") || !req.queryParams().contains("endDate")) { @@ -85,4 +91,10 @@ public class MonthInOutSum implements Route return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 f82a3e082..33014e1c7 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 @@ -2,13 +2,19 @@ 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 logger.Logger; import spark.Request; import spark.Response; -import spark.Route; -public class DatabaseDelete implements Route +public class DatabaseDelete implements AdvancedRoute { private DatabaseHandler handler; private Settings settings; @@ -20,20 +26,34 @@ public class DatabaseDelete implements Route } @Override - public Object handle(Request req, Response res) throws Exception - { + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) + { try { handler.deleteDatabase(); - handler = new DatabaseHandler(settings); + 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() + ")"); return ""; } - catch(IllegalStateException ex) + catch(IllegalStateException | SQLException ex) { halt(500, "Internal Server Error"); } return ""; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java index c9d88f6a7..a108686d4 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/database/DatabaseExport.java @@ -4,14 +4,14 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.Settings; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseExporter; import logger.Logger; import spark.Request; import spark.Response; -import spark.Route; -public class DatabaseExport implements Route +public class DatabaseExport implements AdvancedRoute { private Settings settings; private Gson gson; @@ -23,7 +23,12 @@ public class DatabaseExport implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + } + + @Override + public Object handleRequest(Request req, Response res) { try { @@ -38,4 +43,9 @@ public class DatabaseExport implements Route return ""; } + + @Override + public void after() + { + } } \ No newline at end of file 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 fa3e9b13a..ef4612be1 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 @@ -5,18 +5,18 @@ import static spark.Spark.halt; 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 logger.Logger; import spark.Request; import spark.Response; -import spark.Route; -public class DatabaseImport implements Route +public class DatabaseImport implements AdvancedRoute { private DatabaseHandler handler; - private DatabaseTagHandler tagHandler; + private DatabaseTagHandler tagHandler; private Gson gson; public DatabaseImport(DatabaseHandler handler, DatabaseTagHandler tagHandler, Gson gson) @@ -27,10 +27,17 @@ public class DatabaseImport implements Route } @Override - public Object handle(Request req, Response res) throws Exception - { - String databaseJSON = req.body(); - + public void before() + { + handler.connect(); + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) + { + String databaseJSON = req.body(); + try { Database database = gson.fromJson(databaseJSON, Database.class); @@ -44,7 +51,14 @@ public class DatabaseImport implements Route Logger.error(e); halt(500, "Internal Server Error"); } - + return ""; } + + @Override + public void after() + { + handler.closeConnection(); + tagHandler.closeConnection(); + } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java index 199b19a2a..93abe9865 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/InformationGet.java @@ -4,12 +4,12 @@ import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.serverconnection.ServerInformation; import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.Settings; import spark.Request; import spark.Response; -import spark.Route; -public class InformationGet implements Route +public class InformationGet implements AdvancedRoute { private Gson gson; private VersionInformation versionInfo; @@ -23,7 +23,12 @@ public class InformationGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + } + + @Override + public Object handleRequest(Request req, Response res) { ServerInformation serverInfo = new ServerInformation(); serverInfo.setDatabaseUrl(settings.getDatabaseUrl()); @@ -35,4 +40,9 @@ public class InformationGet implements Route return gson.toJson(serverInfo); } + + @Override + public void after() + { + } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java index eb77c8cbc..c2720a593 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/info/VersionGet.java @@ -3,11 +3,11 @@ package de.deadlocker8.budgetmasterserver.server.info; import com.google.gson.Gson; import de.deadlocker8.budgetmaster.logic.updater.VersionInformation; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import spark.Request; import spark.Response; -import spark.Route; -public class VersionGet implements Route +public class VersionGet implements AdvancedRoute { private Gson gson; private VersionInformation versionInfo; @@ -19,8 +19,18 @@ public class VersionGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + } + + @Override + public Object handleRequest(Request req, Response res) { return gson.toJson(versionInfo); } + + @Override + public void after() + { + } } \ No newline at end of file diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java index 366973c54..daf3cd948 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmasterserver/server/log/LogDelete.java @@ -2,12 +2,12 @@ package de.deadlocker8.budgetmasterserver.server.log; import static spark.Spark.halt; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import logger.Logger; import spark.Request; import spark.Response; -import spark.Route; -public class LogDelete implements Route +public class LogDelete implements AdvancedRoute { public LogDelete() { @@ -15,8 +15,13 @@ public class LogDelete implements Route } @Override - public Object handle(Request req, Response res) throws Exception - { + public void before() + { + } + + @Override + public Object handleRequest(Request req, Response res) + { try { Logger.clearLogFile(); @@ -29,4 +34,9 @@ public class LogDelete implements Route return ""; } + + @Override + public void after() + { + } } \ No newline at end of file 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 86a78819e..d4a2dd0f3 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 @@ -4,12 +4,12 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; import spark.Request; import spark.Response; -import spark.Route; -public class PaymentAdd implements Route +public class PaymentAdd implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -21,45 +21,57 @@ public class PaymentAdd implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("amount") || - !req.queryParams().contains("date") || - !req.queryParams().contains("categoryID") || - !req.queryParams().contains("name") || - !req.queryParams().contains("description")) - { - halt(400, "Bad Request"); - } - - int amount = 0; - int categoryID = 0; - - try - { - amount = Integer.parseInt(req.queryMap("amount").value()); - categoryID = Integer.parseInt(req.queryMap("categoryID").value()); + !req.queryParams().contains("date") || + !req.queryParams().contains("categoryID") || + !req.queryParams().contains("name") || + !req.queryParams().contains("description")) + { + halt(400, "Bad Request"); + } + + int amount = 0; + int categoryID = 0; try - { - Integer id = handler.addNormalPayment(amount, - req.queryMap("date").value(), - categoryID, - req.queryMap("name").value(), - req.queryMap("description").value()); + { + amount = Integer.parseInt(req.queryMap("amount").value()); + categoryID = Integer.parseInt(req.queryMap("categoryID").value()); + + try + { + Integer id = handler.addNormalPayment(amount, + req.queryMap("date").value(), + categoryID, + req.queryMap("name").value(), + req.queryMap("description").value()); - return gson.toJson(id); + return gson.toJson(id); + } + catch(IllegalStateException ex) + { + halt(500, "Internal Server Error"); + } } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); + catch(Exception e) + { + halt(400, "Bad Request"); } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; + + return ""; + } + + @Override + public void after() + { + handler.closeConnection(); } } \ No newline at end of file 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 f0a059d1c..45a593f1e 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 @@ -4,13 +4,13 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class PaymentDelete implements Route +public class PaymentDelete implements AdvancedRoute { private DatabaseHandler handler; private DatabaseTagHandler tagHandler; @@ -22,7 +22,13 @@ public class PaymentDelete implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -63,4 +69,11 @@ public class PaymentDelete implements Route return ""; } + + @Override + public void after() + { + handler.closeConnection(); + tagHandler.closeConnection(); + } } \ No newline at end of file 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 da8e08181..545d4ccd2 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 @@ -9,13 +9,13 @@ import org.joda.time.DateTime; 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.server.updater.RepeatingPaymentUpdater; import spark.Request; import spark.Response; -import spark.Route; -public class PaymentGet implements Route +public class PaymentGet implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -24,10 +24,16 @@ public class PaymentGet implements Route { this.handler = handler; this.gson = gson; + } + + @Override + public void before() + { + handler.connect(); } @Override - public Object handle(Request req, Response res) throws Exception + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) { @@ -59,7 +65,7 @@ public class PaymentGet implements Route try { ArrayList<NormalPayment> payments = new ArrayList<>(); - payments.addAll(handler.getPayments(year, month)); + payments.addAll(handler.getPayments(year, month)); return gson.toJson(payments); } @@ -75,4 +81,10 @@ public class PaymentGet implements Route return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 6c4215e4a..355b6c9eb 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class PaymentUpdate implements Route +public class PaymentUpdate implements AdvancedRoute { private DatabaseHandler handler; @@ -17,54 +17,66 @@ public class PaymentUpdate implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id") || - !req.queryParams().contains("amount") || - !req.queryParams().contains("date") || - !req.queryParams().contains("categoryID") || - !req.queryParams().contains("name") || - !req.queryParams().contains("description")) - { - halt(400, "Bad Request"); - } - - int id = -1; - int amount = 0; - int categoryID = -1; - - try - { - id = Integer.parseInt(req.queryMap("id").value()); - amount = Integer.parseInt(req.queryMap("amount").value()); - categoryID = Integer.parseInt(req.queryMap("categoryID").value()); - - if(id < 0) + !req.queryParams().contains("amount") || + !req.queryParams().contains("date") || + !req.queryParams().contains("categoryID") || + !req.queryParams().contains("name") || + !req.queryParams().contains("description")) { halt(400, "Bad Request"); - } + } + + int id = -1; + int amount = 0; + int categoryID = -1; try { - handler.updateNormalPayment(id, - amount, - req.queryMap("date").value(), - categoryID, - req.queryMap("name").value(), - req.queryMap("description").value()); + id = Integer.parseInt(req.queryMap("id").value()); + amount = Integer.parseInt(req.queryMap("amount").value()); + categoryID = Integer.parseInt(req.queryMap("categoryID").value()); + + if(id < 0) + { + halt(400, "Bad Request"); + } + + try + { + handler.updateNormalPayment(id, + amount, + req.queryMap("date").value(), + categoryID, + req.queryMap("name").value(), + req.queryMap("description").value()); - return ""; - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); + return ""; + } + catch(IllegalStateException ex) + { + halt(500, "Internal Server Error"); + } + } + catch(Exception e) + { + halt(400, "Bad Request"); } - } - catch(Exception e) - { - halt(400, "Bad Request"); - } - - return ""; + + return ""; + } + + @Override + public void after() + { + handler.closeConnection(); } } \ No newline at end of file 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 72111cbff..aafc7d566 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 @@ -4,73 +4,78 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; import spark.Request; import spark.Response; -import spark.Route; -public class RepeatingPaymentAdd implements Route +public class RepeatingPaymentAdd implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; - + public RepeatingPaymentAdd(DatabaseHandler handler, Gson gson) - { + { this.handler = handler; this.gson = gson; } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { - if(!req.queryParams().contains("amount") || - !req.queryParams().contains("date") || - !req.queryParams().contains("categoryID") || - !req.queryParams().contains("name") || - !req.queryParams().contains("repeatInterval") || - !req.queryParams().contains("repeatEndDate") || - !req.queryParams().contains("repeatMonthDay") || - !req.queryParams().contains("description")) - { + if(!req.queryParams().contains("amount") + || !req.queryParams().contains("date") + || !req.queryParams().contains("categoryID") + || !req.queryParams().contains("name") + || !req.queryParams().contains("repeatInterval") + || !req.queryParams().contains("repeatEndDate") + || !req.queryParams().contains("repeatMonthDay") + || !req.queryParams().contains("description")) + { halt(400, "Bad Request"); - } - + } + int amount = 0; int categoryID = 0; int repeatInterval = 0; int repeatMonthDay = 0; - + try - { + { amount = Integer.parseInt(req.queryMap("amount").value()); categoryID = Integer.parseInt(req.queryMap("categoryID").value()); repeatInterval = Integer.parseInt(req.queryMap("repeatInterval").value()); repeatMonthDay = Integer.parseInt(req.queryMap("repeatMonthDay").value()); - + try - { - Integer id = handler.addRepeatingPayment(amount, - req.queryMap("date").value(), - categoryID, - req.queryMap("name").value(), - req.queryMap("description").value(), - repeatInterval, - req.queryMap("repeatEndDate").value(), - repeatMonthDay); + { + Integer id = handler.addRepeatingPayment(amount, req.queryMap("date").value(), categoryID, req.queryMap("name").value(), req.queryMap("description").value(), repeatInterval, req.queryMap("repeatEndDate").value(), repeatMonthDay); return gson.toJson(id); } catch(IllegalStateException ex) - { + { halt(500, "Internal Server Error"); } } catch(Exception e) - { + { e.printStackTrace(); halt(400, "Bad Request"); } - + return ""; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 0df804985..a40740932 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 @@ -4,13 +4,13 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class RepeatingPaymentDelete implements Route +public class RepeatingPaymentDelete implements AdvancedRoute { private DatabaseHandler handler; private DatabaseTagHandler tagHandler; @@ -22,7 +22,14 @@ public class RepeatingPaymentDelete implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -63,4 +70,11 @@ public class RepeatingPaymentDelete implements Route return ""; } + + @Override + public void after() + { + handler.closeConnection(); + tagHandler.closeConnection(); + } } \ No newline at end of file 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 5349848f2..b90492539 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 @@ -5,12 +5,12 @@ import static spark.Spark.halt; 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 spark.Request; import spark.Response; -import spark.Route; -public class RepeatingPaymentGet implements Route +public class RepeatingPaymentGet implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -22,7 +22,13 @@ public class RepeatingPaymentGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -58,4 +64,10 @@ public class RepeatingPaymentGet implements Route return ""; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 ce617830a..4a5aa61f4 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 @@ -9,13 +9,13 @@ import org.joda.time.DateTime; 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.server.updater.RepeatingPaymentUpdater; import spark.Request; import spark.Response; -import spark.Route; -public class RepeatingPaymentGetAll implements Route +public class RepeatingPaymentGetAll implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -27,7 +27,13 @@ public class RepeatingPaymentGetAll implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) { @@ -75,4 +81,10 @@ public class RepeatingPaymentGetAll implements Route return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 a8f40253b..cd6bc6855 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 @@ -4,12 +4,12 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; import spark.Request; import spark.Response; -import spark.Route; -public class PaymentMaxAmount implements Route +public class PaymentMaxAmount implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -21,7 +21,13 @@ public class PaymentMaxAmount implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { try { @@ -43,4 +49,10 @@ public class PaymentMaxAmount implements Route return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 9c7f3b639..3feb937d9 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 @@ -12,13 +12,13 @@ import de.deadlocker8.budgetmaster.logic.payment.Payment; 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 spark.Request; import spark.Response; -import spark.Route; -public class PaymentSearch implements Route +public class PaymentSearch implements AdvancedRoute { private DatabaseHandler handler; private DatabaseTagHandler tagHandler; @@ -29,49 +29,6 @@ public class PaymentSearch implements Route this.tagHandler = tagHandler; } - @Override - public Object handle(Request req, Response res) throws Exception - { - try - { - ArrayList<Payment> payments = new ArrayList<>(); - ArrayList<NormalPayment> normalPayments = handler.getAllNormalPayments(); - ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); - for(Payment currentPayment : normalPayments) - { - if(meetsCriteria(req, currentPayment)) - { - payments.add(currentPayment); - } - } - - for(Payment currentPayment : repeatingPayments) - { - if(meetsCriteria(req, currentPayment)) - { - payments.add(currentPayment); - } - } - - Collections.sort(payments, new Comparator<Payment>() - { - @Override - public int compare(Payment o1, Payment o2) - { - return o1.getDate().compareTo(o2.getDate()); - } - }); - - return PaymentJSONSerializer.serializePaymentList(payments); - } - catch(IllegalStateException ex) - { - halt(500, "Internal Server Error"); - } - - return null; - } - private boolean meetsCriteria(Request req, Payment payment) { boolean otherChecksThanAmount = false; @@ -186,4 +143,61 @@ public class PaymentSearch implements Route return true; } + + @Override + public void before() + { + handler.connect(); + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) + { + try + { + ArrayList<Payment> payments = new ArrayList<>(); + ArrayList<NormalPayment> normalPayments = handler.getAllNormalPayments(); + ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); + for(Payment currentPayment : normalPayments) + { + if(meetsCriteria(req, currentPayment)) + { + payments.add(currentPayment); + } + } + + for(Payment currentPayment : repeatingPayments) + { + if(meetsCriteria(req, currentPayment)) + { + payments.add(currentPayment); + } + } + + Collections.sort(payments, new Comparator<Payment>() + { + @Override + public int compare(Payment o1, Payment o2) + { + return o1.getDate().compareTo(o2.getDate()); + } + }); + + return PaymentJSONSerializer.serializePaymentList(payments); + } + catch(IllegalStateException ex) + { + halt(500, "Internal Server Error"); + } + + return null; + } + + @Override + public void after() + { + handler.closeConnection(); + tagHandler.closeConnection(); + } } \ No newline at end of file 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 1ebdf5004..b1a1e0083 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 @@ -4,12 +4,12 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseHandler; import spark.Request; import spark.Response; -import spark.Route; -public class RestGet implements Route +public class RestGet implements AdvancedRoute { private DatabaseHandler handler; private Gson gson; @@ -21,7 +21,13 @@ public class RestGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + handler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("year") || !req.queryParams().contains("month")) { @@ -59,4 +65,10 @@ public class RestGet implements Route return null; } + + @Override + public void after() + { + handler.closeConnection(); + } } \ No newline at end of file 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 64b71a28e..ade526516 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class TagMatchAddForPayment implements Route +public class TagMatchAddForPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; @@ -17,7 +17,13 @@ public class TagMatchAddForPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("tagID") || !req.queryParams().contains("paymentID")) { @@ -49,4 +55,10 @@ public class TagMatchAddForPayment implements Route return ""; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 3eb1871ca..58dd6ce2d 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class TagMatchAddForRepeatingPayment implements Route +public class TagMatchAddForRepeatingPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; @@ -17,7 +17,13 @@ public class TagMatchAddForRepeatingPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("tagID") || !req.queryParams().contains("repeatingPaymentID")) { @@ -49,4 +55,10 @@ public class TagMatchAddForRepeatingPayment implements Route return ""; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 9f676c0e8..fa472b60e 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 @@ -2,13 +2,13 @@ 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.server.updater.TagUpdater; import spark.Request; import spark.Response; -import spark.Route; -public class TagMatchDeleteForPayment implements Route +public class TagMatchDeleteForPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; @@ -18,7 +18,13 @@ public class TagMatchDeleteForPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("tagID") || !req.queryParams().contains("paymentID")) { @@ -53,4 +59,10 @@ public class TagMatchDeleteForPayment implements Route return ""; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 ab0e5a1c6..1573d495e 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 @@ -2,13 +2,13 @@ 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.server.updater.TagUpdater; import spark.Request; import spark.Response; -import spark.Route; -public class TagMatchDeleteForRepeatingPayment implements Route +public class TagMatchDeleteForRepeatingPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; @@ -18,7 +18,13 @@ public class TagMatchDeleteForRepeatingPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("tagID") || !req.queryParams().contains("repeatingPaymentID")) { @@ -53,4 +59,10 @@ public class TagMatchDeleteForRepeatingPayment implements Route return ""; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 9d1bb9852..5ebc766c7 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 @@ -4,12 +4,12 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; import spark.Request; import spark.Response; -import spark.Route; -public class TagMatchExistingForPayment implements Route +public class TagMatchExistingForPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -21,7 +21,13 @@ public class TagMatchExistingForPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("tagID") || !req.queryParams().contains("paymentID")) { @@ -51,4 +57,10 @@ public class TagMatchExistingForPayment implements Route return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 5b6fda13a..e44eca844 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 @@ -4,12 +4,12 @@ import static spark.Spark.halt; import com.google.gson.Gson; +import de.deadlocker8.budgetmasterserver.logic.AdvancedRoute; import de.deadlocker8.budgetmasterserver.logic.database.DatabaseTagHandler; import spark.Request; import spark.Response; -import spark.Route; -public class TagMatchExistingForRepeatingPayment implements Route +public class TagMatchExistingForRepeatingPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -21,7 +21,13 @@ public class TagMatchExistingForRepeatingPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("tagID") || !req.queryParams().contains("repeatingPaymentID")) { @@ -51,4 +57,10 @@ public class TagMatchExistingForRepeatingPayment implements Route return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 08a93ad9b..e558cc36c 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 @@ -7,12 +7,12 @@ import java.util.ArrayList; 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 spark.Request; import spark.Response; -import spark.Route; -public class TagMatchGetAllForPayment implements Route +public class TagMatchGetAllForPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -24,7 +24,13 @@ public class TagMatchGetAllForPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("paymentID")) { @@ -64,4 +70,10 @@ public class TagMatchGetAllForPayment implements Route return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 7f8b44650..2dc02afaa 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 @@ -7,12 +7,12 @@ import java.util.ArrayList; 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 spark.Request; import spark.Response; -import spark.Route; -public class TagMatchGetAllForRepeatingPayment implements Route +public class TagMatchGetAllForRepeatingPayment implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -24,7 +24,13 @@ public class TagMatchGetAllForRepeatingPayment implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("repeatingPaymentID")) { @@ -64,4 +70,10 @@ public class TagMatchGetAllForRepeatingPayment implements Route return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 edd44ab77..18c892ccc 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class TagAdd implements Route +public class TagAdd implements AdvancedRoute { private DatabaseTagHandler tagHandler; @@ -17,7 +17,13 @@ public class TagAdd implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("name")) { @@ -41,4 +47,10 @@ public class TagAdd implements Route return ""; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 75d45f927..3b08cee13 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 @@ -2,12 +2,12 @@ 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 spark.Request; import spark.Response; -import spark.Route; -public class TagDelete implements Route +public class TagDelete implements AdvancedRoute { private DatabaseTagHandler tagHandler; @@ -17,7 +17,13 @@ public class TagDelete implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -53,4 +59,10 @@ public class TagDelete implements Route return ""; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 782df0b96..4d1704b9a 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 @@ -5,12 +5,12 @@ import static spark.Spark.halt; 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 spark.Request; import spark.Response; -import spark.Route; -public class TagGet implements Route +public class TagGet implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -22,7 +22,13 @@ public class TagGet implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("id")) { @@ -57,4 +63,10 @@ public class TagGet implements Route } return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 46f523613..9cac86976 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 @@ -7,12 +7,12 @@ import java.util.ArrayList; 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 spark.Request; import spark.Response; -import spark.Route; -public class TagGetAll implements Route +public class TagGetAll implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -24,7 +24,13 @@ public class TagGetAll implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { try { @@ -39,4 +45,10 @@ public class TagGetAll implements Route return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 a4e7a8989..7e2816d16 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 @@ -5,12 +5,12 @@ import static spark.Spark.halt; 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 spark.Request; import spark.Response; -import spark.Route; -public class TagGetByName implements Route +public class TagGetByName implements AdvancedRoute { private DatabaseTagHandler tagHandler; private Gson gson; @@ -22,7 +22,13 @@ public class TagGetByName implements Route } @Override - public Object handle(Request req, Response res) throws Exception + public void before() + { + tagHandler.connect(); + } + + @Override + public Object handleRequest(Request req, Response res) { if(!req.queryParams().contains("name")) { @@ -41,4 +47,10 @@ public class TagGetByName implements Route return null; } + + @Override + public void after() + { + tagHandler.closeConnection(); + } } \ No newline at end of file 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 0ad4e5f88..5c22f4c42 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 @@ -24,8 +24,8 @@ public class RepeatingPaymentUpdater public void updateRepeatingPayments(DateTime now) { try - { - ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); + { + ArrayList<RepeatingPayment> repeatingPayments = handler.getAllRepeatingPayments(); ArrayList<LatestRepeatingPayment> latest = handler.getLatestRepeatingPaymentEntries(); for(RepeatingPayment currentPayment : repeatingPayments) diff --git a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties index 5cb7f01cc..59c2f78bb 100644 --- a/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties +++ b/BudgetMasterServer/src/main/resources/de/deadlocker8/budgetmasterserver/_en.properties @@ -1,7 +1,7 @@ app.name=BudgetMasterServer -version.code=11 -version.name=1.7.0 -version.date=26.10.17 +version.code=12 +version.name=1.8.0_alpha +version.date=03.11.17 author=Robert Goldmann category.none=No Category 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 80f6b7c66..bf5afebfa 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 @@ -7,9 +7,14 @@ 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; +import org.junit.After; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -19,6 +24,7 @@ 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 tools.Localization; @@ -36,21 +42,36 @@ public class DatabaseHandlerTest System.out.println(settings); DatabaseHandler handler = new DatabaseHandler(settings); handler.deleteDatabase(); - handler = new DatabaseHandler(settings); - databaseHandler = handler; + 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.close(); + databaseHandler = new DatabaseHandler(settings); Localization.init("de/deadlocker8/budgetmaster/"); Localization.loadLanguage(Locale.ENGLISH); } - catch(IOException | URISyntaxException e) + catch(IOException | URISyntaxException | SQLException e) { fail(e.getMessage()); } - } + } + + @Before + public void before() + { + databaseHandler.connect(); + } + + @After + public void after() + { + databaseHandler.closeConnection(); + } @Test public void testLastInsertID() - { + { 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 @@ -252,7 +273,7 @@ public class DatabaseHandlerTest expectedPayment.getDescription()); int idPayment2 = databaseHandler.getLastInsertID(); - assertEquals(1000, databaseHandler.getRest(2017, 3)); + assertEquals(1000, databaseHandler.getRest(2017, 3)); assertEquals(200, databaseHandler.getRestForAllPreviousMonths(2017, 4)); databaseHandler.deletePayment(idPayment1); 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 6414890b6..8a811f873 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 @@ -8,9 +8,14 @@ import java.io.IOException; 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; +import org.junit.After; +import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; @@ -24,6 +29,7 @@ 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; @@ -42,21 +48,39 @@ public class DatabaseImportExportTest try { //init - settings = Utils.loadSettings(); + settings = Utils.loadSettings(); + System.out.println(settings); DatabaseHandler handler = new DatabaseHandler(settings); handler.deleteDatabase(); - handler = new DatabaseHandler(settings); - databaseHandler = handler; + 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.close(); + databaseHandler = new DatabaseHandler(settings); tagHandler = new DatabaseTagHandler(settings); Localization.init("de/deadlocker8/budgetmaster/"); Localization.loadLanguage(Locale.ENGLISH); } - catch(IOException | URISyntaxException e) + catch(IOException | URISyntaxException | SQLException e) { fail(e.getMessage()); - } + } } + + @Before + public void before() + { + databaseHandler.connect(); + tagHandler.connect(); + } + + @After + public void after() + { + databaseHandler.closeConnection(); + tagHandler.closeConnection(); + } @Test public void testImport() @@ -111,6 +135,10 @@ public class DatabaseImportExportTest try { 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.close(); databaseHandler = new DatabaseHandler(settings); File file = Paths.get("src/test/resources/de/deadlocker8/budgetmaster/import.json").toFile(); 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 475c0f7f4..aa8270b53 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 @@ -8,16 +8,24 @@ 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; +import org.junit.After; +import org.junit.Before; import org.junit.BeforeClass; 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 tools.Localization; public class DatabaseTagHandlerTest { @@ -33,15 +41,33 @@ public class DatabaseTagHandlerTest System.out.println(settings); DatabaseHandler handler = new DatabaseHandler(settings); handler.deleteDatabase(); - handler = new DatabaseHandler(settings); + 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.close(); tagHandler = new DatabaseTagHandler(settings); + + Localization.init("de/deadlocker8/budgetmaster/"); + Localization.loadLanguage(Locale.ENGLISH); } - catch(IOException | URISyntaxException e) + catch(IOException | URISyntaxException | SQLException e) { fail(e.getMessage()); } } + @Before + public void before() + { + tagHandler.connect(); + } + + @After + public void after() + { + tagHandler.closeConnection(); + } + @Test public void testTag() { -- GitLab