Java tutorial
/* * 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.ipn.escom.ageinnn.usuario.service; import com.ipn.escom.ageinnn.aspirante.model.Aspirante; import com.ipn.escom.ageinnn.aspirante.model.AspiranteId; import com.ipn.escom.ageinnn.aspirante.model.Comentario; import com.ipn.escom.ageinnn.aspirante.model.DocumentoEntregado; import com.ipn.escom.ageinnn.aspirante.model.DocumentoEntregadoId; import com.ipn.escom.ageinnn.aspirante.model.ProcesoAdmision; import com.ipn.escom.ageinnn.configuracion.model.PeriodoAdmision; import com.ipn.escom.ageinnn.curso.model.Curso; import com.ipn.escom.ageinnn.curso.model.Grupo; import com.ipn.escom.ageinnn.evento.model.TipoEvento; import com.ipn.escom.ageinnn.gestion.service.GrupoService; import com.ipn.escom.ageinnn.gestion.service.InscripcionService; import com.ipn.escom.ageinnn.service.Service; import com.ipn.escom.ageinnn.usuario.model.MedicoResidente; import com.ipn.escom.ageinnn.utils.AspiranteCommand; import java.io.Serializable; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.transaction.Transactional; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; /** * * @author Erick */ public class AspiranteServceImpl implements AspiranteService { private Session session; private CatalogoServiceImpl catalogoService = new CatalogoServiceImpl(); @Override public List<DocumentoEntregado> findAllDocuments(Integer id) { List<DocumentoEntregado> documentos = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); documentos = session.createCriteria(DocumentoEntregado.class).add(Restrictions.eq("aspiranteId", id)) .list(); if (documentos.size() > 0) { System.out.println("este wey si tiene documentos"); } session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return documentos; } public List<DocumentoEntregado> findAllDocumentosFaltantes(List<DocumentoEntregado> documentoEntregados, Integer id) { List<DocumentoEntregado> documentos = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); documentos = session.createCriteria(DocumentoEntregado.class) .createAlias("documentoRequerido", "documentoRequerido").list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return documentos; } public List<Aspirante> findAllByAspiranteCommand(AspiranteCommand aspiranteCommand) { List<Aspirante> aspiranteList = new ArrayList(); try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); Criteria criteria = session.createCriteria(Aspirante.class); System.out.println(aspiranteCommand); if (aspiranteCommand != null) { criteria.createAlias("medico", "m"); if (aspiranteCommand.getNombre() != null && !"".equals(aspiranteCommand.getNombre())) { System.out.println("Entra nombre"); criteria.add(Restrictions.eq("m.nombre", aspiranteCommand.getNombre())); } if (aspiranteCommand.getEmail() != null && !"".equals(aspiranteCommand.getEmail())) { System.out.println("Entra mail"); criteria.add(Restrictions.eq("m.email", aspiranteCommand.getEmail())); } if (aspiranteCommand.getFolio() != null && !"".equals(aspiranteCommand.getFolio())) { System.out.println("Entra folio"); criteria.add(Restrictions.eq("m.folio", aspiranteCommand.getFolio())); } if (aspiranteCommand.getPaisId() != null && aspiranteCommand.getPaisId() > 0) { System.out.println("Entra pais"); criteria.add(Restrictions.eq("m.paisId", aspiranteCommand.getPaisId())); } criteria.add(Restrictions.eq("m.nacional", aspiranteCommand.isNacional())); if (aspiranteCommand.getSexoId() != null && aspiranteCommand.getSexoId() > 0) { System.out.println("Entra sexo"); criteria.add(Restrictions.eq("m.idSexo", aspiranteCommand.getSexoId())); } if (aspiranteCommand.getCursoId() != null && aspiranteCommand.getCursoId() > 0) { System.out.println("Entra curso"); criteria.add(Restrictions.eq("cursoId", aspiranteCommand.getCursoId())); } if (aspiranteCommand.getProcesoAdmisionId() != null && aspiranteCommand.getProcesoAdmisionId() > 0) { System.out.println("Entra proceso admision id"); criteria.add(Restrictions.eq("procesoAdmisionId", aspiranteCommand.getProcesoAdmisionId())); } if (aspiranteCommand.getPeriodoAdmisionId() != null && aspiranteCommand.getPeriodoAdmisionId() > 0) { criteria.add(Restrictions.eq("periodoAdmisionId", aspiranteCommand.getPeriodoAdmisionId())); } } aspiranteList = criteria.list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return aspiranteList; } @Transactional @Override public Serializable guardarDocumento(DocumentoEntregado documento) { DocumentoEntregadoId id = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); System.out.println("Tipo de documento: " + documento.getRuta()); id = (DocumentoEntregadoId) session.save(documento); session.getTransaction().commit(); System.out.println("Documento guardado"); } catch (Exception e) { System.out.println("No se ha podido realizar la transaccin"); session.getTransaction().rollback(); throw e; } return id; } @Override @Transactional public void actualizarDocumento(DocumentoEntregado documento) { try { System.out.println(documento.toString()); session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.saveOrUpdate(documento); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } } public void actualizarDocumento(List<DocumentoEntregado> documentos) { try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); for (DocumentoEntregado documento : documentos) { session.saveOrUpdate(documento); } session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } } public Serializable saveComentario(Comentario comentario) { Integer id = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); id = (Integer) session.save(comentario); session.getTransaction().commit(); } catch (Exception e) { System.out.println("No se ha podido realizar la transaccin"); session.getTransaction().rollback(); throw e; } return id; } public List<Serializable> saveComentario(List<Comentario> comentarios) { List<Serializable> ids = new ArrayList<>(); try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); for (Comentario comentario : comentarios) { ids.add((Integer) session.save(comentario)); } session.getTransaction().commit(); } catch (Exception e) { System.out.println("No se ha podido realizar la transaccin"); session.getTransaction().rollback(); throw e; } return ids; } @Transactional public DocumentoEntregado obtenerDocumento(DocumentoEntregadoId id) { DocumentoEntregado documento = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); documento = (DocumentoEntregado) session.get(DocumentoEntregado.class, id); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return documento; } public void setProcesoAdmisionEntrevista(Aspirante aspirante, TipoEvento tipoEvento) { String nombreProcesoAdmision = null; switch (tipoEvento.getNombre()) { case "Entrevista 1": nombreProcesoAdmision = "entrevista 1"; break; case "Entrevista 2": nombreProcesoAdmision = "entrevista 2"; break; case "Entrevista 3": nombreProcesoAdmision = "entrevista 3"; break; default: nombreProcesoAdmision = ""; } ProcesoAdmision procesoAdmision = catalogoService.findByNombre(ProcesoAdmision.class, nombreProcesoAdmision); if (procesoAdmision != null) { aspirante.setProcesoAdmisionId(procesoAdmision.getId()); aspirante.setProcesoAdmision(procesoAdmision); } } public void setProcesoAdmisionAceptado(Aspirante aspirante) { ProcesoAdmision procesoAdmision = catalogoService.findByNombre(ProcesoAdmision.class, "aceptado"); if (procesoAdmision != null) { aspirante.setProcesoAdmisionId(procesoAdmision.getId()); aspirante.setProcesoAdmision(procesoAdmision); Curso curso = aspirante.getCurso(); GrupoService grupoService = new GrupoService(); InscripcionService inscripcionService = new InscripcionService(); Grupo grupo = grupoService.findByCurso(curso); this.update(aspirante); inscripcionService.inscribirAlumno(grupo, aspirante.getMedico()); } } public void setProcesoAdmisionRechazado(Aspirante aspirante) { ProcesoAdmision procesoAdmision = catalogoService.findByNombre(ProcesoAdmision.class, "rechazado"); if (procesoAdmision != null) { aspirante.setProcesoAdmisionId(procesoAdmision.getId()); aspirante.setProcesoAdmision(procesoAdmision); } } public void setProcesoAdmisionDocumentos(Aspirante aspirante) { ProcesoAdmision procesoAdmision = catalogoService.findByNombre(ProcesoAdmision.class, "documentos"); if (procesoAdmision != null) { aspirante.setProcesoAdmision(procesoAdmision); } } public Session getSession() { return session; } public void setSession(Session session) { this.session = session; } @Override public void actualizarDocumento(Integer estadoRevisionId, DocumentoEntregadoId id) { throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. } @Override public void eliminarDocumentos(Serializable id) { // session = Service.getSessionFactory().getCurrentSession(); // session.beginTransaction(); // session.de } public CatalogoServiceImpl getCatalogoService() { return catalogoService; } public void setCatalogoService(CatalogoServiceImpl catalogoService) { this.catalogoService = catalogoService; } public List<String> findAllFolios(PeriodoAdmision periodo) { List<String> folios = new ArrayList<>(); try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); folios = session.createCriteria(MedicoResidente.class).add(Restrictions.isNotNull("folio")) .setProjection(Projections.property("folio")).list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return folios; } public void generarFolio(Aspirante aspirante) { String folio = ""; String numeroAspirante; PeriodoAdmision periodoAdmision = this.catalogoService.findPeriodoActual(); Curso curso = aspirante.getCurso(); List<Aspirante> aspirantesConFolio = this.findAllAspirantesWithFolio(curso, periodoAdmision); if (aspirantesConFolio.isEmpty()) { numeroAspirante = "1"; } else { numeroAspirante = Integer.toString(aspirantesConFolio.size() + 1); } Calendar calendar = Calendar.getInstance(); calendar.setTime(periodoAdmision.getPeriodoEntregaDocumentos().getFechaInicio()); Integer year = calendar.get(Calendar.YEAR); String periodo = year.toString(); folio = numeroAspirante + "-" + aspirante.getCurso().getClave() + "-" + periodo; System.out.println("Folio generado: " + folio); aspirante.getMedico().setFolio(folio); //return folio; } public Aspirante findByEmail(String aspiranteEmail) { Aspirante aspirante = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<Aspirante> aspirantes = session.createCriteria(Aspirante.class) .add(Restrictions.eq("email", aspiranteEmail)).list(); if (!aspirantes.isEmpty()) { aspirante = aspirantes.get(0); } session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return aspirante; } public Aspirante find(AspiranteId aspiranteId) { Aspirante aspirante = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); aspirante = (Aspirante) session.get(Aspirante.class, aspiranteId); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } return aspirante; } public Serializable registerAspirante(MedicoResidente usuario, Curso curso) { Serializable id = null; try { UsuarioServiceImpl usuarioServiceImpl = new UsuarioServiceImpl(); CatalogoServiceImpl catalogoServiceImpl = new CatalogoServiceImpl(); usuario.setMailToken(usuarioServiceImpl.generateToken()); usuario.setEnabled(false); PeriodoAdmision periodoAdmision = catalogoServiceImpl.findPeriodoActual(); ProcesoAdmision procesoAdmision = catalogoServiceImpl.findByNombre(ProcesoAdmision.class, "documentos"); session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); Serializable medicoId = session.save(usuario); AspiranteId aspiranteId = new AspiranteId((Integer) medicoId, periodoAdmision.getId()); Aspirante aspirante = new Aspirante(); aspirante.setAspiranteId(aspiranteId); aspirante.setProcesoAdmisionId(procesoAdmision.getId()); aspirante.setCursoId(curso.getId()); id = session.save(aspirante); session.getTransaction().commit(); } catch (Exception e) { System.out.println("Ha ocurrido un error"); session.getTransaction().rollback(); // throw e; } return id; } public void update(Aspirante aspirante) { try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.saveOrUpdate(aspirante); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } } public TipoEvento determineTipoEvento(Aspirante aspirante) { TipoEvento tipoEvento; String nombreTipoEvento; switch (aspirante.getProcesoAdmision().getNombre()) { case "entrevista 1": nombreTipoEvento = "Entrevista 1"; break; case "entrevista 2": nombreTipoEvento = "Entrevista 2"; break; case "entrevista 3": nombreTipoEvento = "Entrevista 3"; break; default: nombreTipoEvento = ""; break; } tipoEvento = catalogoService.findByNombre(TipoEvento.class, nombreTipoEvento); return tipoEvento; } public TipoEvento determineNextTipoEvento(Aspirante aspirante) { String nombreTipoEvento = ""; switch (aspirante.getProcesoAdmision().getNombre()) { case "entrevista 1": nombreTipoEvento = "Entrevista 2"; break; case "entrevista 2": nombreTipoEvento = "Entrevista 3"; break; } TipoEvento tipoEvento = catalogoService.findByNombre(TipoEvento.class, nombreTipoEvento); return tipoEvento; } private List<Aspirante> findAllAspirantesWithFolio(Curso curso, PeriodoAdmision periodoAdmision) { List<Aspirante> aspirantes = new ArrayList<>(); try { Map<String, Object> properties = new HashMap<String, Object>(); properties.put("cursoId", curso.getId()); properties.put("periodoAdmisionId", periodoAdmision.getId()); session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); aspirantes = session.createCriteria(Aspirante.class).add(Restrictions.allEq(properties)).list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } return aspirantes; } }