From bc3b5e81b13e8baaf0d7eb20d13438ac654f2f30 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Sat, 13 Aug 2022 14:59:42 +0200 Subject: [PATCH] Controller for the extended properties step of an InProceedings publication --- .../InProceedingsExtendedPropertiesStep.java | 167 ++++++++++++++++++ 1 file changed, 167 insertions(+) create mode 100644 sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/InProceedingsExtendedPropertiesStep.java diff --git a/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/InProceedingsExtendedPropertiesStep.java b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/InProceedingsExtendedPropertiesStep.java new file mode 100644 index 0000000..96fa941 --- /dev/null +++ b/sci-publications/src/main/java/org/scientificcms/publications/ui/contenttypes/InProceedingsExtendedPropertiesStep.java @@ -0,0 +1,167 @@ +package org.scientificcms.publications.ui.contenttypes; + +import org.libreccm.security.AuthorizationRequired; +import org.librecms.ui.contentsections.documents.MvcAuthoringStepDef; +import org.librecms.ui.contentsections.documents.MvcAuthoringSteps; +import org.scientificcms.publications.InProceedings; +import org.scientificcms.publications.contenttypes.InProceedingsItem; +import org.scientificcms.publications.contenttypes.MonographItem; +import org.scientificcms.publications.ui.SciPublicationsUiConstants; + +import javax.enterprise.context.RequestScoped; +import javax.mvc.Controller; +import javax.transaction.Transactional; +import javax.ws.rs.FormParam; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; + +/** + * + * @author Jens Pelzetter + */ +@RequestScoped +@Path(MvcAuthoringSteps.PATH_PREFIX + + InProceedingsExtendedPropertiesStep.EDIT_STEP_URL_FRAGMENT +) +@Controller +@MvcAuthoringStepDef( + bundle = SciPublicationsUiConstants.BUNDLE, + descriptionKey = "authoringsteps.extendedproperties.description", + labelKey = "authoringsteps.extendedproperties.label", + supportedDocumentType = MonographItem.class +) +public class InProceedingsExtendedPropertiesStep + extends AbstractPublicationExtendedPropertiesStep { + + public static final String EDIT_STEP_URL_FRAGMENT + = "inproceeedings-extendedproperties"; + + @Override + public Class getStepClass() { + return InProceedingsExtendedPropertiesStep.class; + } + + @Override + protected Class getPublicationClass() { + return InProceedings.class; + } + + @Override + protected String getEditStepUrlFragment() { + return EDIT_STEP_URL_FRAGMENT; + } + + @Override + protected String getStepTemplatePath() { + return "org/scientificcms/contenttypes/ui/inproceedings/edit-extended-properties.xhtml"; + } + + @GET + @Path("/") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String showStep( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath + ) { + return super.showStep(sectionIdentifier, documentPath); + } + + @POST + @Path("/properties") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String updateProperties( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @FormParam("languageOfPublication") + final String languageOfPublicationParam, + @FormParam("peerReviewed") + final String peerReviewedParam, + @FormParam("yearFirstPublished") + final String yearFirstPublishedParam + ) { + return super.updateProperties( + sectionIdentifier, + documentPath, + languageOfPublicationParam, + peerReviewedParam, + yearFirstPublishedParam + ); + } + + @POST + @Path("/series") + @AuthorizationRequired + @Transactional + @Override + public String addSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @FormParam("seriesIdentifier") + final String seriesIdentifier, + @FormParam("volumeOfSeries") + final String volumeOfSeries + ) { + return super.addSeries( + sectionIdentifier, + documentPath, + seriesIdentifier, + volumeOfSeries + ); + } + + @POST + @Path("/series/{volumeInSeriesUuid}") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String editVolumeInSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @PathParam("volumeInSeriesUuid") + final String volumeInSeriesUuid, + @FormParam("volumeOfSeries") + final String volumeOfSeries + ) { + return super.editVolumeInSeries( + sectionIdentifier, + documentPath, + volumeInSeriesUuid, + volumeOfSeries + ); + } + + @POST + @Path("/series/{volumeInSeriesUuid}/remove") + @AuthorizationRequired + @Transactional(Transactional.TxType.REQUIRED) + @Override + public String removeVolumeInSeries( + @PathParam(MvcAuthoringSteps.SECTION_IDENTIFIER_PATH_PARAM) + final String sectionIdentifier, + @PathParam(MvcAuthoringSteps.DOCUMENT_PATH_PATH_PARAM_NAME) + final String documentPath, + @PathParam("volumeInSeriesUuid") + final String volumeInSeriesUuid + ) { + return super.removeVolumeInSeries( + sectionIdentifier, + documentPath, + volumeInSeriesUuid + ); + } + +}