[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.NotImplementedException;
import org.apache.commons.lang.StringUtils; 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.ScopeEnum;
import org.dspace.app.rest.model.SelectableMetadata; 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.SubmissionVisibilityRest;
import org.dspace.app.rest.model.VisibilityEnum; import org.dspace.app.rest.model.VisibilityEnum;
import org.dspace.app.rest.utils.AuthorityUtils; import org.dspace.app.rest.utils.AuthorityUtils;
@@ -52,22 +51,18 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
public SubmissionFormRest fromModel(DCInputSet obj) { public SubmissionFormRest fromModel(DCInputSet obj) {
SubmissionFormRest sd = new SubmissionFormRest(); SubmissionFormRest sd = new SubmissionFormRest();
sd.setName(obj.getFormName()); sd.setName(obj.getFormName());
List<SubmissionFormPageRest> pages = new LinkedList<SubmissionFormPageRest>();
DCInput[] step = obj.getFields(); DCInput[] step = obj.getFields();
SubmissionFormPageRest sp = getPage(step); List<SubmissionFormFieldRest> fields = getPage(step);
pages.add(sp); sd.setFields(fields);
sd.setPages(pages);
return sd; return sd;
} }
private SubmissionFormPageRest getPage(DCInput[] page) { private List<SubmissionFormFieldRest> getPage(DCInput[] page) {
SubmissionFormPageRest ifPage = new SubmissionFormPageRest();
List<SubmissionFormFieldRest> fields = new LinkedList<SubmissionFormFieldRest>(); List<SubmissionFormFieldRest> fields = new LinkedList<SubmissionFormFieldRest>();
for (DCInput dcinput : page) { for (DCInput dcinput : page) {
fields.add(getField(dcinput)); fields.add(getField(dcinput));
} }
ifPage.setFields(fields); return fields;
return ifPage;
} }
private SubmissionFormFieldRest getField(DCInput dcinput) { private SubmissionFormFieldRest getField(DCInput dcinput) {
@@ -79,9 +74,9 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
inputField.setMandatoryMessage(dcinput.getWarning()); inputField.setMandatoryMessage(dcinput.getWarning());
inputField.setMandatory(dcinput.isRequired()); inputField.setMandatory(dcinput.isRequired());
inputField.setScope(ScopeEnum.fromString(dcinput.getScope())); inputField.setScope(ScopeEnum.fromString(dcinput.getScope()));
inputField inputField.setVisibility(new SubmissionVisibilityRest(
.setVisibility(new SubmissionVisibilityRest(VisibilityEnum.fromString(dcinput.isReadOnly("submission")?"read-only":null), VisibilityEnum.fromString(dcinput.isReadOnly("submission") ? "read-only" : null),
VisibilityEnum.fromString(dcinput.isReadOnly("workflow")?"read-only":null))); VisibilityEnum.fromString(dcinput.isReadOnly("workflow") ? "read-only" : null)));
inputField.setRepeatable(dcinput.isRepeatable()); inputField.setRepeatable(dcinput.isRepeatable());
SubmissionFormInputTypeRest inputRest = new SubmissionFormInputTypeRest(); SubmissionFormInputTypeRest inputRest = new SubmissionFormInputTypeRest();
@@ -94,12 +89,13 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
SelectableMetadata selMd = new SelectableMetadata(); SelectableMetadata selMd = new SelectableMetadata();
if (authorityUtils.isChoice(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())) { if (authorityUtils.isChoice(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())) {
inputRest.setType(getPresentation(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier(), inputType)); inputRest.setType(
selMd.setAuthority( getPresentation(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier(), inputType));
authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())); selMd.setAuthority(authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(),
selMd.setClosed(authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())); dcinput.getQualifier()));
} selMd.setClosed(
else { authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
} else {
inputRest.setType(inputType); inputRest.setType(inputType);
} }
selMd.setMetadata(utils.getMetadataKey(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())); selMd.setMetadata(utils.getMetadataKey(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
@@ -113,9 +109,10 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
selMd.setLabel((String) pairs.get(idx)); selMd.setLabel((String) pairs.get(idx));
selMd.setMetadata(utils.getMetadataKey(dcinput.getSchema(), dcinput.getElement(), pairs.get(idx + 1))); selMd.setMetadata(utils.getMetadataKey(dcinput.getSchema(), dcinput.getElement(), pairs.get(idx + 1)));
if (authorityUtils.isChoice(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())) { if (authorityUtils.isChoice(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())) {
selMd.setAuthority( selMd.setAuthority(authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(),
authorityUtils.getAuthorityName(dcinput.getSchema(), dcinput.getElement(), pairs.get(idx + 1))); pairs.get(idx + 1)));
selMd.setClosed(authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier())); selMd.setClosed(
authorityUtils.isClosed(dcinput.getSchema(), dcinput.getElement(), dcinput.getQualifier()));
} }
selectableMetadata.add(selMd); selectableMetadata.add(selMd);
} }
@@ -125,20 +122,17 @@ public class SubmissionFormConverter extends DSpaceConverter<DCInputSet, Submiss
return inputField; 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); String presentation = authorityUtils.getPresentation(schema, element, qualifier);
if(StringUtils.isNotBlank(presentation)) { if (StringUtils.isNotBlank(presentation)) {
if(INPUT_TYPE_ONEBOX.equals(inputType)) { if (INPUT_TYPE_ONEBOX.equals(inputType)) {
if(AuthorityUtils.PRESENTATION_TYPE_SUGGEST.equals(presentation)) { if (AuthorityUtils.PRESENTATION_TYPE_SUGGEST.equals(presentation)) {
return INPUT_TYPE_ONEBOX; return INPUT_TYPE_ONEBOX;
} } else if (AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
else if(AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
return INPUT_TYPE_LOOKUP; return INPUT_TYPE_LOOKUP;
} }
} } else if (INPUT_TYPE_NAME.equals(inputType)) {
else if(INPUT_TYPE_NAME.equals(inputType)) { if (AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
if(AuthorityUtils.PRESENTATION_TYPE_LOOKUP.equals(presentation)) {
return INPUT_TYPE_LOOKUP_NAME; 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 String name;
private List<SubmissionFormPageRest> pages; private List<SubmissionFormFieldRest> fields;
@Override @Override
public String getId() { public String getId() {
@@ -41,14 +41,6 @@ public class SubmissionFormRest extends BaseObjectRest<String> {
return name; return name;
} }
public void setPages(List<SubmissionFormPageRest> pages) {
this.pages = pages;
}
public List<SubmissionFormPageRest> getPages() {
return pages;
}
@Override @Override
public String getType() { public String getType() {
return NAME; return NAME;
@@ -63,4 +55,12 @@ public class SubmissionFormRest extends BaseObjectRest<String> {
public String getCategory() { public String getCategory() {
return CATEGORY; 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.SubmissionSectionRest;
import org.dspace.app.rest.model.hateoas.annotations.RelNameDSpaceResource; import org.dspace.app.rest.model.hateoas.annotations.RelNameDSpaceResource;
import org.dspace.app.rest.utils.Utils; import org.dspace.app.rest.utils.Utils;
import org.dspace.app.util.SubmissionStepConfig;
import org.springframework.hateoas.Link; import org.springframework.hateoas.Link;
import org.springframework.web.util.UriComponentsBuilder; import org.springframework.web.util.UriComponentsBuilder;
@@ -31,7 +32,7 @@ public class SubmissionSectionResource extends DSpaceResource<SubmissionSectionR
public SubmissionSectionResource(SubmissionSectionRest sd, Utils utils, String... rels) { public SubmissionSectionResource(SubmissionSectionRest sd, Utils utils, String... rels) {
super(sd, utils, 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); RestResourceController methodOn = methodOn(RestResourceController.class, SubmissionFormRest.CATEGORY, SubmissionFormRest.NAME);
UriComponentsBuilder uriComponentsBuilder = linkTo(methodOn UriComponentsBuilder uriComponentsBuilder = linkTo(methodOn
.findRel(null, SubmissionFormRest.CATEGORY, English.plural(SubmissionFormRest.NAME), sd.getId(), "", null, null, null)) .findRel(null, SubmissionFormRest.CATEGORY, English.plural(SubmissionFormRest.NAME), sd.getId(), "", null, null, null))