package net.agef.jobexchange.services.internal; import java.util.List; import org.apache.tapestry5.ValueEncoder; import org.apache.tapestry5.ioc.services.PropertyAccess; import org.apache.tapestry5.ioc.services.PropertyAdapter; public class GenericValueEncoder<T> implements ValueEncoder<T> { private PropertyAdapter idFieldAdapter = null; private List<T> list; public GenericValueEncoder(List<T> list, String idField, PropertyAccess access) { if (idField != null && !idField.equalsIgnoreCase("null")){ if(list.size() > 0){ this.idFieldAdapter = access.getAdapter(list.get(0).getClass()).getPropertyAdapter(idField); } } this.list = list; } public String toClient(T obj) { if (idFieldAdapter == null) { return nvl(obj); } else { return nvl(idFieldAdapter.get(obj)); } } public T toValue(String string) { if (idFieldAdapter == null) { for (T obj : list) { if (nvl(obj).equals(string)) return obj; } } else { for (T obj : list) { if (nvl(idFieldAdapter.get(obj)).equals(string)) return obj; } } return null; } private String nvl(Object o) { if (o == null) return ""; else return o.toString(); } }