From b12d3670a52c1356a3743298b0bbf448031ebcf5 Mon Sep 17 00:00:00 2001 From: Andreas Svanberg Date: Thu, 20 Feb 2025 12:59:26 +0100 Subject: [PATCH 1/3] Remove references to setProjectTypes that are not used Confuses developers into thinking an application period's project types are modified in more places than they actually are. --- .../applicationperiod/AdminApplicationPeriodsPanel.java | 8 +------- .../dsv/scipro/datatables/target/AddTargetLinkPanel.java | 7 +------ .../su/dsv/scipro/projectpartner/ProjectPartnerPage.java | 8 +------- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/view/src/main/java/se/su/dsv/scipro/applicationperiod/AdminApplicationPeriodsPanel.java b/view/src/main/java/se/su/dsv/scipro/applicationperiod/AdminApplicationPeriodsPanel.java index 307d7858f3..b8bb7d9e76 100755 --- a/view/src/main/java/se/su/dsv/scipro/applicationperiod/AdminApplicationPeriodsPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/applicationperiod/AdminApplicationPeriodsPanel.java @@ -123,13 +123,7 @@ public class AdminApplicationPeriodsPanel extends Panel { item.add( new DisplayMultiplesPanel<>( s, - new ListAdapterModel<>( - LambdaModel.of( - iModel, - ApplicationPeriod::getProjectTypes, - ApplicationPeriod::setProjectTypes - ) - ) + new ListAdapterModel<>(iModel.map(ApplicationPeriod::getProjectTypes)) ) { @Override public Component getComponent(String componentId, IModel t) { diff --git a/view/src/main/java/se/su/dsv/scipro/datatables/target/AddTargetLinkPanel.java b/view/src/main/java/se/su/dsv/scipro/datatables/target/AddTargetLinkPanel.java index 2f4d027af5..8c4c98a6d0 100644 --- a/view/src/main/java/se/su/dsv/scipro/datatables/target/AddTargetLinkPanel.java +++ b/view/src/main/java/se/su/dsv/scipro/datatables/target/AddTargetLinkPanel.java @@ -22,12 +22,7 @@ public class AddTargetLinkPanel extends Panel { public AddTargetLinkPanel(String id, final IModel model) { super(id, model); add( - new ListView<>( - "list", - new ListAdapterModel<>( - LambdaModel.of(model, ApplicationPeriod::getProjectTypes, ApplicationPeriod::setProjectTypes) - ) - ) { + new ListView<>("list", new ListAdapterModel<>(model.map(ApplicationPeriod::getProjectTypes))) { @Override protected void populateItem(ListItem item) { item.add(new Label("pc", item.getModelObject().getName())); diff --git a/view/src/main/java/se/su/dsv/scipro/projectpartner/ProjectPartnerPage.java b/view/src/main/java/se/su/dsv/scipro/projectpartner/ProjectPartnerPage.java index a70588801a..ca3736e027 100755 --- a/view/src/main/java/se/su/dsv/scipro/projectpartner/ProjectPartnerPage.java +++ b/view/src/main/java/se/su/dsv/scipro/projectpartner/ProjectPartnerPage.java @@ -76,13 +76,7 @@ public class ProjectPartnerPage extends AbstractIdeaProjectPage implements MenuH } ); final IModel> matchableTypes = getMatchableTypes( - new ListAdapterModel<>( - LambdaModel.of( - applicationPeriod, - ApplicationPeriod::getProjectTypes, - ApplicationPeriod::setProjectTypes - ) - ) + new ListAdapterModel<>(applicationPeriod.map(ApplicationPeriod::getProjectTypes)) ); panelContainer.add( new ListView<>("ads", matchableTypes) { -- 2.39.5 From 0d5bdd69edecd875cd1231c9e2489417f71fe57c Mon Sep 17 00:00:00 2001 From: Andreas Svanberg Date: Thu, 20 Feb 2025 15:56:52 +0100 Subject: [PATCH 2/3] Remove unused method --- .../main/java/se/su/dsv/scipro/match/ApplicationPeriod.java | 4 ---- 1 file changed, 4 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 9dc48661d9..58a91f8a52 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 @@ -186,8 +186,4 @@ public class ApplicationPeriod extends DomainObject { public void addProjectType(ProjectType projectType) { this.projectTypes.add(new ApplicationPeriodProjectType(this, projectType)); } - - public void removeProjectType(ProjectType projectType) { - this.projectTypes.removeIf(next -> next.getProjectType().equals(projectType)); - } } -- 2.39.5 From 1e109e2de851292f3cc586138b8747caeacc1767 Mon Sep 17 00:00:00 2001 From: Andreas Svanberg Date: Thu, 20 Feb 2025 16:01:19 +0100 Subject: [PATCH 3/3] 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 projectTypes) { - this.projectTypes.clear(); + public void setProjectTypes(Set 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); + } } } -- 2.39.5