1    package com.instantbank.lettertemplate.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   
12   import javax.servlet.http.HttpServletRequest;
13   import javax.servlet.ServletContext;
14   import javax.servlet.http.HttpSession;
15   import com.instantbank.lettertemplate.control.event.BatchStartEvent;
16   import com.instantbank.lettertemplate.control.util.JSPUtil;
17   import com.instantbank.lettertemplate.control.util.WebKeys;
18   import com.instantbank.common.utilcomponents.Debug;
19   import com.instantbank.common.utilcomponents.CommonUtil;
20   import com.instantbank.lettertemplate.control.LetterTemplateEventException;
21   import com.instantbank.component.lettertemplate.util.*;
22   
23   /**
24    *  Letter Batch Start usecase: flow handler for deciding output screen after
25    *  processing an action
26    *
27    * @author Instant-bank (Jorge Cardenas)
28    * @created November 2002
29    */
30   public class BatchStartFlowHandler
31       implements FlowHandler {
32     private Debug debug = null;
33   
34   
35     /**
36      *  optional execution before processFlow method
37      *
38      * @param request HTTP request
39      */
40     public void doStart(HttpServletRequest request) { }
41   
42   
43     /**
44      *  principal method for deciding output screen after processing an action
45      *
46      * @param request of MainServlet
47      * @param answer of the action
48      * @param context web context
49      * @return String with the number of the output screen
50      * @throws LetterTemplateEventException Description of the Exception
51      */
52     public String processFlow(HttpServletRequest request, Object answer,
53                               ServletContext context)
54        throws LetterTemplateEventException {
55   
56       debug = new Debug();
57       debug.setDebugginOn(true);
58       debug.setPreMessage("** BatchStartFlowHandler: ");
59       debug.println("processFlow");
60   
61       String nextScreen = null;
62       BatchStartEvent ce = null;
63       HttpSession session = request.getSession();
64   
65       if(request.getAttribute(WebKeys.BatchStartEvent) != null) {
66         ce = (BatchStartEvent)request.getAttribute(WebKeys.BatchStartEvent);
67       }
68   
69       if(request.getAttribute(WebKeys.ExceptionOcurred) != null) {
70   
71         nextScreen = "1";  // BATCHSTART_PROBLEM
72   
73       }
74       else if(((String)(session.getAttribute(WebKeys.BatchRun))).equals("true")) {
75         // change the variable (false) if a job was executed.
76         session.setAttribute(WebKeys.BatchRun, "false");
77         String value = (String)session.getAttribute(WebKeys.NumberOfJobs);
78         Object items = session.getAttribute(WebKeys.JobsList);
79   
80         request.setAttribute(WebKeys.NumberOfJobs, value);
81         request.setAttribute(WebKeys.BatchStartList, items);
82   
83         nextScreen = "3";  //  BATCHSTART_CONFIRM
84   
85       }
86       else if(ce.getActionType() == BatchStartEvent.LIST_BATCH_START) {
87         // answer is the current letters batch.
88         // puts current letters batch in the web request :
89   
90         // puts currents values of jobs list in the web session :
91         session.setAttribute(WebKeys.JobsList, answer);
92   
93         request.setAttribute(WebKeys.BatchStartList, answer);
94         nextScreen = "2";  //  BATCHSTART_MAIN
95   
96       }
97       return nextScreen;
98     }
99   
100  
101    /**
102     * optional execution after processFlow method
103     *
104     * @param request Description of the Parameter
105     */
106    public void doEnd(HttpServletRequest request) { }
107  }
108  
109