View Javadoc

1   /*
2    * DatasourceServlet.java
3    *
4    * Created on 29 de Abril de 2005, 06:07
5    */
6   
7   package org.thema.scriptware.controller;
8   
9   import java.io.*;
10  import java.util.HashMap;
11  import javax.servlet.RequestDispatcher;
12  import javax.servlet.ServletContext;
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 javax.servlet.http.HttpSession;
18  import org.thema.scriptware.digester.DigesterDatasource;
19  import org.thema.scriptware.digester.DigesterPlugin;
20  import java.net.CacheRequest;
21  /***
22   *
23   * @author Eduardo M . Sasso
24   * @version
25   */
26  public class DatasourceServlet extends HttpServlet {
27      
28      /*** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
29       * @param request servlet request
30       * @param response servlet response
31       */
32      protected void processRequest(HttpServletRequest request, HttpServletResponse response)
33      throws ServletException, IOException {
34          HttpSession session = request.getSession();
35          
36          ServletContext servletContext = this.getServletContext();
37          InputStream inputStream = servletContext.getResourceAsStream("META-INF/datasources.xml");
38          if (inputStream == null) {
39              throw new IOException("Arquivo META-INF/datasources.xml não foi encontrado!");
40          }
41          DigesterDatasource digesterDatasource = new DigesterDatasource(inputStream);
42          
43          try {
44              digesterDatasource.digest();
45          } catch (IOException e) {
46              throw new IOException(e.getMessage());
47          } catch (org.xml.sax.SAXException ex) {
48              throw new ServletException(ex.getMessage());
49          }
50          setPlugins(request);
51          HashMap hashMap = (HashMap)digesterDatasource.getDatasources();
52          
53          session.setAttribute("datasources", hashMap);
54          request.setAttribute("datasources", hashMap.values());
55          
56          RequestDispatcher dispatcher = request.getRequestDispatcher("datasource.jsp");
57          dispatcher.forward(request,response);
58      }
59      /* TODO
60       * tem q centralizar a carga dos xmls em um lugar unico e organizado, e tambem permitir a atualizacao
61       * do usuario de plugins por exemplo
62       */
63      private void setPlugins(HttpServletRequest request)throws ServletException, IOException {
64          HttpSession session = request.getSession();
65          
66          ServletContext servletContext = this.getServletContext();
67          InputStream inputStream = servletContext.getResourceAsStream("META-INF/plugins.xml");
68          if (inputStream == null) {
69              throw new IOException("arquivo META-INF/plugins.xml não foi encontrado!");
70          }
71          DigesterPlugin digesterPlugin = new DigesterPlugin(inputStream);
72          
73          try {
74              digesterPlugin.digest();
75          } catch (IOException e) {
76              throw new IOException(e.getMessage());
77          } catch (org.xml.sax.SAXException ex) {
78              throw new ServletException(ex.getMessage());
79          }
80          HashMap hashMap = (HashMap)digesterPlugin.getPlugins();
81          
82          session.setAttribute("pluginsMap", hashMap);
83          session.setAttribute("plugins", hashMap.values());
84      }
85      protected void doGet(HttpServletRequest request, HttpServletResponse response)
86      throws ServletException, IOException {
87          processRequest(request, response);
88      }
89      
90      protected void doPost(HttpServletRequest request, HttpServletResponse response)
91      throws ServletException, IOException {
92          processRequest(request, response);
93      }
94      
95      public String getServletInfo() {
96          return "Short description";
97      }
98      
99      public void init() throws ServletException {
100         
101         super.init();
102     }
103 }