diff --git a/dspace-api/src/main/java/org/dspace/app/util/DCInput.java b/dspace-api/src/main/java/org/dspace/app/util/DCInput.java index 3d154fa138..c444e06e5b 100644 --- a/dspace-api/src/main/java/org/dspace/app/util/DCInput.java +++ b/dspace-api/src/main/java/org/dspace/app/util/DCInput.java @@ -463,5 +463,12 @@ public class DCInput public String getFieldName() { return Utils.standardize(this.getSchema(), this.getElement(), this.getQualifier(), "."); } + + public boolean isQualdropValue() { + if("qualdrop_value".equals(getInputType())) { + return true; + } + return false; + } } diff --git a/dspace-spring-rest/src/main/java/org/dspace/app/rest/submit/step/DescribeStep.java b/dspace-spring-rest/src/main/java/org/dspace/app/rest/submit/step/DescribeStep.java index 063df7496d..f8ed657d00 100644 --- a/dspace-spring-rest/src/main/java/org/dspace/app/rest/submit/step/DescribeStep.java +++ b/dspace-spring-rest/src/main/java/org/dspace/app/rest/submit/step/DescribeStep.java @@ -50,23 +50,45 @@ public class DescribeStep extends org.dspace.submit.step.DescribeStep implements try { DCInputSet inputConfig = inputReader.getInputsByFormName(config.getId()); for(DCInput input : inputConfig.getFields()) { - List mdv = itemService.getMetadataByMetadataString(obj.getItem(), input.getFieldName()); - for(MetadataValue md : mdv) { - MetadataValueRest dto = new MetadataValueRest(); - dto.setAuthority(md.getAuthority()); - dto.setConfidence(md.getConfidence()); - dto.setLanguage(md.getLanguage()); - dto.setPlace(md.getPlace()); - dto.setValue(md.getValue()); - - String[] metadataToCheck = Utils.tokenize(md.getMetadataField().toString()); - if(data.getMetadata().containsKey(Utils.standardize(metadataToCheck[0], metadataToCheck[1], metadataToCheck[2], "."))) { - data.getMetadata().get(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(), md.getMetadataField().getElement(), md.getMetadataField().getQualifier(), ".")).add(dto); + + List fieldsName = new ArrayList(); + if(input.isQualdropValue()) { + for(Object qualifier : input.getPairs()) { + fieldsName.add(input.getFieldName()+"."+(String)qualifier); } - else { - List listDto = new ArrayList<>(); - listDto.add(dto); - data.getMetadata().put(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(), md.getMetadataField().getElement(), md.getMetadataField().getQualifier(), "."), listDto); + } + else { + fieldsName.add(input.getFieldName()); + } + + + for (String fieldName : fieldsName) { + List mdv = itemService.getMetadataByMetadataString(obj.getItem(), + fieldName); + for (MetadataValue md : mdv) { + MetadataValueRest dto = new MetadataValueRest(); + dto.setAuthority(md.getAuthority()); + dto.setConfidence(md.getConfidence()); + dto.setLanguage(md.getLanguage()); + dto.setPlace(md.getPlace()); + dto.setValue(md.getValue()); + + String[] metadataToCheck = Utils.tokenize(md.getMetadataField().toString()); + if (data.getMetadata().containsKey( + Utils.standardize(metadataToCheck[0], metadataToCheck[1], metadataToCheck[2], "."))) { + data.getMetadata() + .get(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(), + md.getMetadataField().getElement(), md.getMetadataField().getQualifier(), + ".")) + .add(dto); + } else { + List listDto = new ArrayList<>(); + listDto.add(dto); + data.getMetadata() + .put(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(), + md.getMetadataField().getElement(), md.getMetadataField().getQualifier(), + "."), listDto); + } } } }