[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.HashMap;
import java.util.Enumeration; import java.util.Enumeration;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger; 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.MetadataField;
import org.dspace.content.authority.service.MetadataAuthorityService; import org.dspace.content.authority.service.MetadataAuthorityService;
import org.dspace.content.service.MetadataFieldService; import org.dspace.content.service.MetadataFieldService;
@@ -142,6 +145,8 @@ public class MetadataAuthorityServiceImpl implements MetadataAuthorityService
{ {
defaultMinConfidence = dmc; defaultMinConfidence = dmc;
} }
autoRegisterAuthorityFromInputReader();
} }
} }
@@ -237,4 +242,31 @@ public class MetadataAuthorityServiceImpl implements MetadataAuthorityService
} }
return copy; 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 // Set the item to have two pieces of metadata for dc.type and dc2.type
String dcType = "DC-TYPE"; String dcType = "DC-TYPE";
String testType = "TEST-TYPE"; String testType = "TEST-TYPE";
itemService.addMetadata(context, it, "dc", "type", null, null, dcType); itemService.addMetadata(context, it, "dc", "type", null, null, dcType, "accepted", 0);
itemService.addMetadata(context, it, "test", "type", null, null, testType); 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 // Check that only one is returned when we ask for all dc.type values
List<MetadataValue> values = itemService.getMetadata(it, "dc", "type", null, null); List<MetadataValue> values = itemService.getMetadata(it, "dc", "type", null, null);