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 {
|
public enum OptionsType {
|
||||||
LITERALS,
|
LITERALS,
|
||||||
UNSORTED_LITERALS,
|
HARDCODED_LITERALS,
|
||||||
STRINGS_VIA_DATATYPE_PROPERTY,
|
STRINGS_VIA_DATATYPE_PROPERTY,
|
||||||
INDIVIDUALS_VIA_OBJECT_PROPERTY,
|
INDIVIDUALS_VIA_OBJECT_PROPERTY,
|
||||||
INDIVIDUALS_VIA_VCLASS,
|
INDIVIDUALS_VIA_VCLASS,
|
||||||
|
@ -205,8 +205,8 @@ public class Field {
|
||||||
public void setOptionsType(String s) {
|
public void setOptionsType(String s) {
|
||||||
if ("LITERALS".equals(s)) {
|
if ("LITERALS".equals(s)) {
|
||||||
setOptionsType(Field.OptionsType.LITERALS);
|
setOptionsType(Field.OptionsType.LITERALS);
|
||||||
} else if ("UNSORTED_LITERALS".equals(s)) {
|
} else if ("HARDCODED_LITERALS".equals(s)) {
|
||||||
setOptionsType(Field.OptionsType.UNSORTED_LITERALS);
|
setOptionsType(Field.OptionsType.HARDCODED_LITERALS);
|
||||||
} else if ("STRINGS_VIA_DATATYPE_PROPERTY".equalsIgnoreCase(s)) {
|
} else if ("STRINGS_VIA_DATATYPE_PROPERTY".equalsIgnoreCase(s)) {
|
||||||
setOptionsType(Field.OptionsType.STRINGS_VIA_DATATYPE_PROPERTY);
|
setOptionsType(Field.OptionsType.STRINGS_VIA_DATATYPE_PROPERTY);
|
||||||
} else if ("INDIVIDUALS_VIA_OBJECT_PROPERTY".equalsIgnoreCase(s)) {
|
} else if ("INDIVIDUALS_VIA_OBJECT_PROPERTY".equalsIgnoreCase(s)) {
|
||||||
|
|
|
@ -59,11 +59,30 @@ public class SelectListGenerator {
|
||||||
Field.OptionsType optionsType = field.getOptionsType();
|
Field.OptionsType optionsType = field.getOptionsType();
|
||||||
String vclassUri = null;
|
String vclassUri = null;
|
||||||
switch (optionsType){
|
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:
|
case LITERALS:
|
||||||
List<List<String>> literalOptions = field.getLiteralOptions();
|
List<List<String>> literalOptions = field.getLiteralOptions();
|
||||||
if (literalOptions==null) {
|
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>();
|
return new HashMap <String,String>();
|
||||||
}
|
}
|
||||||
for(Object obj: ((Iterable)literalOptions)){
|
for(Object obj: ((Iterable)literalOptions)){
|
||||||
|
|
|
@ -456,7 +456,7 @@ public class InputElementFormattingTag extends TagSupport {
|
||||||
}
|
}
|
||||||
|
|
||||||
Field thisField = editConfig.getField(getName());
|
Field thisField = editConfig.getField(getName());
|
||||||
if (! thisField.getOptionsType().equals(Field.OptionsType.UNSORTED_LITERALS)) {
|
if (! thisField.getOptionsType().equals(Field.OptionsType.HARDCODED_LITERALS)) {
|
||||||
optionsMap = getSortedMap(optionsMap);
|
optionsMap = getSortedMap(optionsMap);
|
||||||
}
|
}
|
||||||
Iterator iter = optionsMap.keySet().iterator();
|
Iterator iter = optionsMap.keySet().iterator();
|
||||||
|
|
Loading…
Add table
Reference in a new issue