1 package com.instantbank.collections.security.web; 2 3 import java.io.ByteArrayInputStream; 4 import java.io.IOException; 5 import javax.servlet.RequestDispatcher; 6 import javax.servlet.ServletConfig; 7 import javax.servlet.ServletContext; 8 import javax.servlet.ServletException; 9 import javax.servlet.http.HttpServlet; 10 import javax.servlet.http.HttpServletRequest; 11 import javax.servlet.http.HttpServletResponse; 12 import javax.servlet.http.HttpSession; 13 import oracle.xml.parser.v2.DOMParser; 14 import oracle.xml.parser.v2.XMLDocument; 15 import oracle.xml.parser.v2.XSLException; 16 import org.xml.sax.SAXException; 17 import com.instantbank.collections.security.ejb.SecurityProfilesServices; 18 import com.instantbank.collections.security.ejb.SecurityProfilesServicesHome; 19 import com.instantbank.collections.security.ejb.SecurityServices; 20 import com.instantbank.collections.security.ejb.SecurityServicesHome; 21 import com.instantbank.collections.util.FilterChain; 22 import com.instantbank.collections.util.InstantbankException; 23 import com.instantbank.collections.util.ServiceLocator; 24 25 public class UserGroupsMaintenanceController extends HttpServlet { 26 private Long companyId; 27 private Integer currentTab; 28 private String debug; 29 private SecurityProfilesServices PrfServices; 30 private SecurityServices SecServices; 31 private HttpSession session; 32 private String typeSel; 33 private Long userId; 34 35 36 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 37 doPost(request, response); 38 } 39 40 41 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 42 String action = ""; 43 com.instantbank.collections.util.FilterChain chain; 44 45 debug = "set action"; 46 try { 47 session = request.getSession(false); 48 action = request.getParameter("action"); 49 session.setAttribute("hasException", "0"); 50 typeSel = request.getParameter("type"); 51 try { 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("selectParent")) { 60 selectParent(request, response, typeSel); 61 } 62 else if(action.equals("selectGroup")) { 63 selectGroup(request, response, typeSel); 64 } 65 else if(action.equals("refreshChildren")) { 66 refreshChildren(request, response); 67 } 68 else if(action.equals("save")) { 69 save(request, response); 70 } 71 else { 72 throw new InstantbankException("132001", "Action " + action + " not supported"); 73 } 74 } 75 catch(Exception e) { 76 throw new InstantbankException(e, "132002", "Failed to execute controller action " + action); 77 } 78 } 79 catch(InstantbankException e) { 80 session.setAttribute("hasException", "1"); 81 session.setAttribute("Exception", e); 82 if(response.isCommitted()) { 83 return; 84 } 85 response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0"); 86 } 87 } 88 89 90 public String getServletInfo() { 91 return "com.instantbank.collections.security.web.UserGroupsMaintenanceController Information"; 92 } 93 94 95 public void init(ServletConfig config) throws ServletException { 96 super.init(config); 97 try { 98 SecurityServicesHome SecHome = (SecurityServicesHome) 99 ServiceLocator.instance().createEJB("SecurityServicesHome", SecurityServicesHome.class, false); 100 SecServices = SecHome.create(); 101 SecurityProfilesServicesHome PrfHome = (SecurityProfilesServicesHome) 102 ServiceLocator.instance().createEJB("SecurityProfilesServicesHome", SecurityProfilesServicesHome.class, false); 103 PrfServices = PrfHome.create(); 104 } 105 catch(Exception e) { 106 throw new ServletException(e); 107 } 108 } 109 110 111 private void initialize(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantbankException { 112 String xmlGroup; 113 String xmlProfiles; 114 typeSel = "0"; 115 Long companyId; 116 117 companyId = (Long)session.getAttribute("companyId"); 118 xmlGroup = SecServices.newGroup(); 119 xmlProfiles = PrfServices.newProfiles(companyId); 120 currentTab = new Integer(1); 121 showGroup(request, response, xmlGroup, xmlProfiles, typeSel, ""); 122 } 123 124 125 private void showGroup(HttpServletRequest request, HttpServletResponse response, String xmlGroup, String xmlProfiles, String Selection, String GroupChild) throws ServletException, IOException, InstantbankException { 126 String xmlList = new String(); 127 String xmlQueues = new String(); 128 129 companyId = (Long)session.getAttribute("companyId"); 130 xmlList = SecServices.getGroups(companyId); 131 xmlQueues = PrfServices.getQueues(companyId); 132 ServletContext sc = getServletConfig().getServletContext(); 133 request.setAttribute("currentTab", currentTab.toString()); 134 request.setAttribute("data", xmlGroup); 135 request.setAttribute("profiles", xmlProfiles); 136 request.setAttribute("groups", xmlList); 137 request.setAttribute("queues", xmlQueues); 138 request.setAttribute("selection", Selection); 139 request.setAttribute("groupChild", GroupChild); 140 RequestDispatcher rd = sc.getRequestDispatcher("/security_web/UserGroupsView.jsp"); 141 rd.forward(request, response); 142 } 143 144 145 private void selectParent(HttpServletRequest request, HttpServletResponse response, String Selection) throws ServletException, InstantbankException, IOException, SAXException, XSLException { 146 String ParentId; 147 Long ProfileId; 148 String xmlGroup; 149 String xmlProfiles; 150 String GroupChild; 151 XMLDocument doc; 152 153 currentTab = new Integer(request.getParameter("currentTab")); 154 xmlGroup = (String)request.getParameter("data"); 155 GroupChild = (String)request.getParameter("group"); 156 doc = parseInfo(xmlGroup); 157 ParentId = doc.valueOf("/GroupList/Group/id"); 158 if(ParentId.equals("_")) { 159 initialize(request, response); 160 } 161 else { 162 ProfileId = new Long(PrfServices.getGroupProfileId(ParentId)); 163 xmlProfiles = PrfServices.getProfiles(ProfileId, "C"); 164 showGroup(request, response, xmlGroup, xmlProfiles, Selection, GroupChild); 165 } 166 } 167 168 169 private void selectGroup(HttpServletRequest request, HttpServletResponse response, String Selection) throws ServletException, IOException, InstantbankException { 170 Long GroupId; 171 Long ProfileId; 172 String xmlGroup; 173 String xmlProfiles; 174 String GrpTmp; 175 XMLDocument doc; 176 177 currentTab = new Integer(request.getParameter("currentTab")); 178 GrpTmp = (String)request.getParameter("data"); 179 if(GrpTmp.equals("")) { 180 initialize(request, response); 181 } 182 else { 183 GroupId = new Long(GrpTmp); 184 xmlGroup = SecServices.getGroup(GroupId); 185 ProfileId = new Long(PrfServices.getGroupProfileId(GroupId.toString())); 186 xmlProfiles = PrfServices.getProfiles(ProfileId, "C"); 187 showGroup(request, response, xmlGroup, xmlProfiles, Selection, ""); 188 } 189 } 190 191 192 private void refreshChildren(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantbankException { 193 Long GroupId; 194 Long ProfileId; 195 String xmlGroup; 196 String xmlProfiles; 197 String GrpTmp; 198 XMLDocument doc; 199 200 userId = (Long)session.getAttribute("userId"); 201 currentTab = new Integer(request.getParameter("currentTab")); 202 GroupId = new Long((String)request.getParameter("data")); 203 PrfServices.refreshChildren(userId, GroupId, 1); 204 initialize(request, response); 205 } 206 207 208 private void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InstantbankException { 209 String xmlGroup; 210 String xmlProfiles; 211 212 currentTab = new Integer(request.getParameter("currentTab")); 213 companyId = (Long)session.getAttribute("companyId"); 214 userId = (Long)session.getAttribute("userId"); 215 xmlGroup = (String)request.getParameter("data"); 216 xmlProfiles = (String)request.getParameter("profiles"); 217 SecServices.saveGroup(xmlGroup, xmlProfiles, companyId, userId); 218 initialize(request, response); 219 } 220 221 222 public XMLDocument parseInfo(String data) throws ServletException, IOException, InstantbankException, SAXException { 223 DOMParser docParser = new DOMParser(); 224 ByteArrayInputStream stream; 225 XMLDocument xmlDoc; 226 227 xmlDoc = null; 228 stream = new ByteArrayInputStream(data.getBytes()); 229 docParser.setValidationMode(false); 230 docParser.parse(stream); 231 xmlDoc = docParser.getDocument(); 232 return xmlDoc; 233 } 234 } 235