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.Hashtable;
7    import java.util.StringTokenizer;
8    
9    import javax.servlet.http.HttpServletRequest;
10   import javax.servlet.ServletContext;
11   import com.instantbank.servicing.control.event.ParmLevel1ValuesEvent;
12   import com.instantbank.servicing.control.util.JSPUtil;
13   import com.instantbank.servicing.control.util.WebKeys;
14   import com.instantbank.common.utilcomponents.Debug;
15   import com.instantbank.common.utilcomponents.ServicingGlobals;
16   import com.instantbank.servicing.control.ServicingEventException;
17   import com.instantbank.common.utilcomponents.CodeDescription;
18   
19   
20   /**
21    *  Parameter level1 Values usecase: flow handler for deciding output screen after
22    *  processing an action
23    *
24    * @author Instant-bank (Jorge Cardenas)
25    * @created September 2002
26    */
27   public class ParmLevel1ValuesFlowHandler
28       implements FlowHandler {
29     private Debug debug = null;
30   
31   
32     /**
33      *  optional execution before processFlow method
34      *
35      * @param request HTTP request
36      */
37     public void doStart(HttpServletRequest request) { }
38   
39   
40     /**
41      *  principal method for deciding output screen after processing an action
42      *
43      * @param request of MainServlet
44      * @param answer of the action
45      * @param context web context
46      * @return String with the number of the  output screen
47      * @exception ServicingEventException
48      */
49     public String processFlow(HttpServletRequest request, Object answer,
50                               ServletContext context)
51        throws ServicingEventException {
52   
53       debug = new Debug();
54       debug.setDebugginOn(true);
55       debug.setPreMessage("** ParmLevel1ValuesFlowHandler: ");
56       debug.println("processFlow");
57   
58       String nextScreen = null;
59       ParmLevel1ValuesEvent ce = null;
60   
61       String companyNumber = (String)request.getSession()
62         .getAttribute(WebKeys.CompanyNumber);
63   
64       if(request.getAttribute(WebKeys.ParmLevel1ValuesEvent) != null) {
65         ce = (ParmLevel1ValuesEvent)request.getAttribute(WebKeys.ParmLevel1ValuesEvent);
66       }
67   
68       if(request.getAttribute(WebKeys.ExceptionOcurred) != null) {
69         nextScreen = "1";  // PARM_LEVEL1_VALUES_PROBLEM
70   
71       }
72       else if(ce.getActionType() == ParmLevel1ValuesEvent.LIST_PARM_LEVEL1_VALUES) {
73         // answer is an ArrayList with 2 elements:
74         // 0: current parameter levels name list: ArrayList()
75         // 1: current parameter level1 values list: CodeDescription[]
76   
77         // puts current parameter level1 values list in the web request :
78         request.setAttribute(WebKeys.ParmLevel1ValuesList, ((ArrayList)answer).get(1));
79   
80         // puts current parameter levels name list in the web request :
81         request.setAttribute
82           (WebKeys.ParmLevelsNameList, ((ArrayList)answer).get(0));
83   
84         nextScreen = "2";  // PARM_LEVEL1_VALUES_MAIN
85   
86       }
87       else if(ce.getActionType() == ParmLevel1ValuesEvent.UPDATE_PARM_LEVEL1_VALUES) {
88         // answer is an ArrayList with 3 elements:
89         // 0: possible problem: String
90         // 1: current parameter levels name list: ArrayList()
91         // 2: current parameter level1 values list: CodeDescription[]
92   
93         // puts current parameter level1 values list in the web request :
94         request.setAttribute
95           (WebKeys.ParmLevel1ValuesList, ((ArrayList)answer).get(2));
96   
97         // puts current parameter levels name in the web request :
98         request.setAttribute
99           (WebKeys.ParmLevelsNameList, ((ArrayList)answer).get(1));
100  
101        String problem = (String)(((ArrayList)answer).get(0));
102        if(problem.equals(ServicingGlobals.STR_UNDEF)) {
103          nextScreen = "2";  // PARM_LEVEL1_VALUES_MAIN
104        }
105        else {  // problem is: theProblem|theStackTrace
106          JSPUtil.putProblemInRequest(request, problem);
107          nextScreen = "1";  // PARM_LEVEL1_VALUES_PROBLEM
108        }
109      }
110      return nextScreen;
111    }
112  
113  
114    /**
115     * optional execution after processFlow method
116     *
117     * @param request Description of the Parameter
118     */
119    public void doEnd(HttpServletRequest request) { }
120  }
121  
122