/* * ComandoInserirPessoa.java * * Created on 13 de Junho de 2007, 07:40 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ package app; import java.io.IOException; import javax.mail.MessagingException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import s3e.*; import dao.*; import helper.GoogleTest; import helper.Mailer; import java.security.Security; import java.util.Iterator; import javax.servlet.http.HttpSession; public class ComandoSubmeterTrabalho implements Comando { /** Creates a new instance of ComandoInserirPessoa */ public ComandoSubmeterTrabalho() { } public String executar(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { if(request.getParameter("passo") != null) { if(request.getParameter("passo").equals("0")) return x(request, response); else if(request.getParameter("passo").equals("1")) return registrarAutorPrincipal(request, response); else if(request.getParameter("passo").equals("2")) return registrarEscolhaTipoTrabalho(request, response); else if(request.getParameter("passo").equals("3")) return registrarDadosTrabalho(request, response); else if(request.getParameter("passo").equals("4")) return registrarOutroAutor(request, response); else if(request.getParameter("passo").equals("4.1")) return registrarCoordenadorPrincipal(request, response); else if(request.getParameter("passo").equals("4.2")) return registrarOutrosCoordenadores(request, response); else if(request.getParameter("passo").equals("4.3")) return registrarOutrosAtores(request, response); else if(request.getParameter("passo").equals("5")) return registrarSubmissao(request, response); else return "WEB-INF/Erro.jsp?msgErro=Passo"; } else return "WEB-INF/Erro.jsp?msgErro=Passo"; } private String registrarAutorPrincipal(HttpServletRequest request, HttpServletResponse response) { Pessoa pessoa = obterDadosPessoa(request); Usuario usuario = new Usuario(); usuario.setLogin(pessoa.getEmail()); usuario.setSenha(request.getParameter("submissao_senha")); usuario.setPessoa(pessoa); //request.setAttribute("usuario", usuario); if(!Mailer.isValidEmailAddress(request.getParameter("submissao_email"))) { return "/WEB-INF/RetryPessoa.jsp?erro='Endereço de email inválido. Por favor, corrija.'"; } HttpSession s = request.getSession(true); s.setAttribute("usuario", usuario); if (usuario.ehValido() && pessoa.ehValido() && pessoa.getEndereco().ehValido()) { return "/WEB-INF/EscolhaTipoTrabalho.jsp"; } else { return "/WEB-INF/RetryPessoa.jsp"; } } private String registrarDadosTrabalho(HttpServletRequest request, HttpServletResponse response) { HttpSession session = request.getSession(true); if(session.getAttribute("tipoTrabalho").equals("CicloMultidisciplinar")) { return registrarDadosAtividade(request); } else if(session.getAttribute("tipoTrabalho").equals("Expotec")) { return registrarDadosProjeto(request); } else { return "/WEB-INF/Erro.jsp?msgErro=Tipo de trabalho não foi definido."; } } private String registrarDadosProjeto(HttpServletRequest request) { Projeto projeto = new Projeto(); projeto.setSituacao(1); projeto.setResumo(request.getParameter("resumo")); projeto.setTitulo(request.getParameter("titulo")); Turno turno = TrabalhoDAO.getInstance().obterTurno(request.getParameter("turno")); projeto.setTurno(turno); AreaTematica area = TrabalhoDAO.getInstance().obterAreaTematica(request.getParameter("areaTematica")); projeto.setAreaTematica(area); HttpSession s = request.getSession(true); s.setAttribute("trabalho", projeto); Usuario usuario = (Usuario) s.getAttribute("usuario"); projeto.setAutorPrincipal(usuario); projeto.getAutores().add(usuario.getPessoa()); if (projeto.ehValido()) { return "/WEB-INF/RegistrarCoordenadorPrincipalProjeto.jsp"; } else { return "/WEB-INF/SubmeterProjeto.jsp?erro=Houve um erro. Por favor, corrija o que for solicitado e reenvie o formulário."; } } private String registrarDadosAtividade(HttpServletRequest request) { Atividade atividade = new Atividade(request.getParameter("tipoAtividade")); atividade.setSituacao(1); atividade.setResumo(request.getParameter("resumo")); atividade.setTitulo(request.getParameter("titulo")); Turno turno = TrabalhoDAO.getInstance().obterTurno(request.getParameter("turno")); atividade.setTurno(turno); AreaTematica area = TrabalhoDAO.getInstance().obterAreaTematica(request.getParameter("areaTematica")); atividade.setAreaTematica(area); HttpSession s = request.getSession(true); s.setAttribute("trabalho", atividade); Usuario usuario = (Usuario) s.getAttribute("usuario"); atividade.setAutorPrincipal(usuario); atividade.getAutores().add(usuario.getPessoa()); if (atividade.ehValido()) { return "/WEB-INF/RegistrarOutrosAutores.jsp"; } else { return "/WEB-INF/SubmeterAtividade.jsp?erro=Houve um erro. Por favor, corrija o que for solicitado e reenvie o formulário."; } } private String registrarOutroAutor(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); Trabalho trabalho = (Trabalho) s.getAttribute("trabalho"); if (trabalho == null){ return "/WEB-INF/Erro.jsp?msgErro=Trabalho não foi definido."; } String nome = request.getParameter("nome"); Pessoa p = new Pessoa(nome); trabalho.getAutores().add(p); return "/WEB-INF/RegistrarOutrosAutoresProjeto.jsp"; } private String registrarOutroCoordenador(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); Projeto projeto = (Projeto) s.getAttribute("trabalho"); if (projeto == null){ return "/WEB-INF/Erro.jsp?msgErro=Trabalho não foi definido."; } String nome = request.getParameter("nome"); Pessoa p = new Pessoa(nome); projeto.getAutores().add(p); return "/WEB-INF/RegistrarOutrosAutoresProjeto.jsp"; } private boolean enviarEmailConfirmacao(Trabalho trabalho, String tipoTrabalho) { String[] sendTo = new String[1]; sendTo[0] = trabalho.getAutorPrincipal().getPessoa().getEmail(); String emailSubjectTxt = "Confirmação de registro de submissão de trabalho"; String emailMsgTxt = "Confirmamos o registro de sua submissão de trabalho, cujos detalhes são transcritos a seguir."; emailMsgTxt += "\n\nNúmero de identificação da submissão: " + trabalho.getId(); emailMsgTxt += "\n\nTítulo: " + trabalho.getTitulo(); emailMsgTxt += "\n\nNome do autor principal: " + trabalho.getAutorPrincipal().getPessoa().getNome(); emailMsgTxt += "\n\nEmail do autor principal: " + trabalho.getAutorPrincipal().getPessoa().getEmail(); emailMsgTxt += "\n\nLogin do autor principal: " + trabalho.getAutorPrincipal().getLogin(); emailMsgTxt += "\n\nSenha do autor principal: " + trabalho.getAutorPrincipal().getSenha(); emailMsgTxt += "\n\nTipo de atividade: " + trabalho.getTipo(); emailMsgTxt += "\nÁrea temática selecionada: " + trabalho.getAreaTematica().getNome(); emailMsgTxt += "\nResumo: " + trabalho.getResumo(); String emailFromAddress = "s3e.cefet.rj@gmail.com"; if(trabalho.getAutores().size() > 1) { emailMsgTxt += "\n\nNomes de todos os autores: "; Iterator itrAutores = trabalho.getAutores().iterator(); while(itrAutores.hasNext()) { emailMsgTxt += "\n\t" + itrAutores.next().getNome(); } } if(tipoTrabalho.equals("CicloMultidisciplinar")) { Atividade atividade = (Atividade) trabalho; emailMsgTxt += "\nTurno selecionado: " + atividade.getTurno().getNome(); } else if(tipoTrabalho.equals("Expotec")) { Projeto projeto = (Projeto) trabalho; emailMsgTxt += "\n\nProfessor coordenador principal: " + projeto.getCoordenadorPrincipal().getNome(); if(trabalho.getAutores().size() > 1) { emailMsgTxt += "\n\nNomes de todos os professores coordenadores: "; Iterator itr = projeto.getCoordenadores().iterator(); while(itr.hasNext()) { emailMsgTxt += "\n\t" + itr.next().getNome(); } } } try { Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider()); (new GoogleTest()).sendSSLMessage(sendTo, emailSubjectTxt, emailMsgTxt, emailFromAddress); return true; } catch (MessagingException ex) { ex.printStackTrace(); return false; } } private String registrarEscolhaTipoTrabalho(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); if(request.getParameter("tipoTrabalho").equals("CicloMultidisciplinar")) { s.setAttribute("tipoTrabalho", "CicloMultidisciplinar"); return "/WEB-INF/SubmeterAtividade.jsp"; } else if(request.getParameter("tipoTrabalho").equals("Expotec")) { s.setAttribute("tipoTrabalho", "Expotec"); return "/WEB-INF/SubmeterProjeto.jsp"; } else return "/WEB-INF/EscolhaTipoTrabalho.jsp?erro=Selecione o tipo de trabalho."; } private String registrarSubmissao(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); String tipoTrabalho = null; String page = null; if(s.getAttribute("tipoTrabalho").equals("CicloMultidisciplinar")) { Atividade trabalho = (Atividade) s.getAttribute("trabalho"); tipoTrabalho = "CicloMultidisciplinar"; if (trabalho == null || tipoTrabalho == null){ page = "/WEB-INF/Erro.jsp?msgErro=Trabalho não foi definido."; } if(enviarEmailConfirmacao(trabalho, tipoTrabalho)) { if(TrabalhoDAO.getInstance().incluirAtividade(trabalho)) { page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp"; } else { page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp?erro=Houve um erro. Por favor, corrija o que for solicitado e reenvie o formulário."; } } else page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp?erro=Houve um erro. Email de confirmação não pôde ser enviado."; } else if(s.getAttribute("tipoTrabalho").equals("Expotec")) { Projeto trabalho = (Projeto) s.getAttribute("trabalho"); tipoTrabalho = "Expotec"; if (trabalho == null || tipoTrabalho == null){ page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp?msgErro=Trabalho não foi definido."; } if(enviarEmailConfirmacao(trabalho, tipoTrabalho)) { if(TrabalhoDAO.getInstance().incluirProjeto(trabalho)) { page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp"; } else { page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp?erro=Houve um erro. Por favor, corrija o que for solicitado e reenvie o formulário."; } } else page = "/WEB-INF/ConfirmarSubmissaoTrabalho.jsp?erro=Houve um erro. Email de confirmação não pôde ser enviado."; } return page; } private String registrarOutrosCoordenadores(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); Projeto trabalho = (Projeto) s.getAttribute("trabalho"); if (trabalho == null) { return "/WEB-INF/Erro.jsp?msgErro=Trabalho não foi definido."; } String nome = request.getParameter("nome"); if(nome == null || nome.equals("")) return "/WEB-INF/RegistrarOutrosCoordenadores.jsp?erro=Nome deve ser preenchido."; Pessoa p = new Pessoa(nome); trabalho.getCoordenadores().add(p); return "/WEB-INF/RegistrarOutrosCoordenadores.jsp"; } private String registrarCoordenadorPrincipal(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); Projeto trabalho = (Projeto) s.getAttribute("trabalho"); if (trabalho == null) { return "/WEB-INF/Erro.jsp?msgErro=Trabalho não foi definido."; } Pessoa pessoa = obterDadosPessoa(request); trabalho.setCoordenadorPrincipal(pessoa); trabalho.getCoordenadores().add(pessoa); return "/WEB-INF/RegistrarOutrosCoordenadores.jsp"; } private Pessoa obterDadosPessoa(HttpServletRequest request) { Endereco endereco = new Endereco(); endereco.setLogradouro(request.getParameter("submissao_logradouro")); endereco.setBairro(request.getParameter("submissao_bairro")); endereco.setCep(request.getParameter("submissao_cep")); endereco.setCidade(request.getParameter("submissao_cidade")); endereco.setEstado(request.getParameter("submissao_estado")); endereco.setPais(request.getParameter("submissao_pais")); Telefone telefoneFixo = new Telefone(); telefoneFixo.setRamal(request.getParameter("ramalfonefixo")); telefoneFixo.setNumero(request.getParameter("fonefixo")); telefoneFixo.setPrefixo(request.getParameter("prefixofonefixo")); Pessoa pessoa = new Pessoa(); pessoa.setNome(request.getParameter("submissao_nome")); pessoa.setEmail(request.getParameter("submissao_email")); pessoa.setTelefoneFixo(telefoneFixo); pessoa.setEndereco(endereco); return pessoa; } public String x(HttpServletRequest request, HttpServletResponse response) { System.out.println("incluirTrabalho"); Projeto trabalho = null; TrabalhoDAO instance = null; Pessoa pessoa = new Pessoa(); pessoa.setNome("Eduardo Bezerra da Silva"); pessoa.setEmail("edubezerra@gmail.com"); pessoa.setFiliacao("CEFET/RJ"); Usuario usuario = new Usuario(); usuario.setLogin("bezerra"); usuario.setSenha("senha"); usuario.setPessoa(pessoa); trabalho = new Projeto(); // trabalho.setTitulo("t" + (new Date()).toString()); trabalho.setTitulo("t"); trabalho.setAutorPrincipal(usuario); Pessoa pessoaA = new Pessoa(); pessoaA.setNome("Autor A"); pessoaA.setEmail("email@AutorA"); trabalho.getAutores().add(pessoaA); Pessoa pessoaB = new Pessoa(); pessoaB.setNome("Autor B"); pessoaB.setEmail("email@AutorB"); trabalho.getAutores().add(pessoaB); Pessoa pessoaC = new Pessoa(); pessoaC.setNome("Coordenador C"); pessoaC.setEmail("email@CoordenadorC"); trabalho.getCoordenadores().add(pessoaC); Pessoa pessoaD = new Pessoa(); pessoaD.setNome("Coordenador D"); pessoaD.setEmail("email@CoordenadorD"); trabalho.getCoordenadores().add(pessoaD); boolean expResult = true; boolean result = TrabalhoDAO.getInstance().incluirProjeto(trabalho); return "/index.html"; } private String registrarOutrosAtores(HttpServletRequest request, HttpServletResponse response) { HttpSession s = request.getSession(true); Trabalho trabalho = (Trabalho) s.getAttribute("trabalho"); if (trabalho == null) { return "/WEB-INF/RegistrarOutrosAutores.jsp?erro=Trabalho não foi definido."; } String nome = request.getParameter("nome"); if(nome == null || nome.equals("")) return "/WEB-INF/RegistrarOutrosAutores.jsp?erro=Nome deve ser preenchido."; Pessoa p = new Pessoa(nome); trabalho.getAutores().add(p); return "/WEB-INF/RegistrarOutrosAutores.jsp"; } }