NIHVIVO-799 Select list type HARDCODED_LITERALS allows specification of an empty value for a select list item.
This commit is contained in:
parent
33d5023f3d
commit
497f12d633
3 changed files with 25 additions and 6 deletions
|
@ -18,7 +18,7 @@ public class Field {
|
|||
|
||||
public enum OptionsType {
|
||||
LITERALS,
|
||||
UNSORTED_LITERALS,
|
||||
HARDCODED_LITERALS,
|
||||
STRINGS_VIA_DATATYPE_PROPERTY,
|
||||
INDIVIDUALS_VIA_OBJECT_PROPERTY,
|
||||
INDIVIDUALS_VIA_VCLASS,
|
||||
|
@ -205,8 +205,8 @@ public class Field {
|
|||
public void setOptionsType(String s) {
|
||||
if ("LITERALS".equals(s)) {
|
||||
setOptionsType(Field.OptionsType.LITERALS);
|
||||
} else if ("UNSORTED_LITERALS".equals(s)) {
|
||||
setOptionsType(Field.OptionsType.UNSORTED_LITERALS);
|
||||
} else if ("HARDCODED_LITERALS".equals(s)) {
|
||||
setOptionsType(Field.OptionsType.HARDCODED_LITERALS);
|
||||
} else if ("STRINGS_VIA_DATATYPE_PROPERTY".equalsIgnoreCase(s)) {
|
||||
setOptionsType(Field.OptionsType.STRINGS_VIA_DATATYPE_PROPERTY);
|
||||
} else if ("INDIVIDUALS_VIA_OBJECT_PROPERTY".equalsIgnoreCase(s)) {
|
||||
|
|
|
@ -59,11 +59,30 @@ public class SelectListGenerator {
|
|||
Field.OptionsType optionsType = field.getOptionsType();
|
||||
String vclassUri = null;
|
||||
switch (optionsType){
|
||||
case UNSORTED_LITERALS: // deliberate fall-through case! Like LITERALS, but should not be sorted - order as specified
|
||||
case HARDCODED_LITERALS: // not auto-sorted, and empty values not removed or replaced
|
||||
List<List<String>> hardcodedLiteralOptions = field.getLiteralOptions();
|
||||
if (hardcodedLiteralOptions==null) {
|
||||
log.error("no literalOptions List found for field \""+fieldName+"\" in SelectListGenerator.getOptions() when OptionsType UNSORTED_LITERALS specified");
|
||||
return new HashMap <String,String>();
|
||||
}
|
||||
for(Object obj: ((Iterable)hardcodedLiteralOptions)){
|
||||
List<String> literalPair = (List)obj;
|
||||
String value=(String)literalPair.get(0);
|
||||
if( value != null){ // allow empty string as a value
|
||||
String label=(String)literalPair.get(1);
|
||||
if (label!=null && label.trim().length() > 0) {
|
||||
optionsMap.put(value,label);
|
||||
} else {
|
||||
optionsMap.put(value, value);
|
||||
}
|
||||
++optionsCount;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case LITERALS:
|
||||
List<List<String>> literalOptions = field.getLiteralOptions();
|
||||
if (literalOptions==null) {
|
||||
log.error("no literalOptions List found for field \""+fieldName+"\" in SelectListGenerator.getOptions() when OptionsType LITERALS or UNSORTED_LITERALS specified");
|
||||
log.error("no literalOptions List found for field \""+fieldName+"\" in SelectListGenerator.getOptions() when OptionsType LITERALS specified");
|
||||
return new HashMap <String,String>();
|
||||
}
|
||||
for(Object obj: ((Iterable)literalOptions)){
|
||||
|
|
|
@ -456,7 +456,7 @@ public class InputElementFormattingTag extends TagSupport {
|
|||
}
|
||||
|
||||
Field thisField = editConfig.getField(getName());
|
||||
if (! thisField.getOptionsType().equals(Field.OptionsType.UNSORTED_LITERALS)) {
|
||||
if (! thisField.getOptionsType().equals(Field.OptionsType.HARDCODED_LITERALS)) {
|
||||
optionsMap = getSortedMap(optionsMap);
|
||||
}
|
||||
Iterator iter = optionsMap.keySet().iterator();
|
||||
|
|
Loading…
Add table
Reference in a new issue