NIHVIVO-799 Select list type HARDCODED_LITERALS allows specification of an empty value for a select list item.

This commit is contained in:
rjy7 2010-07-14 22:44:51 +00:00
parent 33d5023f3d
commit 497f12d633
3 changed files with 25 additions and 6 deletions

View file

@ -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)) {

View file

@ -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)){

View file

@ -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();