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);
+            }
         }
     }