package com.pepe.controller; import com.pepe.jpa.entities.Competencia; import com.pepe.jpa.entities.ConocimientoConceptoPrincipios; import com.pepe.jpa.entities.ConocimientoProceso; import com.pepe.jpa.entities.CriteriosEvaluacion; import com.pepe.jpa.entities.Ficha; import com.pepe.jpa.entities.LineaTecnologica; import com.pepe.jpa.entities.ModalidadFormacion; import com.pepe.jpa.entities.NivelFormacion; import com.pepe.jpa.entities.PerfilEntrada; import com.pepe.jpa.entities.Programa; import com.pepe.jpa.entities.ProgramaPK; import com.pepe.jpa.entities.ResultadoAprendizaje; import com.pepe.jpa.entities.TipoCompetencia; import com.pepe.jpa.entities.TipoFormacion; import com.pepe.jpa.sesions.CompetenciaFacade; import com.pepe.jpa.sesions.ConocimientoConceptoPrincipiosFacade; import com.pepe.jpa.sesions.ConocimientoProcesoFacade; import com.pepe.jpa.sesions.CriteriosEvaluacionFacade; import com.pepe.jpa.sesions.FichaFacade; import com.pepe.jpa.sesions.LineaTecnologicaFacade; import com.pepe.jpa.sesions.ModalidadFormacionFacade; import com.pepe.jpa.sesions.NivelFormacionFacade; import com.pepe.jpa.sesions.PerfilEntradaFacade; import com.pepe.jpa.sesions.ProgramaFacade; import com.pepe.jpa.sesions.ResultadoAprendizajeFacade; import com.pepe.jpa.sesions.TipoCompetenciaFacade; import com.pepe.jpa.sesions.TipoFormacionFacade; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import javax.ejb.EJB; import javax.enterprise.context.SessionScoped; import javax.faces.application.FacesMessage; import javax.faces.component.UIComponent; import javax.faces.context.FacesContext; import javax.faces.convert.Converter; import javax.faces.convert.FacesConverter; import javax.faces.validator.ValidatorException; import javax.inject.Named; /** * * @author EQUIPO 3 */ @Named(value = "programaController") @SessionScoped public class ProgramaController implements Serializable { @EJB private ProgramaFacade programaFacade; private Programa programaActual = null; private Programa programaVersion = null; private Programa programaCrear = null; private List<Programa> programas; @EJB private FichaFacade fichaFacade; @EJB private TipoCompetenciaFacade tipoCompetenciaFacade; @EJB private CompetenciaFacade competenciaFacade; private Competencia competenciaActual = null; @EJB private LineaTecnologicaFacade lineaTecnologicaFacade; @EJB private ModalidadFormacionFacade modalidadFormacionFacade; @EJB private PerfilEntradaFacade perfilEntradaFacade; @EJB private NivelFormacionFacade nivelFormacionFacade; @EJB private TipoFormacionFacade tipoFormacionFacade; @EJB private ConocimientoConceptoPrincipiosFacade conocimientoConceptoPrincipiosFacade; private ConocimientoConceptoPrincipios conocimientoConceptoPrincipiosActual = null; @EJB private ConocimientoProcesoFacade conocimientoProcesoFacade; private ConocimientoProceso conocimientoProcesoActual = null; @EJB private CriteriosEvaluacionFacade criteriosEvaluacionFacade; private CriteriosEvaluacion criteriosEvaluacionActual = null; @EJB private ResultadoAprendizajeFacade resultadoAprendizajeFacade; private ResultadoAprendizaje resultadoAprendizajeActual = null; private String codigo = ""; private String version = ""; private int idLinea; private int idPerfil; private int idModalidad; private int idNivel; private int idTipo; private String duracion; private int idTipoC; private boolean cod = true; public ProgramaController() { } public Programa getProgramaCrear() { if (programaCrear == null) { programaCrear = new Programa(); programaCrear.setProgramaPK(new ProgramaPK()); } return programaCrear; } public void setProgramaCrear(Programa programaCrear) { this.programaCrear = programaCrear; } public Programa getProgramaActual() { return programaActual; } public Programa getProgramaVersion() { return programaVersion; } public TipoCompetenciaFacade getTipoCompetenciaFacade() { return tipoCompetenciaFacade; } public void setTipoCompetenciaFacade(TipoCompetenciaFacade tipoCompetenciaFacade) { this.tipoCompetenciaFacade = tipoCompetenciaFacade; } public String getDuracion() { if (competenciaActual != null) { duracion = Integer.toString(getCompetenciaActual().getDuracionEstimadaHoras()); } return duracion; } public ConocimientoProceso getConocimientoProcesoActual() { if (conocimientoProcesoActual == null) { conocimientoProcesoActual = new ConocimientoProceso(); } return conocimientoProcesoActual; } public void setConocimientoProcesoActual(ConocimientoProceso conocimientoProcesoActual) { this.conocimientoProcesoActual = conocimientoProcesoActual; } public List<TipoCompetencia> getTipoCompetenciaList() { return getTipoCompetenciaFacade().findAll(); } public int getIdTipoC() { if (getCompetenciaActual().getIdCompetencia() != null) { idTipoC = getCompetenciaActual().getIdTipoCompetencia().getIdTipoCompetencia(); } return idTipoC; } public void setIdTipoC(int idTipoC) { this.idTipoC = idTipoC; } public void setDuracion(String duracion) { this.duracion = duracion; } public void setProgramaVersion(Programa programaVersion) { this.programaVersion = programaVersion; } public List<Programa> getProgramas() { return programas; } public void setProgramas(List<Programa> programas) { this.programas = programas; } public boolean isCod() { return cod; } public void setCod(boolean cod) { this.cod = cod; } public ConocimientoConceptoPrincipiosFacade getConocimientoConceptoPrincipiosFacade() { return conocimientoConceptoPrincipiosFacade; } public void setConocimientoConceptoPrincipiosFacade(ConocimientoConceptoPrincipiosFacade conocimientoConceptoPrincipiosFacade) { this.conocimientoConceptoPrincipiosFacade = conocimientoConceptoPrincipiosFacade; } public FichaFacade getFichaFacade() { return fichaFacade; } public void setFichaFacade(FichaFacade fichaFacade) { this.fichaFacade = fichaFacade; } public ResultadoAprendizaje getResultadoAprendizajeActual() { if (resultadoAprendizajeActual == null) { resultadoAprendizajeActual = new ResultadoAprendizaje(); } return resultadoAprendizajeActual; } public void setResultadoAprendizajeActual(ResultadoAprendizaje resultadoAprendizajeActual) { this.resultadoAprendizajeActual = resultadoAprendizajeActual; } public CriteriosEvaluacion getCriteriosEvaluacionActual() { if (criteriosEvaluacionActual == null) { criteriosEvaluacionActual = new CriteriosEvaluacion(); } return criteriosEvaluacionActual; } public void setCriteriosEvaluacionActual(CriteriosEvaluacion criteriosEvaluacionActual) { this.criteriosEvaluacionActual = criteriosEvaluacionActual; } public ConocimientoProcesoFacade getConocimientoProcesoFacade() { return conocimientoProcesoFacade; } public void setConocimientoProcesoFacade(ConocimientoProcesoFacade conocimientoProcesoFacade) { this.conocimientoProcesoFacade = conocimientoProcesoFacade; } public CriteriosEvaluacionFacade getCriteriosEvaluacionFacade() { return criteriosEvaluacionFacade; } public void setCriteriosEvaluacionFacade(CriteriosEvaluacionFacade criteriosEvaluacionFacade) { this.criteriosEvaluacionFacade = criteriosEvaluacionFacade; } public ResultadoAprendizajeFacade getResultadoAprendizajeFacade() { return resultadoAprendizajeFacade; } public void setResultadoAprendizajeFacade(ResultadoAprendizajeFacade resultadoAprendizajeFacade) { this.resultadoAprendizajeFacade = resultadoAprendizajeFacade; } public Competencia getCompetenciaActual() { if (competenciaActual == null) { competenciaActual = new Competencia(); } return competenciaActual; } public ConocimientoConceptoPrincipios getConocimientoConceptoPrincipiosActual() { if (conocimientoConceptoPrincipiosActual == null) { conocimientoConceptoPrincipiosActual = new ConocimientoConceptoPrincipios(); } return conocimientoConceptoPrincipiosActual; } public void setConocimientoConceptoPrincipiosActual(ConocimientoConceptoPrincipios conocimientoConceptoPrincipiosActual) { this.conocimientoConceptoPrincipiosActual = conocimientoConceptoPrincipiosActual; } public void setCompetenciaActual(Competencia competenciaActual) { this.competenciaActual = competenciaActual; } public CompetenciaFacade getCompetenciaFacade() { return competenciaFacade; } public void setCompetenciaFacade(CompetenciaFacade competenciaFacade) { this.competenciaFacade = competenciaFacade; } public String getCodigo() { if (programaActual != null && programaActual.getProgramaPK() != null && programaActual.getProgramaPK().getCodigo() != null && programaActual.getProgramaPK().getVersion() != null) { codigo = programaActual.getProgramaPK().getCodigo(); } return codigo; } public void setCodigo(String codigo) { this.codigo = codigo; } public String getVersion() { if (programaActual != null && programaActual.getProgramaPK() != null && programaActual.getProgramaPK().getCodigo() != null && programaActual.getProgramaPK().getVersion() != null) { version = programaActual.getProgramaPK().getVersion(); } return version; } public void setVersion(String version) { this.version = version; } public void setProgramaActual(Programa programaActual) { this.programaActual = programaActual; } public ProgramaFacade getProgramaFacade() { return programaFacade; } public void setProgramaFacade(ProgramaFacade programaFacade) { this.programaFacade = programaFacade; } public String programaConsulta() { return "programaTabla.xhtml"; } public String programaConsulta1() { return "../programa/programaTabla.xhtml"; } public LineaTecnologicaFacade getLineaTecnologicaFacade() { return lineaTecnologicaFacade; } public void setLineaTecnologicaFacade(LineaTecnologicaFacade lineaTecnologicaFacade) { this.lineaTecnologicaFacade = lineaTecnologicaFacade; } public ModalidadFormacionFacade getModalidadFormacionFacade() { return modalidadFormacionFacade; } public void setModalidadFormacionFacade(ModalidadFormacionFacade modalidadFormacionFacade) { this.modalidadFormacionFacade = modalidadFormacionFacade; } public PerfilEntradaFacade getPerfilEntradaFacade() { return perfilEntradaFacade; } public void setPerfilEntradaFacade(PerfilEntradaFacade perfilEntradaFacade) { this.perfilEntradaFacade = perfilEntradaFacade; } public NivelFormacionFacade getNivelFormacionFacade() { return nivelFormacionFacade; } public void setNivelFormacionFacade(NivelFormacionFacade nivelFormacionFacade) { this.nivelFormacionFacade = nivelFormacionFacade; } public TipoFormacionFacade getTipoFormacionFacade() { return tipoFormacionFacade; } public void setTipoFormacionFacade(TipoFormacionFacade tipoFormacionFacade) { this.tipoFormacionFacade = tipoFormacionFacade; } public int getIdLinea() { if (getProgramaActual() != null && getProgramaActual().getIdLineaTecnologica() != null) { idLinea = getProgramaActual().getIdLineaTecnologica().getIdLineaTecnologica(); } return idLinea; } public void setIdLinea(int idLinea) { this.idLinea = idLinea; } public int getIdPerfil() { if (getProgramaActual() != null && getProgramaActual().getIdLineaTecnologica() != null) { idPerfil = getProgramaActual().getIdPerfilEntrada().getIdPerfilEntrada(); } return idPerfil; } public void setIdPerfil(int idPerfil) { this.idPerfil = idPerfil; } public int getIdModalidad() { if (getProgramaActual() != null && getProgramaActual().getIdModalidadFormacion() != null) { idModalidad = getProgramaActual().getIdModalidadFormacion().getIdModalidadFormacion(); } return idModalidad; } public void setIdModalidad(int idModalidad) { this.idModalidad = idModalidad; } public int getIdNivel() { if (getProgramaActual() != null && getProgramaActual().getIdNivelFormacion() != null) { idNivel = getProgramaActual().getIdNivelFormacion().getIdNivelFormacion(); } return idNivel; } public void setIdNivel(int idNivel) { this.idNivel = idNivel; } public int getIdTipo() { if (getProgramaActual() != null && getProgramaActual().getIdTipoFormacion() != null) { idTipo = getProgramaActual().getIdTipoFormacion().getIdTipoFormacion(); } return idTipo; } public void setIdTipo(int idTipo) { this.idTipo = idTipo; } public List<Programa> getListaPrograma() { return getProgramaFacade().findAll(); } public List<LineaTecnologica> getListaLineaTecnologica() { return getLineaTecnologicaFacade().findAll(); } public List<ModalidadFormacion> getListaModalidadFormacion() { return getModalidadFormacionFacade().findAll(); } public List<TipoFormacion> getListaTipoFormacion() { return getTipoFormacionFacade().findAll(); } public List<NivelFormacion> getListaNivelFormacion() { return getNivelFormacionFacade().findAll(); } public List<PerfilEntrada> getListaPerfilEntrada() { return getPerfilEntradaFacade().findAll(); } public List<Programa> autoCompletarNombre(String query) { try { return getProgramaFacade().autoCompletarNombre(query); } catch (Exception e) { System.out.println(e.getMessage()); return null; } } public List<ConocimientoConceptoPrincipios> getListaCCP() { return getConocimientoConceptoPrincipiosFacade().consulta(competenciaActual); } public List<ConocimientoProceso> getListaCP() { return getConocimientoProcesoFacade().consulta(competenciaActual); } public List<CriteriosEvaluacion> getListaCE() { return getCriteriosEvaluacionFacade().consulta(competenciaActual); } public List<ResultadoAprendizaje> getListaRA() { return getResultadoAprendizajeFacade().consulta(competenciaActual); } public List<ResultadoAprendizaje> listaTotalRA() { List<ResultadoAprendizaje> c = new ArrayList<>(); for (Competencia competencia : getListaCompetencia()) { c.addAll(getResultadoAprendizajeFacade().consulta(competencia)); } return c; } public int totalRAA() { return listaTotalRA().size(); } public boolean competenciaNull() { if (getCompetenciaActual().getCodigo() == null) { return true; } else { return false; } } public void prepareCreate() { programaVersion = getProgramaFacade().consultaCodigoVersion(programaActual.getProgramaPK().getCodigo(), programaActual.getProgramaPK().getVersion()); programaVersion.getProgramaPK().setVersion(""); programaVersion.getCompetenciaList().clear(); programaVersion.getFichaList().clear(); } public void anular() { programaActual = null; programaCrear = null; codigo = ""; version = ""; cod = false; programas = null; idLinea = idModalidad = idNivel = idPerfil = idTipo = 0; competenciaActual = null; } public void anularComp() { competenciaActual = null; } public void anularItem() { resultadoAprendizajeActual = null; conocimientoProcesoActual = null; criteriosEvaluacionActual = null; conocimientoConceptoPrincipiosActual = null; getResultadoAprendizajeActual(); getConocimientoConceptoPrincipiosActual(); getConocimientoProcesoActual(); getCriteriosEvaluacionActual(); } public boolean codigoBoolean() { return cod; } public List<Competencia> getListaCompetencia() { List<Competencia> c = new ArrayList<>(); for (Competencia competencia : programaActual.getCompetenciaList()) { if (competencia.getEstado() == true) { c.add(competencia); } } return c; } public boolean programaBoolean() { return programaActual != null; } public boolean ccpBoolean() { return getConocimientoConceptoPrincipiosActual() == null && getConocimientoConceptoPrincipiosActual().getIdConocimientoConceptoPrincipios() == null; } public boolean ceBoolean() { if (getCriteriosEvaluacionActual().getIdCriteriosEvaluacion() == null) { return true; } else { return false; } } public boolean raBoolean() { if (getResultadoAprendizajeActual().getIdResultadoAprendizaje() == null) { return true; } else { return false; } } public boolean cpBoolean() { if (getConocimientoProcesoActual().getIdConocimientoProceso() == null) { return true; } else { return false; } } public void validarIdTipo(FacesContext context, UIComponent component, Object o) throws ValidatorException { if ((Integer)o != 0) { programaCrear.setIdTipoFormacion(getTipoFormacionFacade().find((Integer)o)); } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Debe seleccionar el Tipo de Formación")); } } public void validarCodigoPrograma(FacesContext context, UIComponent component, Object o) throws ValidatorException { List<Programa> pro = getProgramaFacade().consultaCodigo((String) o); Pattern pat = Pattern.compile("[0-9]{6}"); Matcher mat = pat.matcher((String) o); if (mat.matches()) { if (pro.isEmpty()) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El codigo del programa no existe en el sistema")); } else { programas = pro; cod = false; } } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El codigo del programa se compone de 6 digitos numericos")); } } public void validarVersionPrograma(FacesContext context, UIComponent component, Object v) throws ValidatorException { List<Programa> pro = getProgramaFacade().consultaCodigo(programaActual.getProgramaPK().getCodigo()); Pattern pat = Pattern.compile("[0-9]{1,3}"); Matcher mat = pat.matcher((String) v); if (mat.matches()) { boolean b = false; for (Programa programa : pro) { if (((String) v).equals(programa.getProgramaPK().getVersion())) { b = true; } } if (b) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El numero de version ya fue ingresado")); } else { programaVersion.getProgramaPK().setVersion((String) v); } } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "la version del programa se compone de 1-3 digitos numericos")); } } public List<Programa> getListaProgramas() { return getProgramaFacade().consultaCodigo(codigo); } public List<Ficha> getFichaListaPrograma() { return getFichaFacade().consultaFichaPrograma(programaActual); } public void crearPrograma() { try { programaCrear.setIdLineaTecnologica(getLineaTecnologicaFacade().find(idLinea)); programaCrear.setIdModalidadFormacion(getModalidadFormacionFacade().find(idModalidad)); programaCrear.setIdNivelFormacion(getNivelFormacionFacade().find(idNivel)); programaCrear.setIdPerfilEntrada(getPerfilEntradaFacade().find(idPerfil)); programaCrear.setEstado((short) 1); getProgramaFacade().create(programaCrear); } catch (Exception e) { System.out.println(e.getMessage()); } } public void crearVersion() { try { programaVersion.setIdLineaTecnologica(getLineaTecnologicaFacade().find(idLinea)); programaVersion.setIdModalidadFormacion(getModalidadFormacionFacade().find(idModalidad)); programaVersion.setIdNivelFormacion(getNivelFormacionFacade().find(idNivel)); programaVersion.setIdPerfilEntrada(getPerfilEntradaFacade().find(idPerfil)); programaVersion.setIdTipoFormacion(getTipoFormacionFacade().find(idTipo)); getProgramaFacade().create(programaVersion); for (Competencia c : programaActual.getCompetenciaList()) { programaVersion.getCompetenciaList().add(c); } getProgramaFacade().edit(programaVersion); anular(); programaActual = getProgramaFacade().consultaCodigoVersion(programaVersion.getProgramaPK().getCodigo(), programaVersion.getProgramaPK().getVersion()); programaVersion = null; } catch (Exception e) { System.out.println(e.getMessage()); } } public void crearCompetencia() { try { competenciaActual.setIdTipoCompetencia(getTipoCompetenciaFacade().find(idTipoC)); competenciaActual.setEstado(true); competenciaActual.setDuracionEstimadaHoras(Integer.parseInt(duracion)); getCompetenciaFacade().create(competenciaActual); programaActual.getCompetenciaList().add(competenciaActual); getProgramaFacade().edit(programaActual); duracion = ""; idTipoC = 0; competenciaActual = null; } catch (NumberFormatException e) { System.out.println(e.getMessage()); } } public void editarCompetencia() { try { competenciaActual.setIdTipoCompetencia(getTipoCompetenciaFacade().find(idTipoC)); competenciaActual.setDuracionEstimadaHoras(Integer.parseInt(duracion)); getCompetenciaFacade().edit(competenciaActual); duracion = ""; idTipoC = 0; } catch (NumberFormatException e) { System.out.println(e.getMessage()); } } public void crearCCP() { try { conocimientoConceptoPrincipiosActual.setEstado(true); conocimientoConceptoPrincipiosActual.setIdCompetencia(competenciaActual); getConocimientoConceptoPrincipiosFacade().create(conocimientoConceptoPrincipiosActual); conocimientoConceptoPrincipiosActual = null; } catch (Exception e) { System.out.println(e.getMessage()); } } public void modificarCCP() { try { getConocimientoConceptoPrincipiosFacade().edit(conocimientoConceptoPrincipiosActual); conocimientoConceptoPrincipiosActual = null; getConocimientoConceptoPrincipiosActual(); ccpBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void deshabilitarCCP() { try { conocimientoConceptoPrincipiosActual.setEstado(false); getConocimientoConceptoPrincipiosFacade().edit(conocimientoConceptoPrincipiosActual); conocimientoConceptoPrincipiosActual = null; getConocimientoConceptoPrincipiosActual(); ccpBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void crearCE() { try { criteriosEvaluacionActual.setEstado(true); criteriosEvaluacionActual.setIdCompetencia(competenciaActual); getCriteriosEvaluacionFacade().create(criteriosEvaluacionActual); criteriosEvaluacionActual = null; } catch (Exception e) { System.out.println(e.getMessage()); } } public void modificarCE() { try { getCriteriosEvaluacionFacade().edit(criteriosEvaluacionActual); criteriosEvaluacionActual = null; getCriteriosEvaluacionActual(); ceBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void deshabilitarCE() { try { criteriosEvaluacionActual.setEstado(false); getCriteriosEvaluacionFacade().edit(criteriosEvaluacionActual); criteriosEvaluacionActual = null; getCriteriosEvaluacionActual(); ceBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void crearCP() { try { conocimientoProcesoActual.setEstado(true); conocimientoProcesoActual.setIdCompetencia(competenciaActual); getConocimientoProcesoFacade().create(conocimientoProcesoActual); conocimientoProcesoActual = null; } catch (Exception e) { System.out.println(e.getMessage()); } } public void modificarCP() { try { getConocimientoProcesoFacade().edit(conocimientoProcesoActual); conocimientoProcesoActual = null; getConocimientoProcesoActual(); ceBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void deshabilitarCP() { try { conocimientoProcesoActual.setEstado(false); getConocimientoProcesoFacade().edit(conocimientoProcesoActual); conocimientoProcesoActual = null; getConocimientoProcesoActual(); ceBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void crearRA() { try { resultadoAprendizajeActual.setEstado(true); resultadoAprendizajeActual.setIdCompetencia(competenciaActual); getResultadoAprendizajeFacade().create(resultadoAprendizajeActual); resultadoAprendizajeActual = null; } catch (Exception e) { System.out.println(e.getMessage()); } } public void modificarRA() { try { getResultadoAprendizajeFacade().edit(resultadoAprendizajeActual); resultadoAprendizajeActual = null; getResultadoAprendizajeActual(); ceBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } public void deshabilitarRA() { try { resultadoAprendizajeActual.setEstado(false); getResultadoAprendizajeFacade().edit(resultadoAprendizajeActual); resultadoAprendizajeActual = null; getResultadoAprendizajeActual(); ceBoolean(); } catch (Exception e) { System.out.println(e.getMessage()); } } /* CONVERTER */ public Programa getPrograma(ProgramaPK id) { return getProgramaFacade().find(id); } @FacesConverter(forClass = Programa.class, value = "ProgramaConverter") public static class ProgramaControllerConverter implements Converter { private static final String SEPARATOR = "#"; private static final String SEPARATOR_ESCAPED = "\\#"; @Override public Object getAsObject(FacesContext facesContext, UIComponent component, String value) { if (value == null || value.length() == 0) { return null; } ProgramaController controller = (ProgramaController) facesContext.getApplication().getELResolver(). getValue(facesContext.getELContext(), null, "programaController"); return controller.getPrograma(getKey(value)); } ProgramaPK getKey(String value) { ProgramaPK key; String values[] = value.split(SEPARATOR_ESCAPED); key = new ProgramaPK(); key.setCodigo(values[0]); key.setVersion(values[1]); return key; } String getStringKey(ProgramaPK value) { StringBuilder sb = new StringBuilder(); sb.append(value.getCodigo()); sb.append(SEPARATOR); sb.append(value.getVersion()); return sb.toString(); } @Override public String getAsString(FacesContext facesContext, UIComponent component, Object object) { if (object == null) { return null; } if (object instanceof Programa) { Programa o = (Programa) object; return getStringKey(o.getProgramaPK()); } else { throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + Programa.class.getName()); } } } }