1 package com.instantbank.collections.companyInfo.web;
2
3 import java.io.ByteArrayInputStream;
4 import java.io.IOException;
5 import java.io.OutputStreamWriter;
6 import java.io.PrintWriter;
7 import javax.servlet.RequestDispatcher;
8 import javax.servlet.ServletConfig;
9 import javax.servlet.ServletContext;
10 import javax.servlet.ServletException;
11 import javax.servlet.http.HttpServlet;
12 import javax.servlet.http.HttpServletRequest;
13 import javax.servlet.http.HttpServletResponse;
14 import javax.servlet.http.HttpSession;
15 import oracle.xml.parser.v2.DOMParser;
16 import oracle.xml.parser.v2.XMLDocument;
17 import oracle.xml.parser.v2.XSLException;
18 import org.xml.sax.SAXException;
19 import com.instantbank.collections.basicInfo.ejb.BasicInfoServices;
20 import com.instantbank.collections.basicInfo.ejb.BasicInfoServicesHome;
21 import com.instantbank.collections.companyInfo.ejb.CompanyServices;
22 import com.instantbank.collections.companyInfo.ejb.CompanyServicesHome;
23 import com.instantbank.collections.security.ejb.SecurityProfilesServices;
24 import com.instantbank.collections.security.ejb.SecurityProfilesServicesHome;
25 import com.instantbank.collections.util.FilterChain;
26 import com.instantbank.collections.util.InstantbankException;
27 import com.instantbank.collections.util.ServiceLocator;
28 import com.instantbank.collections.util.StringFormat;
29
30 public class CompanyAddController extends HttpServlet {
31
32 private HttpSession session;
33 private CompanyServices services;
34 private BasicInfoServices basicServices;
35 private SecurityProfilesServices PrfServices;
36
37
38 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
39 doPost(request, response);
40 }
41
42
43 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
44 String action;
45 com.instantbank.collections.util.FilterChain chain;
46
47 try {
48 action = request.getParameter("action");
49 session = request.getSession(false);
50 try {
51
52 chain = new com.instantbank.collections.util.FilterChain(true, getServletConfig().getServletContext());
53 if(chain.processFilter(request, response)) {
54 return;
55 }
56 if(action.equals("initialize")) {
57 initialize(request, response);
58 }
59 else if(action.equals("getStates")) {
60 getStates(request, response);
61 }
62 else if(action.equals("save")) {
63 save(request, response);
64 }
65 else {
66 throw new InstantbankException("122001", "Action " + action + " not supported");
67 }
68 }
69 catch(Exception e) {
70 throw new InstantbankException(e, "122002", "Failed to execute controller action " + action);
71 }
72 }
73 catch(InstantbankException e) {
74 session.setAttribute("Exception", e);
75 response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0");
76 }
77 }
78
79
80 private String getCompanyId(String xml) throws SAXException, XSLException, IOException, InstantbankException {
81
82 DOMParser docParser = new DOMParser();
83 String Id = "";
84 ByteArrayInputStream stream;
85 XMLDocument xmlDoc = null;
86
87 stream = new ByteArrayInputStream(xml.getBytes());
88 docParser.setValidationMode(false);
89 docParser.parse(stream);
90 xmlDoc = docParser.getDocument();
91 Id = xmlDoc.selectNodes("/Company/Id/text()").item(0).getNodeValue();
92 return Id;
93 }
94
95
96 public String getServletInfo() {
97 return "com.instantbank.collections.companyInfo.servlets.CompanyAddController";
98 }
99
100
101 private void getStates(HttpServletRequest request, HttpServletResponse response) throws IOException, InstantbankException {
102 String countryId;
103 OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
104 String xml;
105
106 countryId = request.getParameter("countryId");
107 PrintWriter out = new PrintWriter(osw);
108 xml = basicServices.getStates(countryId);
109 response.setContentType("text/html");
110 out.println("<html>");
111 out.println("<script language=JavaScript>");
112 out.println("parent.statesXML='" + StringFormat.cleanXml(xml) + "';");
113 out.println("parent.loadStates();");
114 out.println("</script></html>");
115 out.close();
116 }
117
118
119 public void init(ServletConfig config) throws ServletException {
120 super.init(config);
121 try {
122 CompanyServicesHome home = (CompanyServicesHome)ServiceLocator.instance().createEJB("CompanyServicesHome", CompanyServicesHome.class, false);
123 services = home.create();
124 BasicInfoServicesHome basicHome = (BasicInfoServicesHome)ServiceLocator.instance().createEJB("BasicInfoServicesHome", BasicInfoServicesHome.class, false);
125 basicServices = basicHome.create();
126 SecurityProfilesServicesHome PrfHome = (SecurityProfilesServicesHome)ServiceLocator.instance().createEJB("SecurityProfilesServicesHome", SecurityProfilesServicesHome.class, false);
127 PrfServices = PrfHome.create();
128 }
129 catch(Exception e) {
130 throw new ServletException(e);
131 }
132 }
133
134
135 private void initialize(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantbankException {
136 String xml;
137 ServletContext sc;
138 String xmlSec = "";
139 Long sprfId;
140 Long companyId;
141
142 companyId = new Long("0");
143 sprfId = PrfServices.getCompanyProfile(companyId);
144 if(!sprfId.equals(new Long("0"))) {
145 xmlSec = PrfServices.getProfiles(sprfId, new String("C"));
146 }
147 else {
148 xmlSec = PrfServices.newProfiles(companyId);
149 }
150
151 xml = services.newCompany();
152 sc = getServletConfig().getServletContext();
153 request.setAttribute("title", "Company Add");
154 request.setAttribute("controller", "CompanyAddController");
155 request.setAttribute("data", xml);
156 request.setAttribute("dataSec", xmlSec);
157 request.setAttribute("prfId", sprfId.toString());
158 RequestDispatcher rd = sc.getRequestDispatcher("/companyInfo_web/CompanyView.jsp");
159 rd.forward(request, response);
160
161 }
162
163
164 private void save(HttpServletRequest request, HttpServletResponse response) throws SAXException, XSLException, ServletException, IOException, InstantbankException {
165 Long userId;
166 String xml;
167 String companyId;
168 String companyreturn;
169 Long sprfId;
170 String xmlSec;
171
172 userId = (Long)session.getAttribute("userId");
173 xml = request.getParameter("data");
174 xmlSec = request.getParameter("dataSec");
175 companyId = getCompanyId(xml);
176
177 if(companyId.equals("0")) {
178 companyreturn = services.addCompany(xml, userId.longValue());
179 }
180 else {
181 companyreturn = services.saveCompany(xml, userId.longValue());
182 }
183
184 xml = services.getCompany(companyreturn);
185
186 companyId = getCompanyId(xml);
187 PrfServices.saveDefaultProfile(xmlSec, new Long(companyId));
188 sprfId = PrfServices.getCompanyProfile(new Long(companyId));
189 xmlSec = PrfServices.getProfiles(sprfId, new String("C"));
190
191 ServletContext sc = getServletConfig().getServletContext();
192 request.setAttribute("title", "Company Add");
193 request.setAttribute("controller", "CompanyAddController");
194 request.setAttribute("data", xml);
195 request.setAttribute("dataSec", xmlSec);
196 request.setAttribute("prfId", sprfId.toString());
197 response.setContentType("text/html");
198 RequestDispatcher rd = sc.getRequestDispatcher("/companyInfo_web/CompanyView.jsp");
199 rd.forward(request, response);
200 }
201 }
202
203