diff --git a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java index dac43f66a8a5509a5a5958c64a80d75aa40ff7ee..86191f4c14ed4a065a880a7bc5f38934abd8f4df 100644 --- a/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java +++ b/BudgetMasterCore/src/main/java/de/deadlocker8/budgetmaster/logic/serverconnection/ServerConnection.java @@ -333,7 +333,7 @@ public class ServerConnection public ArrayList<Payment> getPaymentsForSearch(String query, boolean searchName, boolean searchDescription, boolean searchCategoryName, boolean searchTags, boolean searchAmount, int minAmount, int maxAmount) throws Exception { - String urlString = settings.getUrl() + "/payment/search?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&query=" + query; + String urlString = settings.getUrl() + "/payment/search?secret=" + Helpers.getURLEncodedString(settings.getSecret()) + "&query=" + Helpers.getURLEncodedString(query); if(searchName) { urlString += "&name=" + 1; 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 f48eeeb12bacdf97f0d7ab0104407b9e4605e3e7..9c7f3b639ded27953e5531f5d04c5823f125f87a 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 @@ -74,6 +74,8 @@ public class PaymentSearch implements Route private boolean meetsCriteria(Request req, Payment payment) { + boolean otherChecksThanAmount = false; + if(req.queryMap("query").value().toLowerCase().equals("")) return checkAmount(req, payment); @@ -87,31 +89,27 @@ public class PaymentSearch implements Route if(req.queryParams().contains("name")) { + otherChecksThanAmount = true; if(payment.getName().toLowerCase().contains(req.queryMap("query").value().toLowerCase())) { return checkAmount(req, payment); } - else - { - return false; - } } if(req.queryParams().contains("description")) { + otherChecksThanAmount = true; if(payment.getDescription().toLowerCase().contains(req.queryMap("query").value().toLowerCase())) { return checkAmount(req, payment); } - else - { - return false; - } } if(req.queryParams().contains("categoryName")) { + otherChecksThanAmount = true; int id = payment.getCategoryID(); + //TODO if(id == -1) return false; @@ -120,14 +118,11 @@ public class PaymentSearch implements Route { return checkAmount(req, payment); } - else - { - return false; - } } if(req.queryParams().contains("tags")) { + otherChecksThanAmount = true; ArrayList<Integer> tagIDs = new ArrayList<>(); if(payment instanceof NormalPayment) { @@ -149,30 +144,19 @@ public class PaymentSearch implements Route { return checkAmount(req, payment); } - else - { - return false; - } } } } } - - /* - * check here again if amount should be considered - * otherwise the following situation is evaluated incorrectly: - * - * -at least one of the previous criteria is enabled (e.g. search by name) - * -payment doesn't match the criteria - * --> checkAmount() is being processed - * --> if amount is not in request (search shouldn't search by amount) the checkAmount()-Method returns true - * --> payment that doesn't match the criteria AND shouldn't be searched by amount should be evaluated as FALSE instead of TRUE - */ - if(req.queryParams().contains("minAmount") && req.queryParams().contains("maxAmount")) + + if(otherChecksThanAmount) + { + return false; + } + else { return checkAmount(req, payment); } - return false; } private boolean checkAmount(Request req, Payment payment)