2870 Preselect national category if there's a default when editing publication metadata

This commit is contained in:
Andreas Svanberg 2024-02-27 15:06:45 +01:00
parent b5477a063b
commit 8faebeca4c

@ -11,6 +11,7 @@ import org.apache.wicket.model.LoadableDetachableModel;
import se.su.dsv.scipro.system.Language;
import javax.inject.Inject;
import java.util.List;
public class PublicationMetadataFormComponentPanel extends GenericPanel<PublicationMetadata> {
@Inject
@ -27,14 +28,22 @@ public class PublicationMetadataFormComponentPanel extends GenericPanel<Publicat
TextField<String> keywordsSwedish = new TextField<>("keywords_sv", LambdaModel.of(metadataModel, PublicationMetadata::getKeywordsSwedish, PublicationMetadata::setKeywordsSwedish));
keywordsSwedish.setVisible(inSwedish());
add(keywordsSwedish);
IModel<List<NationalSubjectCategory>> availableCategories = LoadableDetachableModel.of(nationalSubjectCategoryService::listCategories);
DropDownChoice<NationalSubjectCategory> nationalSubjectCategoryChoice = new DropDownChoice<>(
"national_subject_category",
LambdaModel.of(
metadataModel,
PublicationMetadata::getNationalSubjectCategory,
PublicationMetadata::setNationalSubjectCategory),
LoadableDetachableModel.of(nationalSubjectCategoryService::listCategories),
availableCategories,
new LambdaChoiceRenderer<>(NationalSubjectCategory::getEnglishName, NationalSubjectCategory::getId));
if (metadataModel.getObject().getNationalSubjectCategory() == null) {
availableCategories.getObject()
.stream()
.filter(NationalSubjectCategory::isPreselected)
.findAny()
.ifPresent(nationalSubjectCategoryChoice::setDefaultModelObject);
}
nationalSubjectCategoryChoice.setNullValid(true);
add(nationalSubjectCategoryChoice);
}