1
2
3
4
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
60
61
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 }