/* * ComandoAlocarAlocacao.java * * Created on 13 de Junho de 2007, 09:54 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package app; import dao.AlocacaoDAO; import dao.TrabalhoDAO; import java.io.IOException; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Vector; import javax.persistence.EntityManager; import javax.persistence.EntityManagerFactory; import javax.persistence.EntityTransaction; import javax.persistence.Persistence; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import s3e.Alocacao; import s3e.Intervalo; /** * * @author tuvax */ public class ComandoAlocarAlocacao implements Comando { /** Creates a new instance of ComandoAlocarAlocacao */ public ComandoAlocarAlocacao() { } public String executar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String tituloEvento = request.getParameter("tituloEvento"); String local = request.getParameter("local"); DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm"); Date horaInicio = null, horaFim = null; try { horaInicio = (Date) formatter.parse(request.getParameter("horaInicio")); horaFim = (Date)formatter.parse(request.getParameter("horaFim")); } catch (ParseException ex) { ex.printStackTrace(); return "/WEB-INF/RetryAlocarLocalizacao.jsp"; } boolean podeRegistrar = true; if(tituloEvento.equals("selecione...")) podeRegistrar = false; if(local.equals("selecione...")) podeRegistrar = false; try { horaInicio = (Date) formatter.parse(request.getParameter("horaInicio")); horaFim = (Date)formatter.parse(request.getParameter("horaFim")); } catch (ParseException ex) { ex.printStackTrace(); return "/WEB-INF/Erro.jsp"; } Intervalo novoIntervalo = new Intervalo(); novoIntervalo.setHorarioInicio(horaInicio); novoIntervalo.setHorarioFim(horaFim); if (!verificarHorario(request,response, novoIntervalo)) { podeRegistrar = false; } if(podeRegistrar) { boolean r = TrabalhoDAO.getInstance().definirAlocacaoEvento(tituloEvento, local, novoIntervalo); if(r) return "/WEB-INF/ListarAlocacoes.jsp"; } return "/WEB-INF/Erro.jsp"; } public boolean verificarHorario(HttpServletRequest request, HttpServletResponse response, Intervalo novoIntervalo) throws ServletException, IOException{ boolean verificarHorario = true; DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm"); List alocacoes = AlocacaoDAO.getInstance().obterAlocacoes(); Iterator it = alocacoes.iterator(); while (it.hasNext()) { Alocacao al = (Alocacao) it.next(); if(al.getIntervalo().haIntersecao(novoIntervalo)) return false; } if (novoIntervalo.getHorarioInicio().getTime() > novoIntervalo.getHorarioFim().getTime()){ verificarHorario = false; } if (novoIntervalo.getHorarioInicio().equals("") || (novoIntervalo.getHorarioFim().equals(""))){ verificarHorario = false; } return verificarHorario; } }