NIHVIVO-799 Added select list type UNSORTED_LITERALS to specify a list of literals with no alpha sorting. Allows putting "Select one" as first option without getting sorted into the middle of the list.

This commit is contained in:
rjy7 2010-07-14 22:14:29 +00:00
parent 1b93c6f85a
commit 33d5023f3d
3 changed files with 10 additions and 2 deletions

View file

@ -18,6 +18,7 @@ public class Field {
public enum OptionsType { public enum OptionsType {
LITERALS, LITERALS,
UNSORTED_LITERALS,
STRINGS_VIA_DATATYPE_PROPERTY, STRINGS_VIA_DATATYPE_PROPERTY,
INDIVIDUALS_VIA_OBJECT_PROPERTY, INDIVIDUALS_VIA_OBJECT_PROPERTY,
INDIVIDUALS_VIA_VCLASS, INDIVIDUALS_VIA_VCLASS,
@ -204,6 +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)) {
setOptionsType(Field.OptionsType.UNSORTED_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,10 +59,11 @@ 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 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 LITERAL specified"); log.error("no literalOptions List found for field \""+fieldName+"\" in SelectListGenerator.getOptions() when OptionsType LITERALS or UNSORTED_LITERALS specified");
return new HashMap <String,String>(); return new HashMap <String,String>();
} }
for(Object obj: ((Iterable)literalOptions)){ for(Object obj: ((Iterable)literalOptions)){

View file

@ -454,7 +454,11 @@ public class InputElementFormattingTag extends TagSupport {
} else { } else {
out.print("<select "+classStr+" id=\""+getId()+"\" name=\""+getName()+"\">"); out.print("<select "+classStr+" id=\""+getId()+"\" name=\""+getName()+"\">");
} }
optionsMap = getSortedMap(optionsMap);
Field thisField = editConfig.getField(getName());
if (! thisField.getOptionsType().equals(Field.OptionsType.UNSORTED_LITERALS)) {
optionsMap = getSortedMap(optionsMap);
}
Iterator iter = optionsMap.keySet().iterator(); Iterator iter = optionsMap.keySet().iterator();
while (iter.hasNext()) { while (iter.hasNext()) {
String key = (String) iter.next(); String key = (String) iter.next();