1 package com.instantbank.collections.commonQueuing.web;
2
3 import javax.ejb.FinderException;
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 com.instantbank.collections.commonQueuing.ejb.QueueServices;
16 import com.instantbank.collections.commonQueuing.ejb.QueueServicesHome;
17 import com.instantbank.collections.util.FilterChain;
18 import com.instantbank.collections.util.InstantbankException;
19 import com.instantbank.collections.util.ServiceLocator;
20 import com.instantbank.collections.util.StringFormat;
21
22 public class SetUpQueuesController extends HttpServlet {
23 private String debug = "";
24 private QueueServices services;
25 private HttpSession session;
26
27
28 public void init(ServletConfig config) throws ServletException {
29 super.init(config);
30 try {
31 QueueServicesHome home = (QueueServicesHome)ServiceLocator.instance().createEJB("QueueServicesHome", QueueServicesHome.class, false);
32 services = home.create();
33 }
34 catch(Exception e) {}
35 }
36
37
38 public void dispatch(HttpServletRequest request, HttpServletResponse response, String action) throws ServletException, IOException, FinderException {
39 String useCase = "";
40
41 if(action.equals("preview")) {
42 useCase = "PreviewWorkGenerated";
43 }
44 else if(action.equals("generate")) {
45 useCase = "GenerateWorkAdHoc";
46 }
47 else if(action.equals("distribute")) {
48 useCase = "DistributeWorkAdHoc";
49 }
50 ServletContext sc = getServletConfig().getServletContext();
51 RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/CommonQueuingDispatcher.jsp?useCase=" + useCase);
52 rd.forward(request, response);
53 }
54
55
56 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
57 doPost(request, response);
58 }
59
60
61 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
62 String action = "";
63 com.instantbank.collections.util.FilterChain chain;
64
65 try {
66 action = request.getParameter("action");
67 session = request.getSession(false);
68 session.setAttribute("hasException", "0");
69 try {
70 chain = new com.instantbank.collections.util.FilterChain(true, getServletConfig().getServletContext());
71 if(chain.processFilter(request, response)) {
72 return;
73 }
74 if(action.equals("initialize")) {
75 initialize(request, response);
76 }
77 else if(action.equals("getQueueList")) {
78 getQueueList(request, response);
79 }
80 else if(action.equals("preview")) {
81 dispatch(request, response, action);
82 }
83 else if(action.equals("generate")) {
84 dispatch(request, response, action);
85 }
86 else if(action.equals("distribute")) {
87 dispatch(request, response, action);
88 }
89 else if(action.equals("openSelectQueue")) {
90 openSelectQueue(request, response);
91 }
92 else if(action.equals("save")) {
93 saveQueue(request, response);
94 }
95 else {
96 throw new InstantbankException("112001", "Action " + action + " not supported");
97 }
98 }
99 catch(Exception e) {
100 throw new InstantbankException(e, "112002", "Failed to execute controller action " + action + " (" + debug + ")");
101 }
102 }
103 catch(InstantbankException e) {
104 session.setAttribute("hasException", "1");
105 session.setAttribute("Exception", e);
106 if(response.isCommitted()) {
107 return;
108 }
109 response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0");
110 }
111 }
112
113
114 public void getQueueList(HttpServletRequest request, HttpServletResponse response) throws ServletException, InstantbankException, IOException, FinderException {
115 String responseXml = "";
116
117 String category = request.getParameter("category");
118 Long queueType = new Long(request.getParameter("typeId"));
119 String queueName = request.getParameter("name");
120 Long rowNum = new Long(request.getParameter("rownum"));
121 Long companyId = (Long)session.getAttribute("companyId");
122 String objectType = (String)request.getParameter("objectType");
123 responseXml = StringFormat.cleanXml(services.getQueues(companyId, objectType, category, queueType, queueName, rowNum.longValue(), 10));
124 response.setContentType("text/html");
125 OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
126 PrintWriter out = new PrintWriter(osw);
127 out.println("<script>");
128 out.print("top.xml='");
129 out.print(responseXml);
130 out.println("';");
131 out.println("top.showQueues();");
132 out.println("</script>");
133 out.close();
134 }
135
136
137 private void initialize(HttpServletRequest request, HttpServletResponse response) throws ServletException, InstantbankException, IOException, FinderException {
138 Long companyId = (Long)session.getAttribute("companyId");
139 Long queueId;
140 String xml = null;
141
142 queueId = new Long(request.getParameter("queueId"));
143 if(queueId.longValue() == 0) {
144 xml = services.newQueue();
145 }
146 else {
147 xml = services.getQueue(queueId, companyId);
148 }
149 request.setAttribute("data", xml);
150
151 ServletContext sc = getServletConfig().getServletContext();
152 RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/QueueView.jsp?useCase=SetUpQueues&title=Set Up Queues");
153 rd.forward(request, response);
154 }
155
156
157 public void openSelectQueue(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FinderException {
158 ServletContext sc = getServletConfig().getServletContext();
159 RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/SelectQueueListView.jsp?useCase=OpenSelectQueue&title=Select a Queue");
160 rd.forward(request, response);
161 }
162
163
164 public void saveQueue(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FinderException {
165 Long companyId = (Long)session.getAttribute("companyId");
166 String data = request.getParameter("data");
167 String objectType = (String)request.getParameter("objectType");
168 Long queueId = new Long(0);
169 Long userId = (Long)session.getAttribute("userId");
170 Long validQueueId = new Long(0);
171 String xml = "";
172
173 try {
174 queueId = services.saveQueue(companyId, userId, data);
175 xml = services.getQueue(queueId, companyId);
176 request.setAttribute("data", xml);
177 validQueueId = queueId;
178 }
179 catch(Exception e) {
180 session.setAttribute("hasException", "1");
181 session.setAttribute("Exception", e);
182 request.setAttribute("data", data);
183 }
184 finally {
185 ServletContext sc = getServletConfig().getServletContext();
186 RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/QueueView.jsp?useCase=SetUpQueues&title=Set Up Queues");
187 request.setAttribute("Reset", "SetUpQueuesController?action=initialize&objectType=" + objectType + "&queueId=" + validQueueId);
188 rd.forward(request, response);
189 }
190 }
191
192
193 public String getServletInfo() {
194 return "com.instantbank.collections.commonQueuing.web.SetUpQueuesController Information";
195 }
196 }
197
198