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.evento.service; import com.ipn.escom.ageinnn.aspirante.model.Aspirante; import com.ipn.escom.ageinnn.aspirante.model.AspiranteId; import com.ipn.escom.ageinnn.configuracion.model.PeriodoAdmision; import com.ipn.escom.ageinnn.evento.model.EstadoEvento; import com.ipn.escom.ageinnn.evento.model.Evento; import com.ipn.escom.ageinnn.evento.model.TipoEvento; import com.ipn.escom.ageinnn.service.Service; import com.ipn.escom.ageinnn.usuario.model.Docente; import com.ipn.escom.ageinnn.usuario.model.MedicoResidente; import com.ipn.escom.ageinnn.usuario.service.AspiranteServceImpl; import com.ipn.escom.ageinnn.usuario.service.CatalogoServiceImpl; import com.ipn.escom.ageinnn.usuario.service.UsuarioServiceImpl; import com.ipn.escom.ageinnn.utils.EventoDTO; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.transaction.Transactional; import org.hibernate.Session; import org.hibernate.criterion.Restrictions; /** * * @author Erick */ public class EventoService { private Session session; public boolean validarEvento(EventoDTO evento) { System.out.println("EVENTO_SERVICE: Validando evento........"); boolean validado = false; UsuarioServiceImpl usuarioService = new UsuarioServiceImpl(); CatalogoServiceImpl catalogoServiceImpl = new CatalogoServiceImpl(); AspiranteServceImpl aspiranteServceImpl = new AspiranteServceImpl(); PeriodoAdmision periodoAdmision = catalogoServiceImpl.findPeriodoActual(); MedicoResidente medico = usuarioService.findByEmail(MedicoResidente.class, evento.getAspiranteEmail()); Aspirante aspirante = aspiranteServceImpl.find(new AspiranteId(medico.getId(), periodoAdmision.getId())); Docente docente = usuarioService.findByEmail(Docente.class, evento.getDocenteEmail()); if (aspirante != null && docente != null) { CatalogoServiceImpl catalogoService = new CatalogoServiceImpl(); System.out.println("PeriodoAdmision actual: " + periodoAdmision.getId()); boolean isInPeriodoActual = aspirante.getPeriodoAdmision().getId().equals(periodoAdmision.getId()); boolean isInEntrevista = !("documentos".equals(aspirante.getProcesoAdmision().getNombre()) && "rechazado".equals(aspirante.getProcesoAdmision().getNombre())); if (isInPeriodoActual && isInEntrevista) { TipoEvento entrevista = catalogoService.find(TipoEvento.class, evento.getTipoEventoId()); String tipoEventoNombre = ""; try { switch (entrevista.getNombre()) { case "Entrevista 1": tipoEventoNombre = "entrevista 1"; break; case "Entrevista 2": tipoEventoNombre = "entrevista 2"; break; case "Entrevista 3": tipoEventoNombre = "entrevista 3"; break; } boolean isRightEvento = tipoEventoNombre.equals(aspirante.getProcesoAdmision().getNombre()); if (isRightEvento) { Evento eventoEncontrado = this.findByAspiranteAndTipoEvento(aspirante, entrevista); if (eventoEncontrado == null || "cancelado".equals(eventoEncontrado.getEstadoEvento().getNombre())) { validado = true; } } } catch (NullPointerException npe) { System.out.println("No se encuentra el tipo de evento"); } catch (Exception e) { System.out.println("Algo ha salido mal"); throw e; } } } return validado; } @SuppressWarnings("unchecked") public Evento findByAspiranteAndTipoEvento(Aspirante aspirante, TipoEvento tipoEvento) { Evento evento = null; session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); List<Evento> eventoList = session.createCriteria(Evento.class) .add(Restrictions.eq("medicoId", aspirante.getMedico().getId())) .add(Restrictions.eq("tipoEventoId", tipoEvento.getId())).list(); session.getTransaction().commit(); if (!eventoList.isEmpty()) { evento = eventoList.get(0); } return evento; } @Transactional public Serializable save(Evento evento) { Serializable id = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); id = session.save(evento); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } return id; } public Evento find(Serializable id) { Evento evento = null; session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); evento = (Evento) session.get(Evento.class, id); session.getTransaction().commit(); return evento; } public void delete(Evento evento) { try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.delete(evento); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } } public List<Evento> findByDocenteAndEstadoEvento(Docente docente, EstadoEvento pendiente) { List<Evento> eventoList = new ArrayList<>(); try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); eventoList = session.createCriteria(Evento.class).add(Restrictions.eq("docenteId", docente.getId())) .add(Restrictions.eq("estadoEventoId", pendiente.getId())).list(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return eventoList; } public Session getSession() { return session; } public void setSession(Session session) { this.session = session; } public Evento findByDocenteAndEventoId(Docente docente, Integer eventoId) { Evento entrevista = null; try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); entrevista = (Evento) session.createCriteria(Evento.class).add( Restrictions.and(Restrictions.idEq(eventoId), Restrictions.eq("docenteId", docente.getId()))) .uniqueResult(); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); throw e; } return entrevista; } public void update(Evento entrevista) { try { session = Service.getSessionFactory().getCurrentSession(); session.beginTransaction(); session.saveOrUpdate(entrevista); session.getTransaction().commit(); } catch (Exception e) { session.getTransaction().rollback(); } } public void setEstadoEntrevistaEnCurso(Evento evento) { CatalogoServiceImpl catalogoServiceImpl = new CatalogoServiceImpl(); EstadoEvento enCurso = catalogoServiceImpl.findByNombre(EstadoEvento.class, "en curso"); if (enCurso != null) { evento.setEstadoEventoId(enCurso.getId()); } } }