View Javadoc

1   /*
2    * ParamsServlet.java
3    *
4    * Created on 19 de Julho de 2005, 06:09
5    */
6   
7   package org.thema.scriptware.controller;
8   
9   import java.io.*;
10  import java.util.ArrayList;
11  import java.util.HashMap;
12  import java.util.Iterator;
13  
14  import javax.servlet.*;
15  import javax.servlet.http.*;
16  import org.thema.scriptware.digester.Param;
17  import org.thema.scriptware.digester.Plugin;
18  import org.thema.scriptware.digester.Script;
19  
20  /***
21   *
22   * @author Eduardo M . Sasso
23   * @version
24   */
25  public class ParamsServlet extends HttpServlet {
26      
27      /*** Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
28       * @param request servlet request
29       * @param response servlet response
30       */
31      protected void processRequest(HttpServletRequest request, HttpServletResponse response)
32      throws ServletException, IOException {
33          HttpSession session = request.getSession();
34          String pluginID = request.getParameter("id");
35          
36          HashMap plugins = (HashMap)session.getAttribute("pluginsMap");
37          Plugin plugin = (Plugin)plugins.get(pluginID);
38          ArrayList arrayList = plugin.getScripts();
39          
40          Script script=null;
41          // procura parametros nos scripts
42          Iterator iterator = arrayList.iterator();
43          
44          RequestDispatcher dispatcher = null;
45          
46          /*
47           somente verifica se existe parametros senao segue o fluxo
48           de execucao normal, chamando o servlet plugin para recuperar o script
49           */
50          if (request.getRequestURI().endsWith("/params")){
51              int cont=0;            
52              while (iterator.hasNext()){
53                  script = (Script) iterator.next();
54                  if (script.getParams().size() >0) {
55                      ++cont;
56                      break;
57                  }
58              }
59              
60              if (cont == 0) {
61                  dispatcher = request.getRequestDispatcher("plugin");
62              } else if (cont >0) {
63                  request.setAttribute("scripts", arrayList);
64                  request.setAttribute("id", pluginID);
65                  dispatcher = request.getRequestDispatcher("params.jsp");
66              }
67              dispatcher.forward(request,response);
68          } else if (request.getRequestURI().endsWith("/prepareSQL")){
69              /*
70              se chegou aqui eh pq tem parametros, entao tem q substituir os parametros
71              pelo no sql
72              */
73              String sql;
74              Iterator it = null;
75              ArrayList params = null;
76              Param param = null;
77              String reqParam;
78              String replace;
79              while (iterator.hasNext()){
80                  script = (Script) iterator.next();
81                  sql = script.getSql();
82                  params = script.getParams();
83                  it = params.iterator();
84                  
85                  while (it.hasNext()){
86                      param = (Param) it.next();
87                      /*
88                      script.parametro - pq pode haver mais de um parametro com 
89                      mesmo nome em um plugin com varios scripts
90                      */
91                      reqParam = script.getName() + '.' + param.getName();
92                      if (request.getParameter(reqParam) != null ) {
93                          reqParam = (String)request.getParameter(reqParam);
94                          replace = ":" + param.getName();
95                          sql = sql.replaceAll(replace, reqParam);                        
96                      }
97                  }
98                  script.setSqlParams(sql);
99              }
100             request.setAttribute("id", pluginID);
101             dispatcher = request.getRequestDispatcher("/pluginParams");
102             dispatcher.forward(request,response);
103         }
104     }
105 
106     
107 // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
108     /*** Handles the HTTP <code>GET</code> method.
109      * @param request servlet request
110      * @param response servlet response
111      */
112     protected void doGet(HttpServletRequest request, HttpServletResponse response)
113     throws ServletException, IOException {
114         processRequest(request, response);
115     }
116     
117     /*** Handles the HTTP <code>POST</code> method.
118      * @param request servlet request
119      * @param response servlet response
120      */
121     protected void doPost(HttpServletRequest request, HttpServletResponse response)
122     throws ServletException, IOException {
123         processRequest(request, response);
124     }
125     
126     /*** Returns a short description of the servlet.
127      */
128     public String getServletInfo() {
129         return "Short description";
130     }
131 // </editor-fold>
132 }