Java tutorial
/* * Este programa es software libre; usted puede redistribuirlo y/o modificarlo bajo los terminos * de la licencia "GNU General Public License" publicada por la Fundacion "Free Software Foundation". * Este programa se distribuye con la esperanza de que pueda ser util, pero SIN NINGUNA GARANTIA; * vea la licencia "GNU General Public License" para obtener mas informacion. */ package ips1ap101.lib.core.jsf.component; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.validator.ValidatorException; import ips1ap101.lib.base.interfaces.Recurso; import ips1ap101.lib.base.interfaces.RecursoCodificable; import ips1ap101.lib.base.interfaces.RecursoIdentificable; import ips1ap101.lib.core.constant.Global; import ips1ap101.lib.core.util.STP; import org.apache.commons.lang.StringUtils; /** * @author Jorge Campins */ public abstract class ConvertidorRecurso implements Converter { @Override public Recurso getAsObject(FacesContext context, UIComponent component, String value) { String codigo = StringUtils.trimToNull(value); if (codigo == null) { return null; } try { boolean starts = codigo.startsWith(Global.PREFIJO_STRING_ID_RECURSO); Object objeto = starts ? STP.getObjetoCodigoRecurso(codigo) : codigo; Long id = objeto instanceof Long ? (Long) objeto : null; return id == null ? find(codigo) : find(id); } catch (Exception ex) { if (ex instanceof ValidatorException) { throw (ValidatorException) ex; } else { FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_ERROR, ex.getMessage(), null); throw new ValidatorException(message); } } } @Override public String getAsString(FacesContext context, UIComponent component, Object value) { if (value instanceof RecursoCodificable) { RecursoCodificable recurso = (RecursoCodificable) value; return recurso.getCodigoRecurso(); } if (value instanceof RecursoIdentificable) { RecursoIdentificable recurso = (RecursoIdentificable) value; return Global.PREFIJO_STRING_ID_RECURSO + recurso.getIdentificacionRecurso(); } return null; } protected Recurso find(String codigo) { return null; } protected Recurso find(Long id) { return null; } }