Nova versao do simulador e tratamento de erros das chamadas.
[simdecs2.git] / src / java / org / ufcspa / simdecs / comunicacao / MetodoFimCaso.java
1 /*
2  * To change this template, choose Tools | Templates
3  * and open the template in the editor.
4  */
5 package org.ufcspa.simdecs.comunicacao;
6
7 import java.io.PrintWriter;
8 import java.util.Date;
9 import java.util.List;
10 import javax.persistence.EntityManager;
11 import javax.servlet.http.HttpServletRequest;
12 import javax.servlet.http.HttpServletResponse;
13 import org.ufcspa.simdecs.entities.Log;
14 import org.ufcspa.simdecs.entities.Paciente;
15 import org.ufcspa.simdecs.entities.SessaoUsuario;
16 import org.ufcspa.simdecs.entities.TipoEventoLog;
17 import org.ufcspa.simdecs.mediador.NegociacaoPedagogica;
18
19 /**
20  *
21  * @author maroni
22  */
23 public class MetodoFimCaso extends BaseComunicacao {
24
25     @Override
26     protected void executaServico(EntityManager em, HttpServletRequest request, HttpServletResponse response, PrintWriter out) throws Exception {
27         response.setContentType("text/html;charset=UTF-8");
28         response.setContentType("text/xml");
29         response.setHeader("Cache-Control", "no-cache");
30
31         long pIdSessao = Long.parseLong(request.getParameter("idsessao"));
32
33         // Registra Log
34         SessaoUsuario sessaoUsuario = em.find(SessaoUsuario.class, pIdSessao);
35         if (sessaoUsuario == null) {
36             return;
37         }
38
39         if (!em.getTransaction().isActive()) {
40             em.getTransaction().begin();
41         }
42
43         Log log = new Log();
44         log.setTipo(em.find(TipoEventoLog.class, TipoEventoLog.FIM_CASO));
45         log.setCaso(sessaoUsuario.getCaso());
46         log.setData(new Date());
47         log.setSessaoUsuario(sessaoUsuario);
48
49         em.persist(log);
50         em.getTransaction().commit();
51
52         out.println("<xml>");
53
54             List<Paciente> pacientes = em.createQuery("From Paciente where caso.id=:pIdCaso")
55                                          .setParameter("pIdCaso", sessaoUsuario.getCaso().getId())
56                                          .getResultList();
57             
58             out.print("    <resposta_final_mediador mensagem=\"");
59             // Busca os pacientes
60             for(Paciente paciente : pacientes) {
61                 NegociacaoPedagogica negociacao = new NegociacaoPedagogica(pIdSessao, paciente);
62                 out.println(negociacao.getMensagemFinal());
63             }
64             out.print("\" />");
65             
66         out.println("   <execucao sucesso=\"sim\" />" );
67         out.println("</xml>");
68     }
69 }