From 497f12d633f886dab0fec0d3603fd8bfe2c0e2f6 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Wed, 14 Jul 2010 22:44:51 +0000 Subject: [PATCH] NIHVIVO-799 Select list type HARDCODED_LITERALS allows specification of an empty value for a select list item. --- .../vitro/webapp/edit/n3editing/Field.java | 6 ++--- .../edit/n3editing/SelectListGenerator.java | 23 +++++++++++++++++-- .../jsptags/InputElementFormattingTag.java | 2 +- 3 files changed, 25 insertions(+), 6 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java index 49b9f02e8..ba32bb6be 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/Field.java @@ -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)) { diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java index faef9a71f..f4916fef7 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/edit/n3editing/SelectListGenerator.java @@ -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> 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 (); + } + for(Object obj: ((Iterable)hardcodedLiteralOptions)){ + List 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> 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 (); } for(Object obj: ((Iterable)literalOptions)){ diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/InputElementFormattingTag.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/InputElementFormattingTag.java index fd724ff07..353bbe44e 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/InputElementFormattingTag.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/jsptags/InputElementFormattingTag.java @@ -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();