package net.agef.jobexchange.services.internal; import java.util.ArrayList; import java.util.List; import org.apache.tapestry5.OptionGroupModel; import org.apache.tapestry5.OptionModel; import org.apache.tapestry5.internal.OptionModelImpl; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.ioc.services.PropertyAdapter; import org.apache.tapestry5.util.AbstractSelectModel; public class GenericSelectionModel<T> extends AbstractSelectModel { private PropertyAdapter labelFieldAdapter = null; private List<T> list; public GenericSelectionModel(List<T> list, String labelField, PropertyAccess access) { if(labelField != null && !labelField.equalsIgnoreCase("null")){ if(list.size() > 0){ this.labelFieldAdapter = access.getAdapter(list.get(0).getClass()).getPropertyAdapter(labelField); } } this.list = list; } public List<OptionGroupModel> getOptionGroups() { return null; } public List<OptionModel> getOptions() { List<OptionModel> optionModelList = new ArrayList<OptionModel>(); for (T obj : list) { if (labelFieldAdapter == null) { optionModelList.add(new OptionModelImpl(nvl(obj) + "",obj)); } else { optionModelList.add(new OptionModelImpl(nvl(labelFieldAdapter.get(obj)),obj)); } } return optionModelList; } private String nvl(Object o) { if (o == null) return ""; else return o.toString(); } }