diff --git a/src/main/java/de/deadlocker8/budgetmaster/services/FilterHelpersService.java b/src/main/java/de/deadlocker8/budgetmaster/services/FilterHelpersService.java index 66715d59e705a335866f5ac1c907f4071da4eab9..34860d74a64bcd1b829d5f1bfdbdfcbeca3d4112 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()