/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.pepe.controller; import com.pepe.jpa.entities.Actividad; import com.pepe.jpa.entities.ActividadHasResultadoAprendizaje; import com.pepe.jpa.entities.ActividadHasResultadoAprendizajePK; import com.pepe.jpa.entities.Competencia; import com.pepe.jpa.entities.Fase; import com.pepe.jpa.entities.Ficha; import com.pepe.jpa.entities.Proyecto; import com.pepe.jpa.entities.ResultadoAprendizaje; import com.pepe.jpa.sesions.ActividadFacade; import com.pepe.jpa.sesions.ActividadHasResultadoAprendizajeFacade; import com.pepe.jpa.sesions.CompetenciaFacade; import com.pepe.jpa.sesions.FaseFacade; import com.pepe.jpa.sesions.FichaFacade; import com.pepe.jpa.sesions.ProyectoFacade; import com.pepe.jpa.sesions.ResultadoAprendizajeFacade; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; 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.event.ActionEvent; import javax.faces.validator.ValidatorException; import javax.inject.Named; /** * * @author Adsit */ @Named(value = "proyectoController") @SessionScoped public class ProyectoController implements Serializable { @EJB private ProyectoFacade proyectoFacade; private Proyecto proyectoActual; private List<Proyecto> listaProyecto = null; @EJB private FichaFacade fichaFacade; private Ficha fichaActual; @EJB private ActividadFacade actividadFacade; private Actividad actividadActual; private List<Actividad> listaActividad; @EJB private CompetenciaFacade competenciaFacade; private List<Competencia> listaCompetencia; @EJB private FaseFacade faseFacade; @EJB private ResultadoAprendizajeFacade resultadoAprendizajeFacade; @EJB private ActividadHasResultadoAprendizajeFacade actividadHasResultadoAprendizajeFacade; private int idFase; private int faseActividad; private int[] idRapSeleccionados; private List<ResultadoAprendizaje> rapSeleccionadosGlobal = null; private int idComp; public ProyectoController() { } public List<ResultadoAprendizaje> getRapSeleccionadosGlobal() { if(rapSeleccionadosGlobal == null){ rapSeleccionadosGlobal = new ArrayList<>(); } return rapSeleccionadosGlobal; } public void setRapSeleccionadosGlobal(List<ResultadoAprendizaje> rapSeleccionadosGlobal) { this.rapSeleccionadosGlobal = rapSeleccionadosGlobal; } public ActividadHasResultadoAprendizajeFacade getActividadHasResultadoAprendizajeFacade() { return actividadHasResultadoAprendizajeFacade; } public void setActividadHasResultadoAprendizajeFacade(ActividadHasResultadoAprendizajeFacade actividadHasResultadoAprendizajeFacade) { this.actividadHasResultadoAprendizajeFacade = actividadHasResultadoAprendizajeFacade; } public ResultadoAprendizajeFacade getResultadoAprendizajeFacade() { return resultadoAprendizajeFacade; } public void setResultadoAprendizajeFacade(ResultadoAprendizajeFacade resultadoAprendizajeFacade) { this.resultadoAprendizajeFacade = resultadoAprendizajeFacade; } public List<ResultadoAprendizaje> getListaRAP() { if (idComp != 0) { return getResultadoAprendizajeFacade().consulta(getCompetenciaFacade().find(idComp)); } else { return getResultadoAprendizajeFacade().consulta(); } } public int getIdComp() { if (idRapSeleccionados != null) { for (int i : idRapSeleccionados) { getRapSeleccionadosGlobal().add(getResultadoAprendizajeFacade().find(i)); } idRapSeleccionados = null; getRapSeleccionadosGlobal(); } return idComp; } public void setIdComp(int idComp) { this.idComp = idComp; } public int[] getIdRapSeleccionados() { if (idRapSeleccionados != null) { System.out.println("****************************************"); for (int i : idRapSeleccionados) { System.out.println(i); System.out.println(getResultadoAprendizajeFacade().find(i)); } } return idRapSeleccionados; } public void setIdRapSeleccionados(int[] idRapSeleccionados) { this.idRapSeleccionados = idRapSeleccionados; } public ProyectoFacade getProyectoFacade() { return proyectoFacade; } public FichaFacade getFichaFacade() { return fichaFacade; } public void setFichaFacade(FichaFacade fichaFacade) { this.fichaFacade = fichaFacade; } public int getIdFase() { return idFase; } public void setIdFase(int idFase) { this.idFase = idFase; } public int getFaseActividad() { return faseActividad; } public void setFaseActividad(int faseActividad) { this.faseActividad = faseActividad; } public void setProyectoFacade(ProyectoFacade proyectoFacade) { this.proyectoFacade = proyectoFacade; } public ActividadFacade getActividadFacade() { return actividadFacade; } public void setActividadFacade(ActividadFacade actividadFacade) { this.actividadFacade = actividadFacade; } public Actividad getActividadActual() { if (actividadActual == null) { actividadActual = new Actividad(); } return actividadActual; } public void setActividadActual(Actividad actividadActual) { this.actividadActual = actividadActual; } public List<Actividad> getListaActividad() { listaActividad = new ArrayList<>(); if (fichaActual.getIdProyecto() != null) { listaActividad = getActividadFacade().consultaActividadProyecto(fichaActual.getIdProyecto().getIdProyecto(), faseActividad); } return listaActividad; } public void setListaActividad(List<Actividad> listaActividad) { this.listaActividad = listaActividad; } public CompetenciaFacade getCompetenciaFacade() { return competenciaFacade; } public void setCompetenciaFacade(CompetenciaFacade competenciaFacade) { this.competenciaFacade = competenciaFacade; } public List<Competencia> getListaCompetencia() { List<Competencia> c = fichaActual.getPrograma().getCompetenciaList(); listaCompetencia = new ArrayList<>(); for (Competencia competencia : c) { if (competencia.getEstado() == true) { listaCompetencia.add(competencia); } } return listaCompetencia; } public void setListaCompetencia(List<Competencia> listaCompetencia) { this.listaCompetencia = listaCompetencia; } public Proyecto getProyectoActual() { if (proyectoActual == null) { proyectoActual = new Proyecto(); } return proyectoActual; } public FaseFacade getFaseFacade() { return faseFacade; } public void setFaseFacade(FaseFacade faseFacade) { this.faseFacade = faseFacade; } public List<Fase> listaFase() { return getFaseFacade().findAll(); } public Ficha getFichaActual() { return fichaActual; } public void setFichaActual(Ficha fichaActual) { this.fichaActual = fichaActual; } public void setProyectoActual(Proyecto proyectoActual) { this.proyectoActual = proyectoActual; } public List<Proyecto> getListaProyecto() { return listaProyecto; } public void setListaProyecto(List<Proyecto> listaProyecto) { this.listaProyecto = listaProyecto; } public void validarCodigoProyecto(FacesContext context, UIComponent component, Object o) throws ValidatorException { Proyecto u = getProyectoFacade().getByCodigoProyecto((String) o); Pattern pat = Pattern.compile("[0-9]{6,8}"); Matcher mat = pat.matcher((String) o); if (mat.matches()) { if (u == null) { proyectoActual.setCodigoProyecto((String) o); } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El Codigo del proyecto ya fue registrado")); } } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El codigo de la ficha debe contener 6 digitos númericos")); } } public void validarNumeroAprendices(FacesContext context, UIComponent component, Object o) throws ValidatorException { String u = (String) o; int n; Pattern pat = Pattern.compile("[0-9]"); Matcher mat = pat.matcher((String) o); if (mat.matches()) { n = Integer.parseInt(u); if ((n < 20) || (n > 35)) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El numero de aprendices requeridos debe estar en el rango de 20-35")); } else { proyectoActual.setAprendicesSugeridos(n); } } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Ingrese el numero de aprendices requeridos para la ejecución del proyecto")); } } public void validarNumeroInstructores(FacesContext context, UIComponent component, Object o) throws ValidatorException { String u = (String) o; int n; Pattern pat = Pattern.compile("[0-9]"); Matcher mat = pat.matcher((String) o); if (mat.matches()) { n = Integer.parseInt(u); if ((n < 10) || (n > 15)) { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "El numero de instructores requeridos debe estar en el rango de 10-15")); } else { proyectoActual.setAprendicesSugeridos(n); } } else { throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Ingrese el numero de instructores requeridos para la ejecución del proyecto")); } } public String validarProyecto() { if (fichaActual.getIdProyecto() == null) { return "No hay un proyecto asignado a la ficha"; } else { return fichaActual.getIdProyecto().getCodigoProyecto(); } } public void asignarFicha(ActionEvent e) { fichaActual = (Ficha) e.getComponent().getAttributes().get("ficha"); getFichaActual(); } public void addProyecto(ActionEvent ev) { try { getProyectoFacade().create(proyectoActual); fichaActual.setIdProyecto(proyectoActual); getFichaFacade().edit(fichaActual); proyectoActual = null; } catch (Exception e) { System.out.println(e.getMessage()); } } public Proyecto getProyecto(java.lang.Integer id) { return getProyectoFacade().find(id); } public void addActividad() { try { actividadActual.setIdFase(getFaseFacade().find(idFase)); actividadActual.setIdProyecto(fichaActual.getIdProyecto()); getActividadFacade().create(actividadActual); ActividadHasResultadoAprendizaje ahra; ActividadHasResultadoAprendizajePK ahrapk; for (ResultadoAprendizaje r : rapSeleccionadosGlobal) { ahra = new ActividadHasResultadoAprendizaje(); ahrapk = new ActividadHasResultadoAprendizajePK(); ahrapk.setIdActividad(actividadActual.getIdActividad()); ahrapk.setIdResultadoAprendizaje(r.getIdResultadoAprendizaje()); ahra.setActividad(actividadActual); ahra.setResultadoAprendizaje(r); ahra.setActividadHasResultadoAprendizajePK(ahrapk); getActividadHasResultadoAprendizajeFacade().create(ahra); } getActividadFacade().edit(actividadActual); actividadActual = null; rapSeleccionadosGlobal = null; idRapSeleccionados = null; getActividadActual(); faseActividad = idFase; idFase = 0; getListaActividad(); } catch (Exception ex) { System.out.println(ex.getMessage()); } } @FacesConverter(forClass = Proyecto.class) public static class ProyectoControllerConverter implements Converter { @Override public Object getAsObject(FacesContext facesContext, UIComponent component, String value) { if (value == null || value.length() == 0) { return null; } ProyectoController controller = (ProyectoController) facesContext.getApplication().getELResolver(). getValue(facesContext.getELContext(), null, "proyectoController"); return controller.getProyecto(getKey(value)); } java.lang.Integer getKey(String value) { java.lang.Integer key; key = Integer.valueOf(value); return key; } String getStringKey(java.lang.Integer value) { StringBuilder sb = new StringBuilder(); sb.append(value); return sb.toString(); } @Override public String getAsString(FacesContext facesContext, UIComponent component, Object object) { if (object == null) { return null; } if (object instanceof Proyecto) { Proyecto o = (Proyecto) object; return getStringKey(o.getIdProyecto()); } else { Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "object {0} is of type {1}; expected type: {2}", new Object[]{object, object.getClass().getName(), Proyecto.class.getName()}); return null; } } } }