[DS-3699] remove model rest page for input form; add use of constant to match section type for submission-forms

This commit is contained in:
Luigi Andrea Pascarelli
2017-10-23 10:57:46 +02:00
parent 2770a13fa2
commit 14808d7700
4 changed files with 49 additions and 134 deletions

View File

@@ -13,12 +13,11 @@ import java.util.List;
import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.lang.StringUtils;
import org.dspace.app.rest.model.SubmissionFormFieldRest;
import org.dspace.app.rest.model.SubmissionFormInputTypeRest;
import org.dspace.app.rest.model.SubmissionFormPageRest;
import org.dspace.app.rest.model.SubmissionFormRest;
import org.dspace.app.rest.model.ScopeEnum;
import org.dspace.app.rest.model.SelectableMetadata;
import org.dspace.app.rest.model.SubmissionFormFieldRest;
import org.dspace.app.rest.model.SubmissionFormInputTypeRest;
import org.dspace.app.rest.model.SubmissionFormRest;
import org.dspace.app.rest.model.SubmissionVisibilityRest;
import org.dspace.app.rest.model.VisibilityEnum;
import org.dspace.app.rest.utils.AuthorityUtils;
@@ -36,7 +35,7 @@ import org.springframework.stereotype.Component;
*/
@Component
public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, SubmissionFormRest> {
private static final String INPUT_TYPE_ONEBOX = "onebox";
private static final String INPUT_TYPE_NAME = "name";
private static final String INPUT_TYPE_LOOKUP = "lookup";
@@ -44,63 +43,60 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
@Autowired
private Utils utils;
@Autowired
private AuthorityUtils authorityUtils;
@Override
public SubmissionFormRest fromModel(DCInputSet obj) {
SubmissionFormRest sd = new SubmissionFormRest();
sd.setName(obj.getFormName());
List<SubmissionFormPageRest> pages = new LinkedList<SubmissionFormPageRest>();
DCInput[] step = obj.getFields();
SubmissionFormPageRest sp = getPage(step);
pages.add(sp);
sd.setPages(pages);
DCInput[] step = obj.getFields();
List<SubmissionFormFieldRest> fields = getPage(step);
sd.setFields(fields);
return sd;
}
private SubmissionFormPageRest getPage(DCInput[] page) {
SubmissionFormPageRest ifPage = new SubmissionFormPageRest();
private List<SubmissionFormFieldRest> getPage(DCInput[] page) {
List<SubmissionFormFieldRest> fields = new LinkedList<SubmissionFormFieldRest>();
for (DCInput dcinput : page) {
fields.add(getField(dcinput));
}
ifPage.setFields(fields);
return ifPage;
return fields;
}
private SubmissionFormFieldRest getField(DCInput dcinput) {
SubmissionFormFieldRest inputField = new SubmissionFormFieldRest();
List<SelectableMetadata> selectableMetadata = new ArrayList<SelectableMetadata>();
inputField.setLabel(dcinput.getLabel());
inputField.setHints(dcinput.getHints());
inputField.setMandatoryMessage(dcinput.getWarning());
inputField.setMandatory(dcinput.isRequired());
inputField.setScope(ScopeEnum.fromString(dcinput.getScope()));
inputField
.setVisibility(new SubmissionVisibilityRest(VisibilityEnum.fromString(dcinput.isReadOnly("submission")?"read-only":null),
VisibilityEnum.fromString(dcinput.isReadOnly("workflow")?"read-only":null)));
inputField.setVisibility(new SubmissionVisibilityRest(
VisibilityEnum.fromString(dcinput.isReadOnly("submission") ? "read-only" : null),
VisibilityEnum.fromString(dcinput.isReadOnly("workflow") ? "read-only" : null)));
inputField.setRepeatable(dcinput.isRepeatable());
SubmissionFormInputTypeRest inputRest = new SubmissionFormInputTypeRest();
inputRest.setRegex(dcinput.getRegex());
if (!StringUtils.equalsIgnoreCase(dcinput.getInputType(), "qualdrop_value")) {
// value-pair and vocabulary are a special kind of authorities
String inputType = dcinput.getInputType();
SelectableMetadata selMd = new SelectableMetadata();
if (authorityUtils.isChoice(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())) {
inputRest.setType(getPresentation(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier(), inputType));
selMd.setAuthority(
authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
selMd.setClosed(authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
}
else {
inputRest.setType(inputType);
inputRest.setType(
getPresentation(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier(), inputType));
selMd.setAuthority(authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(),
dcinput.getQualifier()));
selMd.setClosed(
authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
} else {
inputRest.setType(inputType);
}
selMd.setMetadata(utils.getMetadataKey(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
selectableMetadata.add(selMd);
@@ -113,32 +109,30 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
selMd.setLabel((String) pairs.get(idx));
selMd.setMetadata(utils.getMetadataKey(dcinput.getSchema(), dcinput.getElement(), pairs.get(idx + 1)));
if (authorityUtils.isChoice(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())) {
selMd.setAuthority(
authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(), pairs.get(idx + 1)));
selMd.setClosed(authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
selMd.setAuthority(authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(),
pairs.get(idx + 1)));
selMd.setClosed(
authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
}
selectableMetadata.add(selMd);
}
}
}
inputField.setInput(inputRest);
inputField.setSelectableMetadata(selectableMetadata);
return inputField;
}
private String getPresentation(String schema, String element, String qualifier, String inputType)
{
private String getPresentation(String schema, String element, String qualifier, String inputType) {
String presentation = authorityUtils.getPresentation(schema, element, qualifier);
if(StringUtils.isNotBlank(presentation)) {
if(INPUT_TYPE_ONEBOX.equals(inputType)) {
if(AuthorityUtils.PRESENTATION_TYPE_SUGGEST.equals(presentation)) {
if (StringUtils.isNotBlank(presentation)) {
if (INPUT_TYPE_ONEBOX.equals(inputType)) {
if (AuthorityUtils.PRESENTATION_TYPE_SUGGEST.equals(presentation)) {
return INPUT_TYPE_ONEBOX;
}
else if(AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
} else if (AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
return INPUT_TYPE_LOOKUP;
}
}
else if(INPUT_TYPE_NAME.equals(inputType)) {
if(AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
} else if (INPUT_TYPE_NAME.equals(inputType)) {
if (AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
return INPUT_TYPE_LOOKUP_NAME;
}
}

View File

@@ -1,80 +0,0 @@
/**
* The contents of this file are subject to the license and copyright
* detailed in the LICENSE and NOTICE files at the root of the source
* tree and available online at
*
* http://www.dspace.org/license/
*/
package org.dspace.app.rest.model;
import java.util.List;
import java.util.Objects;
import org.apache.commons.lang3.ObjectUtils;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
/**
* The InputFormPage REST Resource. It is not addressable directly, only used
* as inline object in the InputForm resource
*
* @author Andrea Bollini (andrea.bollini at 4science.it)
*
*/
@JsonInclude(value=Include.NON_NULL)
public class SubmissionFormPageRest {
private String header;
private boolean mandatory;
private List<SubmissionFormFieldRest> fields;
public String getHeader() {
return header;
}
public void setHeader(String header) {
this.header = header;
}
public boolean isMandatory() {
return mandatory;
}
public void setMandatory(boolean mandatory) {
this.mandatory = mandatory;
}
public List<SubmissionFormFieldRest> getFields() {
return fields;
}
public void setFields(List<SubmissionFormFieldRest> fields) {
this.fields = fields;
}
@JsonIgnore
public ScopeEnum getScope() {
ScopeEnum scope = fields.get(0).getScope();
for (SubmissionFormFieldRest field : fields) {
if (!Objects.equals(field.getScope(), scope)) {
return null;
}
}
return scope;
}
@JsonIgnore
public SubmissionVisibilityRest getVisibility() {
SubmissionVisibilityRest visibility = fields.get(0).getVisibility();
for (SubmissionFormFieldRest field : fields) {
if (!Objects.equals(field.getVisibility(), visibility)) {
return null;
}
}
return visibility;
}
}

View File

@@ -26,7 +26,7 @@ public class SubmissionFormRest extends BaseObjectRest<String> {
private String name;
private List<SubmissionFormPageRest> pages;
private List<SubmissionFormFieldRest> fields;
@Override
public String getId() {
@@ -41,14 +41,6 @@ public class SubmissionFormRest extends BaseObjectRest<String> {
return name;
}
public void setPages(List<SubmissionFormPageRest> pages) {
this.pages = pages;
}
public List<SubmissionFormPageRest> getPages() {
return pages;
}
@Override
public String getType() {
return NAME;
@@ -63,4 +55,12 @@ public class SubmissionFormRest extends BaseObjectRest<String> {
public String getCategory() {
return CATEGORY;
}
public List<SubmissionFormFieldRest> getFields() {
return fields;
}
public void setFields(List<SubmissionFormFieldRest> fields) {
this.fields = fields;
}
}

View File

@@ -16,6 +16,7 @@ import org.dspace.app.rest.model.SubmissionFormRest;
import org.dspace.app.rest.model.SubmissionSectionRest;
import org.dspace.app.rest.model.hateoas.annotations.RelNameDSpaceResource;
import org.dspace.app.rest.utils.Utils;
import org.dspace.app.util.SubmissionStepConfig;
import org.springframework.hateoas.Link;
import org.springframework.web.util.UriComponentsBuilder;
@@ -31,7 +32,7 @@ public class SubmissionSectionResource extends DSpaceResource<SubmissionSectionR
public SubmissionSectionResource(SubmissionSectionRest sd, Utils utils, String... rels) {
super(sd, utils, rels);
if("input-form".equals(sd.getSectionType())) {
if(SubmissionStepConfig.INPUT_FORM_STEP_NAME.equals(sd.getSectionType())) {
RestResourceController methodOn = methodOn(RestResourceController.class, SubmissionFormRest.CATEGORY, SubmissionFormRest.NAME);
UriComponentsBuilder uriComponentsBuilder = linkTo(methodOn
.findRel(null, SubmissionFormRest.CATEGORY, English.plural(SubmissionFormRest.NAME), sd.getId(), "", null, null, null))