[DS-3699] manage valuepairs and vocabulary authority both controlled and required configuration setup to true

This commit is contained in:
Luigi Andrea Pascarelli
2017-10-25 17:03:45 +02:00
parent 2f5d18ab04
commit 22e9844987
2 changed files with 37 additions and 5 deletions

View File

@@ -14,9 +14,12 @@ import java.util.Map;
import java.util.HashMap;
import java.util.Enumeration;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import org.dspace.app.util.DCInput;
import org.dspace.app.util.DCInputSet;
import org.dspace.app.util.DCInputsReader;
import org.dspace.app.util.DCInputsReaderException;
import org.dspace.content.MetadataField;
import org.dspace.content.authority.service.MetadataAuthorityService;
import org.dspace.content.service.MetadataFieldService;
@@ -142,6 +145,8 @@ public class MetadataAuthorityServiceImpl implements MetadataAuthorityService
{
defaultMinConfidence = dmc;
}
autoRegisterAuthorityFromInputReader();
}
}
@@ -237,4 +242,31 @@ public class MetadataAuthorityServiceImpl implements MetadataAuthorityService
}
return copy;
}
private void autoRegisterAuthorityFromInputReader() {
try {
DCInputsReader dcInputsReader = new DCInputsReader();
for (DCInputSet dcinputSet : dcInputsReader.getAllInputs(Integer.MAX_VALUE, 0)) {
DCInput[] dcinputs = dcinputSet.getFields();
for (DCInput dcinput : dcinputs) {
if (StringUtils.isNotBlank(dcinput.getPairsType())
|| StringUtils.isNotBlank(dcinput.getVocabulary())) {
String authorityName = dcinput.getPairsType();
if(StringUtils.isBlank(authorityName)) {
authorityName = dcinput.getVocabulary();
}
if (!StringUtils.equals(dcinput.getInputType(), "qualdrop_value")) {
String fieldKey = makeFieldKey(dcinput.getSchema(), dcinput.getElement(),
dcinput.getQualifier());
controlled.put(fieldKey, true);
isAuthorityRequired.put(fieldKey, true);
}
}
}
}
} catch (DCInputsReaderException e) {
throw new IllegalStateException(e.getMessage(), e);
}
}
}

View File

@@ -359,8 +359,8 @@ public class ItemTest extends AbstractDSpaceObjectTest
// Set the item to have two pieces of metadata for dc.type and dc2.type
String dcType = "DC-TYPE";
String testType = "TEST-TYPE";
itemService.addMetadata(context, it, "dc", "type", null, null, dcType);
itemService.addMetadata(context, it, "test", "type", null, null, testType);
itemService.addMetadata(context, it, "dc", "type", null, null, dcType, "accepted", 0);
itemService.addMetadata(context, it, "test", "type", null, null, testType, "accepted", 0);
// Check that only one is returned when we ask for all dc.type values
List<MetadataValue> values = itemService.getMetadata(it, "dc", "type", null, null);