1 package com.instantbank.collections.commonQueuing.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.IOException;
12 import java.io.OutputStreamWriter;
13 import java.io.PrintWriter;
14 import javax.ejb.FinderException;
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 DownloadController 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 = "PreviewDownload";
43 }
44 else if(action.equals("generate")) {
45 useCase = "GenerateDownloadAdHoc";
46 }
47 else if(action.equals("distribute")) {
48 useCase = "DistributeDownloadAdHoc";
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("getList")) {
78 getList(request, response);
79 }
80 else if(action.equals("save")) {
81 save(request, response);
82 }
83 else if(action.equals("preview")) {
84 dispatch(request, response, action);
85 }
86 else if(action.equals("generate")) {
87 dispatch(request, response, action);
88 }
89 else if(action.equals("distribute")) {
90 dispatch(request, response, action);
91 }
92 else {
93 throw new InstantbankException("112001", "Action " + action + " not supported");
94 }
95 }
96 catch(Exception e) {
97 throw new InstantbankException(e, "112002", "Failed to execute controller action " + action + " (" + debug + ")");
98 }
99 }
100 catch(InstantbankException e) {
101 session.setAttribute("hasException", "1");
102 session.setAttribute("Exception", e);
103 if(response.isCommitted()) {
104 return;
105 }
106 response.sendRedirect("../main_web/ControllerError.jsp?showTechnical=0");
107 }
108 }
109
110
111 public void getList(HttpServletRequest request, HttpServletResponse response) throws ServletException, InstantbankException, IOException, FinderException {
112 String responseXml = "";
113
114 String category = request.getParameter("category");
115 Long queueType = new Long(request.getParameter("typeId"));
116 String queueName = request.getParameter("name");
117 Long rowNum = new Long(request.getParameter("rownum"));
118 Long companyId = (Long)session.getAttribute("companyId");
119 String objectType = (String)request.getParameter("objectType");
120 responseXml = services.getDownloads(companyId, objectType, category, queueType, queueName, rowNum.longValue(), 10);
121 responseXml = StringFormat.cleanXml(responseXml);
122 response.setContentType("text/html");
123 OutputStreamWriter osw = new OutputStreamWriter(response.getOutputStream());
124 PrintWriter out = new PrintWriter(osw);
125 out.println("<script>");
126 out.print("top.xml='");
127 out.print(responseXml);
128 out.println("';");
129 out.println("top.showDownloads();");
130 out.println("</script>");
131 out.close();
132 }
133
134
135 private void initialize(HttpServletRequest request, HttpServletResponse response) throws ServletException, InstantbankException, IOException, FinderException {
136 Long companyId = (Long)session.getAttribute("companyId");
137 Long downloadId;
138 String xml = null;
139
140 downloadId = new Long(request.getParameter("downloadId"));
141 if(downloadId.longValue() == 0) {
142 xml = services.newDownload();
143 }
144 else {
145 xml = services.getDownload(downloadId, companyId);
146 }
147 request.setAttribute("data", xml);
148 ServletContext sc = getServletConfig().getServletContext();
149 RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/DownloadView.jsp?useCase=SetUpDownload&title=Set Up Downloads");
150 rd.forward(request, response);
151 }
152
153
154 public void save(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, FinderException {
155 Long companyId = (Long)session.getAttribute("companyId");
156 String data = request.getParameter("data");
157 Long downloadId = new Long(0);
158 String objectType = (String)request.getParameter("objectType");
159 Long userId = (Long)session.getAttribute("userId");
160 Long validDownloadId = new Long(0);
161 String xml = "";
162
163 try {
164 downloadId = services.saveDownload(companyId, userId, data);
165 xml = services.getDownload(downloadId, companyId);
166 request.setAttribute("data", xml);
167 validDownloadId = downloadId;
168 }
169 catch(Exception e) {
170 session.setAttribute("hasException", "1");
171 session.setAttribute("Exception", e);
172 request.setAttribute("data", data);
173 }
174 finally {
175 ServletContext sc = getServletConfig().getServletContext();
176 RequestDispatcher rd = sc.getRequestDispatcher("/commonQueuing_web/DownloadView.jsp?useCase=SetUpDownload&title=Set Up Downloads");
177 request.setAttribute("Reset", "DownloadController?action=initialize&objectType=" + objectType + "&downloadId=" + validDownloadId);
178 rd.forward(request, response);
179 }
180 }
181
182
183 public String getServletInfo() {
184 return "com.instantbank.collections.commonQueuing.web.DownloadController Information";
185 }
186 }
187
188