dd8de90e486bf5d807ce0b104075a7a9c24074a5
[simdecs2.git] / src / java / org / ufcspa / simdecs / comunicacao / BaseComunicacao.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.IOException;
8 import java.io.PrintWriter;
9 import java.io.StringWriter;
10 import java.util.Iterator;
11 import java.util.Map;
12 import javax.persistence.EntityManager;
13 import javax.servlet.ServletException;
14 import javax.servlet.http.HttpServlet;
15 import javax.servlet.http.HttpServletRequest;
16 import javax.servlet.http.HttpServletResponse;
17 import org.ufcspa.simdecs.util.DbUtil;
18
19 /**
20  *
21  * @author maroni
22  */
23 public abstract class BaseComunicacao extends HttpServlet {
24
25     protected static String stack2string(Exception e) {
26         try {
27             StringWriter sw = new StringWriter();
28             PrintWriter pw = new PrintWriter(sw);
29             e.printStackTrace(pw);
30             return "------\r\n" + sw.toString() + "------\r\n";
31         } catch (Exception e2) {
32             return "bad stack2string";
33         }
34     }
35
36     protected final void printDebug(String print) {
37         System.out.println(print);
38     }
39     
40     protected abstract void executaServico(EntityManager em, HttpServletRequest request, HttpServletResponse response, PrintWriter out) throws Exception;
41
42     protected void processRequest(HttpServletRequest request, HttpServletResponse response)
43             throws ServletException, IOException {
44         EntityManager em = DbUtil.getInstance().getEntityManager();
45
46         response.setContentType("text/html;charset=UTF-8");
47         PrintWriter out = response.getWriter();
48
49         // Debug do Servlet        
50         printDebug("------------------------------------------------------------------------------------");
51         printDebug("METODO....: " + this.getClass());
52         printDebug("PARAMETROS: ");
53         Map params = request.getParameterMap();
54         Iterator i = params.keySet().iterator();
55     
56         while ( i.hasNext() )
57         {
58             String key = (String) i.next();
59             String value = ((String[]) params.get( key ))[ 0 ];
60             printDebug("   " +  key + ": " + value);
61         }    
62         printDebug("------------------------------------------------------------------------------------");
63
64         try {
65
66             executaServico(em, request, response, out);
67         } catch(Exception e) {
68             out.println("<xml>" );
69             out.println("   <execucao sucesso=\"nao\" />" );
70             out.println("   <erro metodo=\"" + this.getServletName() + "\">" );
71             
72             Map paramsError = request.getParameterMap();
73             Iterator iError = paramsError.keySet().iterator();
74             StringBuilder parametros = new StringBuilder();
75             while ( iError.hasNext() )
76             {
77                 String key = (String) iError.next();
78                 String value = ((String[]) paramsError.get( key ))[ 0 ];
79                 parametros.append(";");
80                 parametros.append(key);
81                 parametros.append(":");
82                 parametros.append(value);
83             }    
84             out.println("       <parametros descricao=\"" + parametros.substring(1) + "\" />");
85             out.println("       <mensagem erro=\"" + stack2string(e) + "\" />");
86             out.println("   </erro>" );
87             out.println("</xml>" );
88             
89             e.printStackTrace();
90         } finally { 
91             out.close();
92         }
93     }
94
95     // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
96     /**
97      * Handles the HTTP
98      * <code>GET</code> method.
99      *
100      * @param request servlet request
101      * @param response servlet response
102      * @throws ServletException if a servlet-specific error occurs
103      * @throws IOException if an I/O error occurs
104      */
105     @Override
106     protected void doGet(HttpServletRequest request, HttpServletResponse response)
107             throws ServletException, IOException {
108         processRequest(request, response);
109     }
110
111     /**
112      * Handles the HTTP
113      * <code>POST</code> method.
114      *
115      * @param request servlet request
116      * @param response servlet response
117      * @throws ServletException if a servlet-specific error occurs
118      * @throws IOException if an I/O error occurs
119      */
120     @Override
121     protected void doPost(HttpServletRequest request, HttpServletResponse response)
122             throws ServletException, IOException {
123         processRequest(request, response);
124     }
125
126     /**
127      * Returns a short description of the servlet.
128      *
129      * @return a String containing servlet description
130      */
131     @Override
132     public String getServletInfo() {
133         return "Short description";
134     }// </editor-fold>
135 }