public void initOptions()

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