From 1e109e2de851292f3cc586138b8747caeacc1767 Mon Sep 17 00:00:00 2001 From: Andreas Svanberg <andreass@dsv.su.se> Date: Thu, 20 Feb 2025 16:01:19 +0100 Subject: [PATCH] Fix editing application periods Instead of clearing an attached entity's persistent set, remove the things we want to remove and add the things that are missing. --- .../java/se/su/dsv/scipro/match/ApplicationPeriod.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/se/su/dsv/scipro/match/ApplicationPeriod.java b/core/src/main/java/se/su/dsv/scipro/match/ApplicationPeriod.java index 58a91f8a52..b21a586607 100755 --- a/core/src/main/java/se/su/dsv/scipro/match/ApplicationPeriod.java +++ b/core/src/main/java/se/su/dsv/scipro/match/ApplicationPeriod.java @@ -176,10 +176,12 @@ public class ApplicationPeriod extends DomainObject { return Collections.unmodifiableSet(answerSet); } - public void setProjectTypes(Iterable<ProjectType> projectTypes) { - this.projectTypes.clear(); + public void setProjectTypes(Set<ProjectType> projectTypes) { + this.projectTypes.removeIf(appt -> !projectTypes.contains(appt.getProjectType())); for (ProjectType pt : projectTypes) { - this.projectTypes.add(new ApplicationPeriodProjectType(this, pt)); + if (this.projectTypes.stream().noneMatch(appt -> appt.getProjectType().equals(pt))) { + addProjectType(pt); + } } }