1 package com.instantbank.lettertemplate.setLetterJob.web;
2
3 import java.io.*;
4 import java.sql.*;
5 import java.util.ArrayList;
6 import java.util.StringTokenizer;
7 import javax.servlet.*;
8 import javax.servlet.http.*;
9
10
11
12
13 import java.rmi.RemoteException;
14 import javax.naming.Context;
15 import javax.naming.InitialContext;
16
17 import com.instantbank.lettertemplate.control.util.*;
18 import com.instantbank.common.utilcomponents.Debug;
19 import com.instantbank.common.utilcomponents.LetterTemplateExceptionMessage;
20 import com.instantbank.common.utilcomponents.JNDINames;
21 import com.instantbank.common.utilcomponents.CommonUtil;
22
23 import com.instantbank.lettertemplate.editor.web.TemplateTransformer;
24
25 import com.instantbank.component.lettertemplate.ejb.LetterTemplate;
26 import com.instantbank.component.lettertemplate.ejb.LetterTemplateHome;
27 import com.instantbank.component.lettertemplate.util.Template;
28
29 import com.instantbank.component.job.ejb.Job;
30 import com.instantbank.component.job.ejb.JobHome;
31 import com.instantbank.component.job.model.JobModel;
32
33
40 public class PreviewRecordsServlet extends HttpServlet {
41
44 private LetterTemplateHome lethome = null;
45
48 private LetterTemplate letejb = null;
49
52 private JobHome jobhome = null;
53
56 private Job jobejb = null;
57
58
61 private Debug debug = null;
62
63
64
69 public void init() throws ServletException {
70 debug = new Debug();
71 debug.setDebugginOn(true);
72 debug.setPreMessage("** PreviewRecordsServlet: ");
73
74
75 try {
76 InitialContext ctx = new InitialContext();
77 lethome = (LetterTemplateHome)ctx.lookup
78 (JNDINames.LETTERTEMPLATE_EJBHOME);
79 }
80 catch(Exception e) {
81 e.printStackTrace();
82 debug.println("Problem instantiating LetterTemplate EJB:"
83 + e.toString());
84 throw new ServletException
85 (LetterTemplateExceptionMessage.PROBLEM_INSTANTIATING_LETTERS_EJB
86 + e.getMessage());
87 }
88
89
90 try {
91 InitialContext ctx = new InitialContext();
92 jobhome = (JobHome)ctx.lookup(JNDINames.JOB_EJBHOME);
93 }
94 catch(Exception e) {
95 e.printStackTrace();
96 debug.println("Problem instantiating Job EJB:"
97 + e.toString());
98 throw new ServletException
99 (LetterTemplateExceptionMessage.PROBLEM_INSTANTIATING_JOB_EJB
100 + e.getMessage());
101 }
102 }
103
104
105
114 public void doGet(HttpServletRequest request, HttpServletResponse response)
115 throws ServletException, IOException {
116 HttpSession session = request.getSession();
117 debug.println("new request=========================");
118
119 if(CommonUtil.controlTimeout(request, response,
120 getServletConfig().getServletContext())) {
121 debug.println("invalidate session and return by timeout");
122 session.invalidate();
123 return;
124
125
126 }
127
128
129 Long jobId = new Long(request.getParameter("jobId"));
130 String selectedFieldsNames = request.getParameter("selectedFieldsNames");
131
132 ServletOutputStream out = null;
133 try {
134 out = response.getOutputStream();
135
136
137 letejb = (LetterTemplate)request.getSession()
138 .getAttribute(WebKeys.LetterTemplateEJB);
139 if(letejb == null) {
140 debug.println("creating reference to LetterTemplate EJB");
141 String companyId = (String)request.getSession()
142 .getAttribute(WebKeys.CompanyId);
143 Long userId = (Long)request.getSession()
144 .getAttribute(WebKeys.UserId);
145 letejb = lethome.create(companyId, userId);
146 request.getSession().setAttribute
147 (WebKeys.LetterTemplateEJB, letejb);
148 }
149
150
151 debug.println("creating reference to Job EJB");
152 jobejb = jobhome.findByPrimaryKey(jobId);
153
154
155 JobModel jobModel = jobejb.getState();
156
157
158 long templateCode = jobModel.getTemplateCode();
159 Template template = letejb.loadTemplate(templateCode);
160 ArrayList[] variables = template.setOfVariables();
161
162
163 String sql = jobModel.getSqlText();
164 ArrayList[] sqlExec
165 = letejb.executeSQL
166 (sql,
167 TemplateTransformer.varCodesFromSet(variables),
168 jobModel.getJobORDERtable());
169
170
171 ArrayList firstColumn = sqlExec[0];
172 ArrayList otherColumns = sqlExec[1];
173
174
175 StringTokenizer selectedFieldsNamesTokens
176 = new StringTokenizer(selectedFieldsNames, "|");
177 String firstColumnTitle = selectedFieldsNamesTokens.nextToken();
178 String[] otherColumnsTitles = new String[variables.length];
179 int i = 0;
180 while(selectedFieldsNamesTokens.hasMoreTokens()) {
181 otherColumnsTitles[i] = selectedFieldsNamesTokens.nextToken();
182 i++;
183 }
184
185
186 response.setContentType("text/html");
187 char ch = '"';
188 out.println("<link href=" + ch
189 + "/lettertemplate/control_web/instantbank.css" + ch
190 + " rel=" + ch + "stylesheet" + ch + ">");
191 out.println("<H1>Preview of letter job records</H1>");
192 out.println("<H4>Total records are: "
193 + String.valueOf(firstColumn.size()) + "</H4>");
194 out.println("<H5>First column is added for control purposes" + "</H5>");
195 out.println("<table class=" + ch + "tabFormLines" + ch
196 + " cellspacing=" + ch + "1" + ch
197 + " cellpadding=" + ch + "2" + ch
198 + " border=0>");
199
200
201 out.println("<tr>");
202 out.println("<td align=" + ch + "center" + ch
203 + " class=" + ch + "labelFormTitle" + ch + ">"
204 + "<strong>" + firstColumnTitle
205 + "</strong></td>");
206
207 for(int j = 0; j < variables.length; j++) {
208 out.println("<td align=" + ch + "center" + ch
209 + " class=" + ch + "labelFormTitle" + ch + ">"
210 + "<strong>" + otherColumnsTitles[j]
211 + "</strong></td>");
212 }
213 out.println("</tr>");
214
215
216 for(int k = 0; k < firstColumn.size(); k++) {
217 out.println("<tr>");
218 out.println("<td class=" + ch + "labelFormFirst" + ch + ">"
219 + (String)firstColumn.get(k) + "</td>");
220 String[] tuple = (String[])otherColumns.get(k);
221 for(int j = 0; j < tuple.length; j++) {
222 out.println("<td class=" + ch + "labelFormCell" + ch + ">"
223 + tuple[j] + "</td>");
224 }
225 out.println("</tr>");
226 }
227
228
229 out.println("</table>");
230 out.flush();
231
232 }
233 catch(Exception ex) {
234 debug.println("Exception:" + ex);
235 ex.printStackTrace();
236 response.setContentType("text/html");
237 out.println("<H3>EXCEPTION: " + ex + "</H3>");
238 }
239 }
240
241
242
250 public void doPost(HttpServletRequest request, HttpServletResponse response)
251 throws ServletException, IOException {
252 doGet(request, response);
253 }
254
255 }
256