First part of forms for InProceedings

pull/1/head
Jens Pelzetter 2019-11-18 14:46:39 +01:00
parent 6c0714804d
commit 0a07628b00
4 changed files with 447 additions and 0 deletions

View File

@ -0,0 +1,117 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.contenttypes.ui;
import org.scientificcms.publications.InProceedings;
import org.scientificcms.publications.Proceedings;
import org.scientificcms.publications.ProceedingsManager;
import org.scientificcms.publications.PublicationRepository;
import java.util.Map;
import javax.enterprise.context.RequestScoped;
import javax.inject.Inject;
import javax.transaction.Transactional;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
@RequestScoped
public class InProceedingsController {
public static final String START_PAGE = "startPage";
public static final String END_PAGE = "endPage";
@Inject
private ProceedingsManager proceedingsManager;
@Inject
private PublicationRepository publicationRepository;
@Transactional(Transactional.TxType.REQUIRED)
public void saveInProceedings(
final long inProceedingsId,
final Map<String, Object> data
) {
final InProceedings inProceedings = publicationRepository
.findByIdAndType(inProceedingsId, InProceedings.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No InProceedings publication with ID %d found.",
inProceedingsId
)
)
);
if (data.containsKey(START_PAGE)) {
inProceedings.setStartPage((Integer) data.get(START_PAGE));
}
if (data.containsKey(END_PAGE)) {
inProceedings.setEndPage((Integer) data.get(END_PAGE));
}
publicationRepository.save(inProceedings);
}
public void setProceedings(
final long inProceedingsId, final long proceedingsId
) {
final InProceedings inProceedings = publicationRepository
.findByIdAndType(inProceedingsId, InProceedings.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No InProceedings publication with ID %d found.",
inProceedingsId
)
)
);
final Proceedings proccedings = publicationRepository
.findByIdAndType(proceedingsId, Proceedings.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No Proceedings with ID %d found", proceedingsId
)
)
);
proceedingsManager.addPaperToCollectedVolume(inProceedings, proccedings);
}
public void unsetProcceedings(
final long inProceedingsId, final long proceedingsId
) {
final InProceedings inProceedings = publicationRepository
.findByIdAndType(inProceedingsId, InProceedings.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No InProceedings publication with ID %d found.",
inProceedingsId
)
)
);
final Proceedings proccedings = publicationRepository
.findByIdAndType(proceedingsId, Proceedings.class)
.orElseThrow(
() -> new IllegalArgumentException(
String.format(
"No Proceedings with ID %d found", proceedingsId
)
)
);
proceedingsManager.removeArticleFromCollectedVolume(
inProceedings, proccedings);
}
}

View File

@ -0,0 +1,64 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicItemForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.globalization.GlobalizedMessage;
import org.scientificcms.publications.SciPublicationsConstants;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class InProceedingsProceedingsStep extends SimpleEditStep {
private static final String ADD_PROCEEDINGS_STEP = "addProceedings";
public InProceedingsProceedingsStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent,
final StringParameter selectedLangParam
) {
this(itemModel, parent, selectedLangParam, null);
}
public InProceedingsProceedingsStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent,
final StringParameter selectedLangParam,
final String prefix) {
super(itemModel, parent, selectedLangParam, prefix);
final BasicItemForm addProceedingsForm
= new InProceedingsProceedingsForm(
itemModel
);
add(
ADD_PROCEEDINGS_STEP,
new GlobalizedMessage(
"publications.ui.inProceedings.addProceedings",
SciPublicationsConstants.BUNDLE
),
new WorkflowLockedComponentAccess(
addProceedingsForm,
itemModel
),
addProceedingsForm.getSaveCancelSection().getCancelButton());
final InProceedingsProceedingsSheet sheet
= new InProceedingsProceedingsSheet(
itemModel
);
setDisplayComponent(sheet);
}
}

View File

@ -0,0 +1,129 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.Component;
import com.arsdigita.bebop.Label;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.cms.ui.authoring.AuthoringKitWizard;
import com.arsdigita.cms.ui.authoring.BasicPageForm;
import com.arsdigita.cms.ui.authoring.SimpleEditStep;
import com.arsdigita.cms.ui.workflow.WorkflowLockedComponentAccess;
import com.arsdigita.globalization.GlobalizedMessage;
import com.arsdigita.toolbox.ui.DomainObjectPropertySheet;
import org.scientificcms.publications.SciPublicationsConstants;
import static com.arsdigita.cms.contenttypes.ui.PublicationPropertiesStep.*;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class InProceedingsPropertiesStep
extends PublicationPropertiesStep {
private final ItemSelectionModel itemModel;
private final StringParameter selectedLangParam;
public InProceedingsPropertiesStep(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent,
final StringParameter selectedLangParam
) {
super(itemModel, parent, selectedLangParam);
this.selectedLangParam = selectedLangParam;
this.itemModel = itemModel;
}
public static Component getInProceedingsPropertySheet(
final ItemSelectionModel itemModel,
final StringParameter selectedLangParam
) {
final DomainObjectPropertySheet sheet
= (DomainObjectPropertySheet) PublicationWithPublisherPropertiesStep
.getPublicationPropertySheet(
itemModel, selectedLangParam
);
sheet.add(
new GlobalizedMessage(
"publications.ui.inproceedings.pages_from",
SciPublicationsConstants.BUNDLE
),
InProceedingsController.START_PAGE
);
sheet.add(
new GlobalizedMessage(
"publications.ui.inproceedings.pages_to",
SciPublicationsConstants.BUNDLE
),
InProceedingsController.END_PAGE);
return sheet;
}
@Override
protected void addBasicProperties(
final ItemSelectionModel itemModel,
final AuthoringKitWizard parent
) {
final SimpleEditStep basicProperties = new SimpleEditStep(
itemModel,
parent,
selectedLangParam,
EDIT_SHEET_NAME
);
final BasicPageForm editBasicSheet = new InProceedingsPropertyForm(
itemModel, this
);
basicProperties.add(
EDIT_SHEET_NAME,
new GlobalizedMessage(
"publications.ui.inproceedings.edit_basic_sheet",
SciPublicationsConstants.BUNDLE
),
new WorkflowLockedComponentAccess(
editBasicSheet, itemModel
),
editBasicSheet.getSaveCancelSection().getCancelButton());
basicProperties.setDisplayComponent(
getInProceedingsPropertySheet(itemModel, selectedLangParam)
);
getSegmentedPanel().addSegment(
new Label(
new GlobalizedMessage(
"publications.ui.publications.basic_properties",
SciPublicationsConstants.BUNDLE
)
),
basicProperties);
}
@Override
public void addSteps(
final ItemSelectionModel itemModel, final AuthoringKitWizard parent
) {
super.addSteps(itemModel, parent);
addStep(
new InProceedingsProceedingsStep(
itemModel, parent, selectedLangParam
),
new GlobalizedMessage(
"publications.ui.inProceedings.proceedings",
SciPublicationsConstants.BUNDLE
)
);
}
}

View File

@ -0,0 +1,137 @@
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package com.arsdigita.cms.contenttypes.ui;
import com.arsdigita.bebop.FormData;
import com.arsdigita.bebop.FormProcessException;
import com.arsdigita.bebop.PageState;
import com.arsdigita.bebop.event.FormInitListener;
import com.arsdigita.bebop.event.FormProcessListener;
import com.arsdigita.bebop.event.FormSectionEvent;
import com.arsdigita.bebop.event.FormSubmissionListener;
import com.arsdigita.bebop.form.TextField;
import com.arsdigita.bebop.parameters.IntegerParameter;
import com.arsdigita.bebop.parameters.ParameterModel;
import com.arsdigita.bebop.parameters.StringParameter;
import com.arsdigita.cms.ItemSelectionModel;
import com.arsdigita.globalization.GlobalizedMessage;
import org.libreccm.cdi.utils.CdiUtil;
import org.scientificcms.publications.InProceedings;
import org.scientificcms.publications.SciPublicationsConstants;
import org.scientificcms.publications.contenttypes.InProceedingsItem;
import java.util.HashMap;
import java.util.Map;
/**
*
* @author <a href="mailto:jens.pelzetter@googlemail.com">Jens Pelzetter</a>
*/
public class InProceedingsPropertyForm extends PublicationPropertyForm
implements FormProcessListener, FormInitListener, FormSubmissionListener {
public static final String ID = "InProceedingsEdit";
private InProceedingsPropertiesStep step;
public InProceedingsPropertyForm(
final ItemSelectionModel itemModel,
final StringParameter selectedLangParam
) {
this(itemModel, null, selectedLangParam);
}
public InProceedingsPropertyForm(
final ItemSelectionModel itemModel,
final InProceedingsPropertiesStep step,
final StringParameter selectedLangParam
) {
super(itemModel, step, selectedLangParam);
this.step = step;
addSubmissionListener(this);
}
@Override
protected void addWidgets() {
super.addWidgets();
final ParameterModel pagesFromParam = new IntegerParameter(
InProceedingsController.START_PAGE);
final TextField pagesFrom = new TextField(pagesFromParam);
pagesFrom.setLabel(
new GlobalizedMessage(
"publications.ui.inproceedings.pages_from",
SciPublicationsConstants.BUNDLE
)
);
add(pagesFrom);
ParameterModel pagesToParam = new IntegerParameter(
InProceedingsController.END_PAGE
);
final TextField pagesTo = new TextField(pagesToParam);
pagesTo.setLabel(
new GlobalizedMessage(
"publications.ui.inproceedings.pages_to",
SciPublicationsConstants.BUNDLE
)
);
add(pagesTo);
}
@Override
public void init(final FormSectionEvent event) throws FormProcessException {
super.init(event);
final FormData data = event.getFormData();
final InProceedingsItem inProceedingsItem = (InProceedingsItem) super
.initBasicWidgets(event);
final InProceedings inProceedings = inProceedingsItem.getPublication();
data.put(
InProceedingsController.START_PAGE, inProceedings.getStartPage()
);
data.put(
InProceedingsController.END_PAGE, inProceedings.getEndPage()
);
}
@Override
public void process(final FormSectionEvent event)
throws FormProcessException {
super.process(event);
final FormData formData = event.getFormData();
final PageState state = event.getPageState();
final InProceedingsItem inProceedingsItem = (InProceedingsItem) super
.processBasicWidgets(event);
if ((inProceedingsItem != null)
&& getSaveCancelSection().getSaveButton().isSelected(state)) {
final Map<String, Object> data = new HashMap<>();
data.put(
InProceedingsController.START_PAGE,
formData.get(InProceedingsController.START_PAGE)
);
data.put(
InProceedingsController.END_PAGE,
formData.get(InProceedingsController.END_PAGE)
);
final InProceedingsController controller = CdiUtil
.createCdiUtil()
.findBean(InProceedingsController.class);
controller.saveInProceedings(
inProceedingsItem.getPublication().getPublicationId(), data
);
}
}
}