1    package com.instantbank.collections.basicInfo.web;
2    
3    import javax.ejb.*;
4    import java.io.IOException;
5    import java.util.*;
6    import javax.servlet.RequestDispatcher;
7    import javax.servlet.ServletConfig;
8    import javax.servlet.ServletContext;
9    import javax.servlet.ServletException;
10   import javax.servlet.http.HttpServlet;
11   import javax.servlet.http.HttpServletRequest;
12   import javax.servlet.http.HttpServletResponse;
13   import javax.servlet.http.HttpSession;
14   import com.instantbank.collections.basicInfo.ejb.BasicInfoServices;
15   import com.instantbank.collections.basicInfo.ejb.BasicInfoServicesHome;
16   import com.instantbank.collections.util.FilterChain;
17   import com.instantbank.collections.util.InstantbankException;
18   import com.instantbank.collections.util.ServiceLocator;
19   
20   public class StatesMaintenanceController extends HttpServlet {
21     private String counId;
22     private String debug;
23     private BasicInfoServices services;
24     private HttpSession session;
25     private Long userId;
26   
27   
28     public void init(ServletConfig config) throws ServletException {
29       super.init(config);
30       try {
31         BasicInfoServicesHome home = (BasicInfoServicesHome)
32           ServiceLocator.instance().createEJB("BasicInfoServicesHome", BasicInfoServicesHome.class, false);
33         services = home.create();
34       }
35       catch(Exception e) {
36         throw new ServletException(e);
37       }
38     }
39   
40   
41     public void doGet(HttpServletRequest request, HttpServletResponse response) throws
42       ServletException, IOException {
43   
44       doPost(request, response);
45     }
46   
47   
48     public void doPost(HttpServletRequest request, HttpServletResponse response) throws
49       ServletException, IOException {
50   
51       String action;
52       com.instantbank.collections.util.FilterChain chain;
53   
54       try {
55         session = request.getSession(false);
56         action = request.getParameter("action");
57         counId = (String)request.getAttribute("countryId");
58         try {
59   
60           chain = new com.instantbank.collections.util.FilterChain(true, getServletConfig().getServletContext());
61           if(chain.processFilter(request, response)) {
62             return;
63           }
64           if(action.equals("initialize")) {
65             initialize(request, response);
66           }
67           else if(action.equals("save")) {
68             save(request, response);
69           }
70           else {
71             throw new InstantbankException("112001", "Action " + action + " not supported");
72           }
73         }
74         catch(Exception e) {
75           throw new InstantbankException(e, "112002", "Failed to execute controller action " + action);
76         }
77       }
78       catch(InstantbankException e) {
79         session.setAttribute("Exception", e);
80         response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0");
81       }
82     }
83   
84   
85     public String getServletInfo() {
86       return "com.instantbank.collections.basicInfo.web.StatesMaintenanceController Information";
87     }
88   
89   
90     private void initialize(HttpServletRequest request, HttpServletResponse response) throws
91       ServletException, IOException, InstantbankException {
92   
93       String xml;
94       String counName;
95   
96       xml = services.getStates(counId);
97       counName = services.getCountryName(counId);
98       ServletContext sc = getServletConfig().getServletContext();
99       request.setAttribute("title", "States Maintenance");
100      request.setAttribute("data", xml);
101      request.setAttribute("CounName", counName);
102      RequestDispatcher rd = sc.getRequestDispatcher("/basicInfo_web/StatesView.jsp");
103      rd.forward(request, response);
104    }
105  
106  
107    private void save(HttpServletRequest request, HttpServletResponse response) throws
108      ServletException, IOException, InstantbankException {
109  
110      String xml;
111  
112      userId = (Long)session.getAttribute("userId");
113      xml = request.getParameter("data");
114      counId = request.getParameter("countryId");
115      try {
116        services.saveStates(userId, xml);
117      }
118      catch(InstantbankException e) {
119        String errorMessage = e.toString();
120        String msg = "One of the states cannot be deleted because it is referenced in an address.\\nPlease verify that the states you are trying to delete are no longer used or referenced.";
121        if(errorMessage.indexOf("ORA-02292") != -1) {
122          request.setAttribute("msg", msg);
123        }
124        else {
125          throw e;
126        }
127      }
128      initialize(request, response);
129    }
130  }
131