Fix crash when editing an application period ()

Fixes 

## How to test
1. Log in as admin
2. Go to "Match / Application periods"
3. Click the edit icon (6th column)
4. Click "Save"

Co-authored-by: Nico Athanassiadis <nico@dsv.su.se>
Reviewed-on: 
Reviewed-by: Nico Athanassiadis <nico@dsv.su.se>
Co-authored-by: Andreas Svanberg <andreass@dsv.su.se>
Co-committed-by: Andreas Svanberg <andreass@dsv.su.se>
This commit is contained in:
Andreas Svanberg 2025-03-03 07:48:46 +01:00 committed by Nico Athanassiadis
parent ec70ea5596
commit a71eeb5e2c
4 changed files with 8 additions and 27 deletions
core/src/main/java/se/su/dsv/scipro/match
view/src/main/java/se/su/dsv/scipro

@ -176,18 +176,16 @@ 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);
}
}
}
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));
}
}

@ -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<ProjectType> t) {

@ -22,12 +22,7 @@ public class AddTargetLinkPanel extends Panel {
public AddTargetLinkPanel(String id, final IModel<ApplicationPeriod> 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<ProjectType> item) {
item.add(new Label("pc", item.getModelObject().getName()));

@ -76,13 +76,7 @@ public class ProjectPartnerPage extends AbstractIdeaProjectPage implements MenuH
}
);
final IModel<? extends List<ProjectType>> matchableTypes = getMatchableTypes(
new ListAdapterModel<>(
LambdaModel.of(
applicationPeriod,
ApplicationPeriod::getProjectTypes,
ApplicationPeriod::setProjectTypes
)
)
new ListAdapterModel<>(applicationPeriod.map(ApplicationPeriod::getProjectTypes))
);
panelContainer.add(
new ListView<>("ads", matchableTypes) {