1    package com.instantbank.servicing.control.web.handlers;
2    
3    import java.util.HashMap;
4    import java.util.ArrayList;
5    import java.util.Enumeration;
6    import java.util.Locale;
7    import java.util.Hashtable;
8    import javax.servlet.http.HttpServletRequest;
9    import javax.servlet.ServletContext;
10   
11   import oracle.xml.parser.v2.*;
12   import org.w3c.dom.*;
13   import org.xml.sax.*;
14   
15   import com.instantbank.servicing.control.event.ParmSearchOrderEvent;
16   import com.instantbank.servicing.control.util.JSPUtil;
17   import com.instantbank.servicing.control.util.WebKeys;
18   import com.instantbank.common.utilcomponents.Debug;
19   import com.instantbank.common.utilcomponents.ServicingExceptionMessage;
20   import com.instantbank.servicing.control.ServicingEventException;
21   import com.instantbank.servicing.control.event.ServicingEvent;
22   
23   /**
24    * Set Parameter Search Order usecase: handler of user requests in the Application layer
25    *
26    * @author Instant-bank (Jorge Cardenas)
27    * @created September 2002
28    */
29   public class ParmSearchOrderHandler extends RequestHandlerSupport {
30   
31     private Debug debug = null;
32     ServletContext context;
33   
34   
35   
36     /**
37      *  principal method that process a user request instantiating a ParmSearchOrderEvent
38      *  with the user request data
39      *
40      * @param request of MainServlet
41      * @param context of MainServlet
42      * @return ParmSearchOrderEvent with the user
43      *      request data
44      * @exception ServicingEventException
45      */
46     public ServicingEvent processRequest(HttpServletRequest request,
47                                          ServletContext context)
48        throws ServicingEventException {
49       debug = new Debug();
50       debug.setDebugginOn(true);
51       debug.setPreMessage("** ParmSearchOrderHandler-application tier: ");
52   
53       this.context = context;
54       String action = request.getParameter("action");
55       debug.println("Creation of an ParmSearchOrderEvent Event; "
56         + "ParmSearchOrderHandler (web): action=" + action);
57   
58       if(action == null) {
59         throw new ServicingEventException
60           (ServicingExceptionMessage.SERVICE_NOT_SELECTED);
61       }
62       else if(action.equals("listParmSearchOrder")) {
63         return createListParmSearchOrderEvent(request);
64       }
65       else if(action.equals("updateParmSearchOrder")) {
66         return createUpdateParmSearchOrderEvent(request);
67       }
68       return null;
69     }
70   
71   
72     /**
73      * method for instantiating a ParmSearchOrderEvent demanding a service of
74      * getting the parameter search order
75      *
76      * @param request of MainServlet
77      * @return ParmSearchOrderEvent with the user request data
78      * @exception ServicingEventException
79      */
80     private ServicingEvent createListParmSearchOrderEvent
81       (HttpServletRequest request)
82        throws ServicingEventException {
83   
84       try {
85   
86         // instantiating ParmSearchOrderEvent:
87         ParmSearchOrderEvent event
88            = new ParmSearchOrderEvent
89           (ParmSearchOrderEvent.LIST_PARM_SEARCH_ORDER,
90           (String)request.getSession()
91           .getAttribute(WebKeys.CompanyId),
92           (Long)request.getSession().
93           getAttribute(WebKeys.UserId),
94           null);
95   
96         request.setAttribute(WebKeys.ParmSearchOrderEvent, event);
97         return event;
98       }
99       catch(Exception e) {
100        throw new ServicingEventException
101          (ServicingExceptionMessage.PROBLEM_PARSING + e.getMessage()
102          + ServicingExceptionMessage.RETRY);
103      }
104    }
105  
106  
107    /**
108     * method for instantiating a ParmSearchOrderEvent demanding a service of
109     * updating parameter search order
110     *
111     * @param request of MainServlet
112     * @return ParmSearchOrderEvent with the user request data
113     * @exception ServicingEventException
114     */
115    private ServicingEvent createUpdateParmSearchOrderEvent
116      (HttpServletRequest request)
117       throws ServicingEventException {
118  
119      ArrayList items = new ArrayList(2);
120      ArrayList secondItems = new ArrayList(2);
121      ArrayList thirdItems = new ArrayList(2);
122  
123      try {
124        String parmSearchOrder1 = request.getParameter("second");
125        String parmSearchOrder2 = request.getParameter("third");
126        String secondSkip = request.getParameter("sSkip");
127        String thirdSkip = request.getParameter("tSkip");
128  
129        if(secondSkip.equals("yes") && thirdSkip.equals("no")) {
130          if(parmSearchOrder2.equals("1,*")) {
131            parmSearchOrder1 = "*,2";
132          }
133          else if(parmSearchOrder2.equals("*,2")) {
134            parmSearchOrder1 = "1,*";
135          }
136        }
137        else if(secondSkip.equals("no") && thirdSkip.equals("yes")) {
138          if(parmSearchOrder1.equals("1,*")) {
139            parmSearchOrder2 = "*,2";
140          }
141          else if(parmSearchOrder1.equals("*,2")) {
142            parmSearchOrder2 = "1,*";
143          }
144        }
145        else if(secondSkip.equals("yes") && thirdSkip.equals("yes")) {
146          parmSearchOrder1 = "1,*";
147          parmSearchOrder2 = "*,2";
148        }
149  
150        secondItems.add(0, parmSearchOrder1);
151        secondItems.add(1, secondSkip);
152  
153        thirdItems.add(0, parmSearchOrder2);
154        thirdItems.add(1, thirdSkip);
155  
156        items.add(secondItems);
157        items.add(thirdItems);
158  
159        // instantiating ParmSearchOrderEvent
160        ParmSearchOrderEvent event
161           = new ParmSearchOrderEvent
162          (ParmSearchOrderEvent.UPDATE_PARM_SEARCH_ORDER,
163          (String)request.getSession().
164          getAttribute(WebKeys.CompanyId),
165          (Long)request.getSession().
166          getAttribute(WebKeys.UserId),
167          items);
168        request.setAttribute(WebKeys.ParmSearchOrderEvent, event);
169        return event;
170      }
171      catch(Exception e) {
172        throw new ServicingEventException
173          (ServicingExceptionMessage.PROBLEM_PARSING + e.getMessage()
174          + ServicingExceptionMessage.RETRY);
175      }
176    }
177  }
178  
179