DS-3743 fix exposition of qualdropvalue

This commit is contained in:
Luigi Andrea Pascarelli
2017-12-05 17:28:53 +01:00
parent 14a99945c5
commit cef912143a
2 changed files with 45 additions and 16 deletions

View File

@@ -464,4 +464,11 @@ public class DCInput
return Utils.standardize(this.getSchema(), this.getElement(), this.getQualifier(), ".");
}
public boolean isQualdropValue() {
if("qualdrop_value".equals(getInputType())) {
return true;
}
return false;
}
}

View File

@@ -50,7 +50,21 @@ public class DescribeStep extends org.dspace.submit.step.DescribeStep implements
try {
DCInputSet inputConfig = inputReader.getInputsByFormName(config.getId());
for(DCInput input : inputConfig.getFields()) {
List<MetadataValue> mdv = itemService.getMetadataByMetadataString(obj.getItem(), input.getFieldName());
List<String> fieldsName = new ArrayList<String>();
if(input.isQualdropValue()) {
for(Object qualifier : input.getPairs()) {
fieldsName.add(input.getFieldName()+"."+(String)qualifier);
}
}
else {
fieldsName.add(input.getFieldName());
}
for (String fieldName : fieldsName) {
List<MetadataValue> mdv = itemService.getMetadataByMetadataString(obj.getItem(),
fieldName);
for (MetadataValue md : mdv) {
MetadataValueRest dto = new MetadataValueRest();
dto.setAuthority(md.getAuthority());
@@ -60,13 +74,21 @@ public class DescribeStep extends org.dspace.submit.step.DescribeStep implements
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 {
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<MetadataValueRest> listDto = new ArrayList<>();
listDto.add(dto);
data.getMetadata().put(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(), md.getMetadataField().getElement(), md.getMetadataField().getQualifier(), "."), listDto);
data.getMetadata()
.put(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(),
md.getMetadataField().getElement(), md.getMetadataField().getQualifier(),
"."), listDto);
}
}
}
}