1    package com.instantbank.collections.main.web;
2    
3    import javax.servlet.ServletConfig;
4    import javax.servlet.ServletException;
5    import javax.servlet.http.HttpServlet;
6    import javax.servlet.http.HttpServletRequest;
7    import javax.servlet.http.HttpServletResponse;
8    import javax.servlet.http.HttpSession;
9    import java.io.IOException;
10   //added by CincoSOFT (CF): import Debug, DateUtils, ... classes:
11   import com.instantbank.common.utilcomponents.Debug;
12   import com.instantbank.collections.util.DateUtils;
13   import com.instantbank.collections.util.FilterChain;
14   import com.instantbank.collections.util.InstantbankException;
15   //end added CincoSOFT
16   
17   public class MainDispatcher extends HttpServlet {
18     //added by CincoSOFT (CF):
19     private Debug debug = null;
20     //end added CincoSOFT
21     private HttpSession session;
22   
23   
24     public void init(ServletConfig config) throws ServletException {
25       super.init(config);
26       //added by CincoSOFT (CF):
27       debug = new Debug();
28       debug.setDebugginOn(true);
29       debug.setPreMessage("** COLL:MainDispatcher: ");
30       //end added CincoSOFT
31     }
32   
33   
34     public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
35       doPost(request, response);
36     }
37   
38   
39     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40       String action;
41       String agrmId;
42       String module;
43       String modulePage = "";
44       String optionCollections;
45       String optionCompany;
46       String useCase;
47       String codeParam;
48       com.instantbank.collections.util.FilterChain chain;
49   
50       session = request.getSession(false);
51   
52       try {
53         try {
54           module = request.getParameter("module");
55           useCase = request.getParameter("useCase");
56           codeParam = request.getParameter("codeParam");
57           //added by CincoSOFT (CF): variable for timeout control
58           //when request comes another ear:
59           String externalRequest = request.getParameter("externalRequest");
60           debug.println("module: " + module + " -usecase: " + useCase
61             + " -externalRequest: " + externalRequest);
62   
63           //end added CincoSOFT
64   
65           optionCollections = request.getParameter("optionCollections");
66           optionCompany = request.getParameter("optionCompany");
67           session.setAttribute("optionCollections", optionCollections);
68           session.setAttribute("optionCompany", optionCompany);
69   
70           chain = new com.instantbank.collections.util.FilterChain
71             (true, getServletConfig().getServletContext());
72   
73           //modified by CincoSOFT (CF):
74           // old version:
75           /*
76           if ( chain.processFilter(request,response)  ) {
77             return;
78           }
79           */
80           // new version:
81           if(externalRequest == null) {
82             if(chain.processFilter(request, response)) {
83               debug.println("timeout in Instantbank ear");
84               return;
85             }
86           }
87           else {  // it's an action of chain() that must be done in any case:
88             session.setAttribute("sessionInitialTime", DateUtils.rightNow());
89             java.util.Date t = (java.util.Date)session.getAttribute("sessionInitialTime");
90             debug.println("sessionInitialTime updated to:" + t);
91           }
92           //end modified CincoSOFT
93   
94   
95           //added by CincoSOFT (CF): web session variables for other ears
96           String companyName = (session.getAttribute("companyName")).toString();
97           String companyId = ((Long)session.getAttribute("companyId")).toString();
98           String version = (session.getAttribute("version")).toString();
99           String hasException = (session.getAttribute("hasException")).toString();
100          String companySessionTime = ((Long)session.getAttribute("companySessionTime")).toString();
101          String userId = ((Long)session.getAttribute("userId")).toString();
102          String collectionsVariables = "?companyName=" + companyName
103            + "&companyId=" + companyId
104            + "&version=" + version
105            + "&optionCollections=" + optionCollections
106            + "&optionCompany=" + optionCompany
107            + "&hasException=" + hasException
108            + "&companySessionTime=" + companySessionTime
109            + "&userId=" + userId;
110          //end added CincoSOFT
111  
112          //CR2002062600 - ADD ACH to collections
113          if(module.equals("ach")) {
114            modulePage = "/ach_web/AchTransactionView.jsp";
115          }
116  
117          if(module.equals("basicInfo")) {
118            modulePage = "/basicInfo_web/BasicInfoDispatcher.jsp";
119          }
120          if(module.equals("collectionsActivities")) {
121            modulePage = "/collectionsActivities_web/CollectionsActivitiesDispatcher.jsp";
122          }
123          else if(module.equals("searchAccount")) {
124            agrmId = request.getParameter("agrmId");
125            modulePage = "/collectionsActivities_web/CollectionsActivitiesDispatcher.jsp";
126            response.sendRedirect("/Instantbank" + modulePage + "?useCase=" + useCase + "&wrki_id=&agrmId=" + agrmId);
127            return;
128          }
129          else if(module.equals("reviewQueue")) {
130            agrmId = request.getParameter("agrmId");
131            String wrkiId = request.getParameter("wrki_id");
132            String status = request.getParameter("status");
133            modulePage = "/collectionsActivities_web/CollectionsActivitiesDispatcher.jsp";
134            response.sendRedirect("/Instantbank" + modulePage + "?useCase=" + useCase + "&wrki_id=" + wrkiId + "&agrmId=" + agrmId + "&status=" + status + "&fromQueuing=Y");
135            return;
136          }
137          else if(module.equals("collectionsQueuing")) {
138            modulePage = "/collectionsQueuing_web/CollectionsQueuingDispatcher.jsp";
139          }
140          else if(module.equals("commonQueuing")) {
141            modulePage = "/commonQueuing_web/CommonQueuingDispatcher.jsp";
142          }
143          else if(module.equals("companyInfo")) {
144            modulePage = "/companyInfo_web/CompanyInfoDispatcher.jsp";
145          }
146          else if(module.equals("creditInfo")) {
147            modulePage = "/creditInfo_web/CreditInfoDispatcher.jsp";
148          }
149          else if(module.equals("customerInfo")) {
150            modulePage = "/customerInfo_web/CustomerInfoDispatcher.jsp";
151          }
152          else if(module.equals("documents")) {
153            modulePage = "/documents_web/DocumentsDispatcher.jsp";
154          }
155          else if(module.equals("security")) {
156            modulePage = "/security_web/SecurityDispatcher.jsp";
157          }
158          else if(module.equals("callReviewQueue")) {
159            Long user = new Long(request.getParameter("userId"));
160            modulePage = "/commonQueuing_web/ReviewQueueController";
161            response.sendRedirect("/Instantbank" + modulePage + "?action=initialize&userId=" + user);
162            return;
163          }
164  
165          //added by CincoSOFT (CF):  requests for letterstempl application :
166          else if(module.equals("lettertemplate") && (useCase.equals("Editor"))) {
167            modulePage = "/control/editor/templates";
168            response.sendRedirect
169              ("/lettertemplate" + modulePage + collectionsVariables
170              + "&useCase=Editor");
171            return;
172          }
173          else if(module.equals("lettertemplate") && (useCase.equals("Category"))) {
174  
175            modulePage = "/control/categories/main";
176            response.sendRedirect
177              ("/lettertemplate" + modulePage + collectionsVariables
178              + "&useCase=Category"
179              + "&action=listCategories");
180            return;
181          }
182          else if(module.equals("lettertemplate") && (useCase.equals("ImagesRepository"))) {
183            modulePage = "/control/imagesRepository/main";
184            response.sendRedirect
185              ("/lettertemplate" + modulePage + collectionsVariables
186              + "&useCase=ImagesRepository"
187              + "&action=listImagesNames");
188            return;
189          }
190          else if(module.equals("lettertemplate") && (useCase.equals("Templates"))) {
191            modulePage = "/control/templates/main";
192            response.sendRedirect
193              ("/lettertemplate" + modulePage + collectionsVariables
194              + "&useCase=Templates"
195              + "&action=listTemplates");
196            return;
197          }
198          else if(module.equals("lettertemplate") && (useCase.equals("Components"))) {
199            modulePage = "/control/components/main";
200            response.sendRedirect
201              ("/lettertemplate" + modulePage + collectionsVariables
202              + "&useCase=Components"
203              + "&action=listComponents");
204            return;
205          }
206          else if(module.equals("lettertemplate") && (useCase.equals("BatchStart"))) {
207            modulePage = "/control/batchStart/main";
208            response.sendRedirect
209              ("/lettertemplate" + modulePage + collectionsVariables
210              + "&useCase=BatchStart"
211              + "&action=listBatchStart");
212            return;
213          }
214          else if(module.equals("lettertemplate") && (useCase.equals("BatchReview"))) {
215  
216            modulePage = "/control/batchReview/main";
217            response.sendRedirect
218              ("/lettertemplate" + modulePage + collectionsVariables
219              + "&useCase=BatchReview"
220              + "&action=listBatchReview");
221            return;
222          }
223          else if(module.equals("lettertemplate") && (useCase.equals("PreviewPrint"))) {
224            modulePage = "/control/previewPrint/main";
225            response.sendRedirect
226              ("/lettertemplate" + modulePage + collectionsVariables
227              + "&useCase=PreviewPrint"
228              + "&action=listTemplates");
229            return;
230          }
231          else if(module.equals("lettertemplate") && (useCase.equals("SetLetterJob"))) {
232            modulePage = "/control/setLetterJob/main";
233            response.sendRedirect
234              ("/lettertemplate" + modulePage + collectionsVariables
235              + "&useCase=SetLetterJob"
236              + "&action=listJobs");
237            return;
238          }
239          else if(module.equals("servicing") && (useCase.equals("ParmLevelsName"))) {
240            modulePage = "/control/parmLevelsName/main";
241            response.sendRedirect
242              ("/servicing" + modulePage + collectionsVariables
243              + "&useCase=ParmLevelsName"
244              + "&action=listParmLevelsName");
245            return;
246          }
247          else if(module.equals("servicing") && (useCase.equals("ParmLevel1Values"))) {
248            modulePage = "/control/parmLevel1Values/main";
249            response.sendRedirect
250              ("/servicing" + modulePage + collectionsVariables
251              + "&useCase=ParmLevel1Values"
252              + "&action=listParmLevel1Values");
253            return;
254          }
255          else if(module.equals("servicing") && (useCase.equals("ParmLevel2Values"))) {
256            modulePage = "/control/parmLevel2Values/main";
257            response.sendRedirect
258              ("/servicing" + modulePage + collectionsVariables
259              + "&useCase=ParmLevel2Values"
260              + "&action=listParmLevel2Values");
261            return;
262          }
263          else if(module.equals("servicing") && (useCase.equals("ParmSearchOrder"))) {
264            modulePage = "/control/parmSearchOrder/main";
265            response.sendRedirect
266              ("/servicing" + modulePage + collectionsVariables
267              + "&useCase=ParmSearchOrder"
268              + "&action=listParmSearchOrder");
269            return;
270          }
271          else if(module.equals("servicing") && (useCase.equals("ParmRestrictions"))) {
272            modulePage = "/control/parmRestrictions/main";
273            response.sendRedirect
274              ("/servicing" + modulePage + collectionsVariables
275              + "&useCase=ParmRestrictions"
276              + "&action=listParmRestrictions");
277            return;
278          }
279          else if(module.equals("servicing") && (useCase.startsWith("SetParameterXValue"))) {
280            modulePage = "/control/setParameterXValue/main";
281            response.sendRedirect
282              ("/servicing" + modulePage + collectionsVariables
283              + "&useCase=" + useCase
284              + "&action=listParameterValues");
285  
286            return;
287          }
288          //end added CincoSOFT
289  
290          if(!modulePage.equals("")) {
291            debug.println("modulePage=" + modulePage);
292            debug.println("response.sendRedirect to "
293              + "/Instantbank" + modulePage + "?useCase=" + useCase);
294            response.sendRedirect("/Instantbank" + modulePage + "?useCase=" + useCase);
295          }
296        }
297        catch(Exception e) {
298          debug.println("Exception " + e.getMessage());
299          throw new InstantbankException(e, "000003", "Failed to dispatch use case");
300        }
301      }
302      catch(InstantbankException e) {
303        debug.println("InstantbankException " + e.getMessage());
304        session.setAttribute("Exception", e);
305        response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0");
306      }
307    }
308  
309  
310    public String getServletInfo() {
311      return "com.instantbank.collections.basicInfo.web.UserGroupsMaintenanceController Information";
312    }
313  }
314  
315