1 package com.instantbank.lettertemplate.control.web.handlers;
2
3 import java.util.HashMap;
4 import java.util.ArrayList;
5 import java.util.Enumeration;
6 import java.util.Locale;
7 import java.util.Hashtable;
8 import java.io.IOException;
9
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.ServletContext;
12 import javax.servlet.ServletException;
13 import javax.servlet.ServletOutputStream;
14 import javax.servlet.http.HttpSession;
15
16 import oracle.xml.parser.v2.*;
17 import org.w3c.dom.*;
18 import org.xml.sax.*;
19
20
21 import javax.jms.Message;
22 import javax.jms.JMSException;
23
24 import com.instantbank.lettertemplate.control.event.BatchStartEvent;
25 import com.instantbank.lettertemplate.control.util.JSPUtil;
26 import com.instantbank.lettertemplate.control.util.WebKeys;
27 import com.instantbank.common.utilcomponents.Debug;
28 import com.instantbank.common.utilcomponents.CommonUtil;
29 import com.instantbank.common.utilcomponents.JNDINames;
30 import com.instantbank.common.utilcomponents.LetterTemplateExceptionMessage;
31 import com.instantbank.lettertemplate.control.LetterTemplateEventException;
32 import com.instantbank.lettertemplate.control.event.LetterTemplateEvent;
33 import com.instantbank.component.lettertemplate.util.*;
34 import com.instantbank.common.utilcomponents.LetterTemplateGlobals;
35 import com.instantbank.component.lettersjobmdb.util.MessageSender;
36
37
44 public class BatchStartHandler extends RequestHandlerSupport {
45
46 private Debug debug = null;
47 ServletContext context;
48 private boolean gotoDB;
49
50
51
60 public LetterTemplateEvent processRequest(HttpServletRequest request,
61 ServletContext context)
62 throws LetterTemplateEventException {
63 debug = new Debug();
64 debug.setDebugginOn(true);
65 debug.setPreMessage("** BatchStartHandler-application tier: ");
66
67 this.context = context;
68 HttpSession session = request.getSession();
69 String action = request.getParameter("action");
70 debug.println("Creation of an BatchStartEvent; "
71 + "BatchStartHandler (web): action=" + action);
72
73 if(action == null) {
74 throw new LetterTemplateEventException
75 (LetterTemplateExceptionMessage.SERVICE_NOT_SELECTED);
76 }
77 else if(action.equals("listBatchStart")) {
78 return createListBatchStartEvent(request);
79 }
80 else if(action.equals("updateBatchStart")) {
81 createUpdateBatchStartEvent(request);
82 }
83 return null;
84 }
85
86
87
95 private LetterTemplateEvent createListBatchStartEvent
96 (HttpServletRequest request)
97 throws LetterTemplateEventException {
98
99 HttpSession session = request.getSession();
100 session.setAttribute(WebKeys.BatchRun, "false");
101 session.setAttribute(WebKeys.NumberOfJobs, "0");
102
103 try {
104
105
106 BatchStartEvent event
107 = new BatchStartEvent
108 (BatchStartEvent.LIST_BATCH_START,
109 (String)request.getSession()
110 .getAttribute(WebKeys.CompanyId),
111 (Long)request.getSession().
112 getAttribute(WebKeys.UserId),
113 null);
114
115 request.setAttribute(WebKeys.BatchStartEvent, event);
116 return event;
117 }
118 catch(Exception e) {
119 throw new LetterTemplateEventException
120 (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
121 + LetterTemplateExceptionMessage.RETRY);
122 }
123 }
124
125
126
132 private void createUpdateBatchStartEvent
133 (HttpServletRequest request) {
134
135 LetterBatchStartModel items = null;
136 HttpSession session = request.getSession();
137 String server = request.getServerName();
138 int port = request.getServerPort();
139 int found = 0;
140
141 MessageSender mSender = null;
142
143 try {
144
145 Enumeration parameters = request.getParameterNames();
146
147 while((parameters != null) && parameters.hasMoreElements()) {
148 String parameterName = new String(((String)parameters.nextElement()).trim());
149 String parameterValue = request.getParameter(parameterName);
150
151 if(!parameterName.equals("action")) {
152
153
154 mSender =
155 new MessageSender(server, port, LetterTemplateGlobals.LETTERS_JOB_JMS_QUEUE);
156 String ctxProvider = mSender.getContextProviderUrl();
157 String initCtxFact = mSender.getInitContextFactory();
158
159 String temporalPath = (String)request.getSession()
160 .getAttribute(WebKeys.ImagesTemporalPath);
161
163 String companyId = (String)request.getSession()
164 .getAttribute(WebKeys.CompanyId);
165 Long userId = (Long)request.getSession()
166 .getAttribute(WebKeys.UserId);
167
168 String maxZipSize =
169 CommonUtil.getApplicationProperty(JNDINames.ZipLettersFileMaxSize);
170 debug.println("maxZip = " + maxZipSize);
171
172 Long jobId = new Long(parameterValue);
173
174 Message jobMsg =
175 mSender.buildLetterJobMessage(
176 companyId, temporalPath, userId, jobId,
177 ctxProvider, initCtxFact, maxZipSize);
178
179 mSender.send(jobMsg);
180 found = found + 1;
181 }
182 }
183
184 session.setAttribute(WebKeys.BatchRun, "true");
185 String value = Integer.toString(found);
186
187 session.setAttribute(WebKeys.NumberOfJobs, value);
188
189 }
190 catch(JMSException jex) {
191
192
193 try {
194 mSender.release();
195 }
196 catch(Exception ex) {
197 debug.println(CommonUtil.stackTraceToString(ex));
198 }
199 }
200 }
201 }
202
203