in empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/SelectInputControl.java [219:283]
public void initOptions(UISelectOne input, TextResolver textResolver, InputInfo ii)
{
// get the options
Options options = ii.getOptions();
if (options==null)
{ // invalid options
if (ii.getColumn()!=null)
log.warn("No options given for column {}", ii.getColumn().getName());
else
log.warn("No options given for select tag {}", input.getClientId());
options = new Options();
}
// list and type
Class<?> exprType = (Class<?>)input.getAttributes().get(SelectInputControl.VALUE_EXPRESSION_TYPE);
List<SelectItem> selectItemList = getSelectItemList(input);
// current
Object currentValue = ii.getValue(true);
if (isEmptyEntryRequired(input, options, ii, currentValue))
{ // Empty entry
addSelectItem(selectItemList, textResolver, new OptionEntry(null, getNullText(ii)), exprType);
}
if (options != null && options.size() > 0)
{ // Option grouping?
OptionGroupResolver optionGroupResolver = options.getOptionGroupResolver();
Map<Object, SelectGroup> groupMap = (optionGroupResolver!=null ? new HashMap<Object, SelectGroup>() : null);
// Add options
for (OptionEntry oe : options)
{ // Option entries
if (oe.isActive() || ObjectUtils.compareEqual(oe.getValue(), currentValue))
{ // add active or current item
List<SelectItem> list = selectItemList;
if (optionGroupResolver!=null)
{ // get the option group
Object group = optionGroupResolver.getGroup(oe);
if (group!=null)
{ // We have a group
SelectGroup selectGroup = groupMap.get(group);
if (selectGroup==null)
{ // Create a new group
String groupLabel = (group!=null ? textResolver.resolveText(group.toString()) : null);
SelectItemGroup selectItemGroup = new SelectItemGroup(groupLabel);
selectItemList.add(selectItemGroup);
// add group to map
selectGroup = new SelectGroup(selectItemGroup);
groupMap.put(group, selectGroup);
}
list = selectGroup.getItemList();
}
}
addSelectItem(list, textResolver, oe, exprType);
}
else if (log.isDebugEnabled())
{ // not active, ignore this one
log.debug("Select item {} is not active.", oe.getValue());
}
}
// complete groups
if (groupMap!=null)
{ // Peg all SelectItemGroups
for (SelectGroup group : groupMap.values())
group.peg();
groupMap.clear();
}
}
}