From 695a7c78dd4adedf91c9b2a0df8ab85139126291 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Sat, 2 Mar 2019 14:50:21 +0100 Subject: [PATCH] #293 - handle if categories or tags are added, modified or deleted during one session --- .../services/FilterHelpersService.java | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/FilterHelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/FilterHelpersService.java index 66715d59e..34860d74a 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/services/FilterHelpersService.java +++ b/src/main/java/de/deadlocker8/budgetmaster/services/FilterHelpersService.java @@ -23,17 +23,38 @@ public class FilterHelpersService public FilterConfiguration getFilterConfiguration(HttpServletRequest request) { - FilterConfiguration filterConfiguration; Object sessionFilterConfiguration = request.getSession().getAttribute("filterConfiguration"); if(sessionFilterConfiguration == null) { - filterConfiguration = FilterConfiguration.DEFAULT; + FilterConfiguration filterConfiguration = FilterConfiguration.DEFAULT; filterConfiguration.setFilterCategories(getFilterCategories()); filterConfiguration.setFilterTags(getFilterTags()); return filterConfiguration; } - return (FilterConfiguration)sessionFilterConfiguration; + // update categories and tags + FilterConfiguration filterConfiguration = (FilterConfiguration)sessionFilterConfiguration; + filterConfiguration.setFilterCategories(updateObjects(filterConfiguration.getFilterCategories(), getFilterCategories())); + filterConfiguration.setFilterTags(updateObjects(filterConfiguration.getFilterTags(), getFilterTags())); + + return filterConfiguration; + } + + private List<FilterObject> updateObjects(List<FilterObject> oldObjects, List<FilterObject> newObjects) + { + for(FilterObject newObject : newObjects) + { + for(FilterObject existingObject : oldObjects) + { + if(existingObject.getID().equals(newObject.getID())) + { + newObject.setInclude(existingObject.isInclude()); + break; + } + } + } + + return newObjects; } public List<FilterObject> getFilterCategories() -- GitLab