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 javax.servlet.http.HttpServletRequest;
9 import javax.servlet.ServletContext;
10 import javax.servlet.http.HttpSession;
11 import java.io.*;
12 import java.util.*;
13
14 import oracle.xml.parser.v2.*;
15 import org.w3c.dom.*;
16 import org.xml.sax.*;
17
18 import com.instantbank.lettertemplate.control.event.ImagesRepositoryEvent;
19 import com.instantbank.lettertemplate.control.util.JSPUtil;
20 import com.instantbank.lettertemplate.control.util.WebKeys;
21 import com.instantbank.common.utilcomponents.Debug;
22 import com.instantbank.common.utilcomponents.CommonUtil;
23 import com.instantbank.common.utilcomponents.LetterTemplateExceptionMessage;
24 import com.instantbank.common.utilcomponents.LetterTemplateGlobals;
25 import com.instantbank.lettertemplate.control.LetterTemplateEventException;
26 import com.instantbank.lettertemplate.control.event.LetterTemplateEvent;
27
28
34 public class ImagesRepositoryHandler extends RequestHandlerSupport {
35
36 private Debug debug = null;
37 private String imagesTemporalPath = null;
38 ServletContext context;
39
40
41
50 public LetterTemplateEvent processRequest(HttpServletRequest request,
51 ServletContext context)
52 throws LetterTemplateEventException {
53
54 debug = new Debug();
55 debug.setDebugginOn(true);
56 debug.setPreMessage("** ImagesRepositoryHandler-application tier: ");
57
58 this.context = context;
59 String action = request.getParameter("action");
60 debug.println("Creation of an ImagesRepository Event; "
61 + "ImagesRepositoryHandler (web): action=" + action);
62
63 if(action != null) {
64 request.setAttribute(WebKeys.ActionImage, action);
65 }
66
67 if(action == null) {
68 throw new LetterTemplateEventException
69 (LetterTemplateExceptionMessage.SERVICE_NOT_SELECTED);
70 }
71 else if(action.equals("listImagesNames")) {
72 return createListImagesRepositoryEvent(request);
73 }
74 else if(action.equals("updateImagesNames")) {
75 return this.createUpdateImageEvent(request);
76 }
77 else if(action.equals("uploadImage")) {
78 return this.createUploadImageEvent(request);
79 }
80 return null;
81 }
82
83
84
92 private LetterTemplateEvent createListImagesRepositoryEvent
93 (HttpServletRequest request)
94 throws LetterTemplateEventException {
95
96 Hashtable imagesTable = null;
97 String companyId = (String)request.getSession()
98 .getAttribute(WebKeys.CompanyId);
99 try {
100 imagesTable = CommonUtil.getWebContextVariable
101 (context, WebKeys.ImageTable);
102 Object list = imagesTable.get(companyId);
103 if(list != null) {
104 request.setAttribute(WebKeys.ExistsImagesList, "true");
105 return null;
106 }
107
108
109 ImagesRepositoryEvent event
110 = new ImagesRepositoryEvent
111 (ImagesRepositoryEvent.LIST_IMAGES_NAMES,
112 (String)request.getSession()
113 .getAttribute(WebKeys.CompanyId),
114 (Long)request.getSession().
115 getAttribute(WebKeys.UserId),
116 LetterTemplateGlobals.STR_UNDEF,
117 new byte[0],
118 null);
119 request.setAttribute(WebKeys.ImagesRepositoryEvent, event);
120 return event;
121 }
122 catch(Exception e) {
123 throw new LetterTemplateEventException
124 (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
125 + LetterTemplateExceptionMessage.RETRY);
126 }
127 }
128
129
130
138 private LetterTemplateEvent createUpdateImageEvent
139 (HttpServletRequest request)
140 throws LetterTemplateEventException {
141 ArrayList items = null;
142 try {
143
144 String xmlImagesItems = request.getParameter("xmlImagesItems").trim();
145 debug.println("xmlImagesItems=" + xmlImagesItems);
146
147
148
149 items = parseXMLImages(xmlImagesItems);
150 String code[] = (String[])(items.get(0));
151 if(code.length == 0) {
152 request.setAttribute(WebKeys.ExistsImagesList, "true");
153 return null;
154 }
155
156
157 ImagesRepositoryEvent event
158 = new ImagesRepositoryEvent
159 (ImagesRepositoryEvent.UPDATE_IMAGES_NAMES,
160 (String)request.getSession()
161 .getAttribute(WebKeys.CompanyId),
162 (Long)request.getSession().
163 getAttribute(WebKeys.UserId),
164 LetterTemplateGlobals.STR_UNDEF,
165 new byte[0],
166 items);
167 request.setAttribute(WebKeys.ImagesRepositoryEvent, event);
168 return event;
169 }
170 catch(Exception e) {
171 throw new LetterTemplateEventException
172 (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
173 + LetterTemplateExceptionMessage.RETRY);
174 }
175 }
176
177
178
186 private LetterTemplateEvent createUploadImageEvent
187 (HttpServletRequest request)
188 throws LetterTemplateEventException {
189 ArrayList items = null;
190 try {
191
192 String xmlImagesItems = request.getParameter("xmlImagesItems").trim();
193 debug.println("xmlImagesItems=" + xmlImagesItems);
194
195
196
197 items = parseXMLImages(xmlImagesItems);
198 String code[] = (String[])(items.get(0));
199 if(code.length == 0) {
200 request.setAttribute(WebKeys.ExistsImagesList, "true");
201 return null;
202 }
203
204
205 ImagesRepositoryEvent event
206 = new ImagesRepositoryEvent
207 (ImagesRepositoryEvent.PRE_STORE_IMAGE,
208 (String)request.getSession()
209 .getAttribute(WebKeys.CompanyId),
210 (Long)request.getSession().
211 getAttribute(WebKeys.UserId),
212 LetterTemplateGlobals.STR_UNDEF,
213 new byte[0],
214 items);
215 request.setAttribute(WebKeys.ImagesRepositoryEvent, event);
216 return event;
217 }
218 catch(Exception e) {
219 throw new LetterTemplateEventException
220 (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
221 + LetterTemplateExceptionMessage.RETRY);
222 }
223 }
224
225
226
235 private ArrayList parseXMLImages(String imageItems) throws Exception {
236 XMLDocument xmlDoc = CommonUtil.parseInfo(imageItems);
237
238 NodeList nlCode = xmlDoc.selectNodes("/ImagesList/Image/code/text()");
239 NodeList nlName = xmlDoc.selectNodes("/ImagesList/Image/name/text()");
240 NodeList nlStatus = xmlDoc.selectNodes("/ImagesList/Image/status/text()");
241 int nlLength = nlCode.getLength();
242
243 String[] code = new String[nlLength];
244 String[] name = new String[nlLength];
245 String[] status = new String[nlLength];
246 for(int i = 0; i < nlLength; i++) {
247 code[i] = nlCode.item(i).getNodeValue();
248 name[i] = nlName.item(i).getNodeValue();
249 status[i] = nlStatus.item(i).getNodeValue();
250 }
251
252 ArrayList items = new ArrayList(3);
253 items.add(code);
254 items.add(name);
255 items.add(status);
256 return items;
257 }
258 }
259
260