Fix crash when editing an application period #117

Merged
niat8586 merged 4 commits from edit-application-period into develop 2025-03-03 07:48:47 +01:00
4 changed files with 8 additions and 27 deletions

View File

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

View File

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

View File

@ -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()));

View File

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