mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 10:04:21 +00:00
[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:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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;
|
||||
}
|
||||
}
|
@@ -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))
|
||||
|
Reference in New Issue
Block a user