1 package com.instantbank.collections.creditInfo.web; 2 3 import javax.servlet.RequestDispatcher; 4 import javax.servlet.ServletConfig; 5 import javax.servlet.ServletContext; 6 import javax.servlet.ServletException; 7 import javax.servlet.http.HttpServlet; 8 import javax.servlet.http.HttpServletRequest; 9 import javax.servlet.http.HttpServletResponse; 10 import javax.servlet.http.HttpSession; 11 import java.io.ByteArrayInputStream; 12 import java.io.IOException; 13 import java.io.PrintWriter; 14 import java.io.StringWriter; 15 import oracle.xml.parser.v2.DOMParser; 16 import oracle.xml.parser.v2.XMLDocument; 17 import oracle.xml.parser.v2.XMLElement; 18 import org.xml.sax.SAXException; 19 import com.instantbank.collections.creditInfo.ejb.AccountInfoServices; 20 import com.instantbank.collections.creditInfo.ejb.AccountInfoServicesHome; 21 import com.instantbank.collections.util.FilterChain; 22 import com.instantbank.collections.util.InstantbankException; 23 import com.instantbank.collections.util.ServiceLocator; 24 import com.instantbank.collections.util.XMLUtils; 25 26 public class AccountMaintenanceController extends HttpServlet { 27 private AccountInfoServices AccServices; 28 private Long companyId; 29 private String debug; 30 HttpSession session; 31 private String typeSel; 32 private Long userId; 33 34 35 private String createMaintenanceXML(String collateral, String misc, String agrmId) throws SAXException, ServletException, IOException, InstantbankException { 36 XMLDocument docColl; 37 XMLDocument docMisc; 38 XMLElement element; 39 StringWriter sw; 40 PrintWriter pw; 41 String xml; 42 String xmlAgrId; 43 String xmlAgrCode; 44 45 docColl = parseInfo(collateral); 46 docMisc = parseInfo(misc); 47 element = (XMLElement)docColl.getDocumentElement(); 48 sw = new StringWriter(); 49 pw = new PrintWriter(sw); 50 element.print(pw); 51 xml = sw.toString(); 52 element = (XMLElement)docMisc.getDocumentElement(); 53 sw = new StringWriter(); 54 pw = new PrintWriter(sw); 55 element.print(pw); 56 xmlAgrId = makeXMLAttributes("agrmid", agrmId); 57 xml = xmlAgrId + xml + sw.toString(); 58 xml = makeXMLNode("Maintenance", xml, true); 59 return xml; 60 } 61 62 63 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 64 doPost(request, response); 65 } 66 67 68 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 69 String action; 70 com.instantbank.collections.util.FilterChain chain; 71 try { 72 debug = "set action"; 73 action = request.getParameter("action"); 74 try { 75 76 chain = new com.instantbank.collections.util.FilterChain(true, getServletConfig().getServletContext()); 77 if(chain.processFilter(request, response)) { 78 return; 79 } 80 if(action.equals("initialize")) { 81 initialize(request, response); 82 } 83 else if(action.equals("save")) { 84 save(request, response); 85 } 86 else { 87 throw new InstantbankException("242001", "Action " + action + " not supported"); 88 } 89 } 90 catch(Exception e) { 91 throw new InstantbankException(e, "242002", "Failed to execute controller action " + action); 92 } 93 } 94 catch(InstantbankException e) { 95 session.setAttribute("Exception", e); 96 response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0"); 97 } 98 } 99 100 101 public String getServletInfo() { 102 return "com.instantbank.collections.creditInfo.web.AccountMaintenanceController Information"; 103 } 104 105 106 public void init(ServletConfig config) throws ServletException { 107 super.init(config); 108 try { 109 AccountInfoServicesHome Home = (AccountInfoServicesHome) 110 ServiceLocator.instance().createEJB("AccountInfoServicesHome", AccountInfoServicesHome.class, false); 111 AccServices = Home.create(); 112 } 113 catch(Exception e) { 114 throw new ServletException(e); 115 } 116 } 117 118 119 private void initialize(HttpServletRequest request, HttpServletResponse response) throws SAXException, ServletException, IOException, InstantbankException { 120 Long agrmId; 121 String collateral; 122 String data; 123 String misc; 124 HttpSession session; 125 126 session = request.getSession(); 127 companyId = (Long)session.getAttribute("companyId"); 128 agrmId = new Long(request.getAttribute("agrmId").toString()); 129 130 collateral = AccServices.getCollateralInfo(companyId, agrmId); 131 misc = AccServices.getAgreementDetails(companyId, agrmId, false, false, false, true); 132 data = createMaintenanceXML(collateral, misc, agrmId.toString()); 133 ServletContext sc = getServletConfig().getServletContext(); 134 request.setAttribute("data", data); 135 RequestDispatcher rd = sc.getRequestDispatcher("/creditInfo_web/AccountMaintenanceView.jsp"); 136 rd.forward(request, response); 137 } 138 139 140 private String makeXMLAttributes(String attributeNode, String valueNode) throws ServletException, IOException, InstantbankException { 141 char Ch3 = '/'; 142 String XMLtmp; 143 144 XMLtmp = "<" + attributeNode + ">" + valueNode + "<" + Ch3 + attributeNode + ">\n"; 145 return XMLtmp; 146 } 147 148 149 private String makeXMLElement(String element, String XMLAttributes) throws ServletException, IOException, InstantbankException { 150 char Ch3 = '/'; 151 String XMLtmp; 152 153 XMLtmp = "<" + element + ">\n" + XMLAttributes + 154 "<" + Ch3 + element + ">\n"; 155 return XMLtmp; 156 } 157 158 159 private String makeXMLNode(String nameNode, String XMLElement, boolean withHeader) throws ServletException, IOException, InstantbankException { 160 char Ch1 = '"'; 161 char Ch3 = '/'; 162 String XMLtmp; 163 164 if(withHeader) { 165 XMLtmp = XMLUtils.xmlHeader() + "\n"; 166 } 167 else { 168 XMLtmp = ""; 169 } 170 XMLtmp = XMLtmp + "<" + nameNode + "> \n" + XMLElement + "<" + Ch3 + nameNode + ">\n"; 171 return XMLtmp; 172 } 173 174 175 private XMLDocument parseInfo(String data) throws SAXException, ServletException, IOException, InstantbankException { 176 DOMParser docParser = new DOMParser(); 177 ByteArrayInputStream stream; 178 XMLDocument xmlDoc; 179 180 xmlDoc = null; 181 stream = new ByteArrayInputStream(data.getBytes()); 182 docParser.setValidationMode(false); 183 docParser.parse(stream); 184 xmlDoc = docParser.getDocument(); 185 return xmlDoc; 186 } 187 188 189 private void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantbankException { 190 Long agrmId; 191 String data; 192 String mainData; 193 String wrkiId; 194 195 session = request.getSession(); 196 companyId = (Long)session.getAttribute("companyId"); 197 userId = (Long)session.getAttribute("userId"); 198 agrmId = new Long((String)request.getParameter("agrmId")); 199 data = (String)request.getParameter("data"); 200 mainData = request.getParameter("mainData"); 201 wrkiId = request.getParameter("wrki_id"); 202 request.setAttribute("agrmId", (String)request.getParameter("agrmId")); 203 AccServices.saveMaintenanceData(data, companyId, userId); 204 response.sendRedirect("/Instantbank/collectionsActivities_web/ReviewAccountController?action=changeTab&mainData=" + mainData + "&tab=Maintenance&agrmId=" + agrmId + "&wrki_id=" + wrkiId); 205 } 206 } 207 208