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(), "."); return Utils.standardize(this.getSchema(), this.getElement(), this.getQualifier(), ".");
} }
public boolean isQualdropValue() {
if("qualdrop_value".equals(getInputType())) {
return true;
}
return false;
}
} }

View File

@@ -50,8 +50,22 @@ public class DescribeStep extends org.dspace.submit.step.DescribeStep implements
try { try {
DCInputSet inputConfig = inputReader.getInputsByFormName(config.getId()); DCInputSet inputConfig = inputReader.getInputsByFormName(config.getId());
for(DCInput input : inputConfig.getFields()) { for(DCInput input : inputConfig.getFields()) {
List<MetadataValue> mdv = itemService.getMetadataByMetadataString(obj.getItem(), input.getFieldName());
for(MetadataValue md : mdv) { 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(); MetadataValueRest dto = new MetadataValueRest();
dto.setAuthority(md.getAuthority()); dto.setAuthority(md.getAuthority());
dto.setConfidence(md.getConfidence()); dto.setConfidence(md.getConfidence());
@@ -60,13 +74,21 @@ public class DescribeStep extends org.dspace.submit.step.DescribeStep implements
dto.setValue(md.getValue()); dto.setValue(md.getValue());
String[] metadataToCheck = Utils.tokenize(md.getMetadataField().toString()); String[] metadataToCheck = Utils.tokenize(md.getMetadataField().toString());
if(data.getMetadata().containsKey(Utils.standardize(metadataToCheck[0], metadataToCheck[1], metadataToCheck[2], "."))) { if (data.getMetadata().containsKey(
data.getMetadata().get(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(), md.getMetadataField().getElement(), md.getMetadataField().getQualifier(), ".")).add(dto); Utils.standardize(metadataToCheck[0], metadataToCheck[1], metadataToCheck[2], "."))) {
} data.getMetadata()
else { .get(Utils.standardize(md.getMetadataField().getMetadataSchema().getName(),
md.getMetadataField().getElement(), md.getMetadataField().getQualifier(),
"."))
.add(dto);
} else {
List<MetadataValueRest> listDto = new ArrayList<>(); List<MetadataValueRest> listDto = new ArrayList<>();
listDto.add(dto); 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);
}
} }
} }
} }