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