com.github.javarch.jsf.SelectItemsUtils.java Source code

Java tutorial

Introduction

Here is the source code for com.github.javarch.jsf.SelectItemsUtils.java

Source

/*
* Copyright 2011 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/

package com.github.javarch.jsf;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import javax.faces.model.SelectItem;

import org.springframework.beans.BeanWrapper;
import org.springframework.beans.BeanWrapperImpl;
import org.springframework.beans.NotReadablePropertyException;
import org.springframework.stereotype.Component;

/**
 * Classe utilitria que dada uma lista de objetos transforma eles em uma lista de select items.
 * 
 * @author Lucas Oliveira
 * 
 */
@Component
@SuppressWarnings("all")
public class SelectItemsUtils implements Serializable {

    /**
     * Dada uma Lista de objetos cria uma lista de SelectItem onde o valor ser
     * uma chamada ao mtodo get do atributo <i>idProperty</i> e o valor o retorno
     * do mtodo get da propriedade <i>labelProperty</i>.
     * 
     * Esse mtodo no adiciona um item para indicar a necessidade de seleo do item.
     * 
     * 
     * @param list - Lista de objetos que devem construir a lista de select items.
     * @param idProperty - propriedade que define o valor das chaves do select item.
     * @param labelProperty - pripriedade que define o rtulo do select item
     * @return Uma lista de objetos select item.
     */
    public List<SelectItem> createSelectItems(final List list, String idProperty, String labelProperty) {
        return createSelectItems(list, idProperty, labelProperty, null);
    }

    /**
    * Dada uma Lista de objetos cria uma lista de SelectItem onde o valor ser
    * uma chamada ao mtodo get do atributo <i>idProperty</i> e o valor o retorno
    * do mtodo get da propriedade <i>labelProperty</i>.
    * 
    * Esse mtodo  adiciona um item para indicar a necessidade de seleo do item definido
    * no parmetro labelOptional
    * 
    * 
    * @param list - Lista de objetos que devem construir a lista de select items.
    * @param idProperty - propriedade que define o valor das chaves do select item.
    * @param labelProperty - pripriedade que define o rtulo do select item
    * @param labelOptional - Rtulo do primeiro item do select item que define a necessidade de seleo de um item.
    * @return Uma lista de objetos select item.
    */
    public List<SelectItem> createSelectItems(final List iter, String idProperty, String labelProperty,
            String labelOptional) {
        List<SelectItem> selectItems = new ArrayList<SelectItem>();

        if (iter == null) {
            return selectItems;
        }

        if (labelOptional != null) {
            selectItems.add(new SelectItem(null, labelOptional));
        }

        Iterator it = iter.iterator();
        while (it.hasNext()) {
            Object item = (Object) it.next();
            String label;
            String id;

            try {
                BeanWrapper entity = new BeanWrapperImpl(item);
                label = "" + entity.getPropertyValue(labelProperty);
                id = entity.getPropertyValue(idProperty).toString();
            } catch (Exception ex) {
                label = "???" + labelProperty + "???";
                id = "???" + idProperty + "???";
            }

            SelectItem selectItem = new SelectItem(id, label);
            selectItems.add(selectItem);
        }
        return selectItems;
    }

}