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.WebKeys;
20 import com.instantbank.common.uiutils.ByteArrayFromFile;
21 import com.instantbank.common.utilcomponents.Debug;
22 import com.instantbank.common.utilcomponents.LetterTemplateExceptionMessage;
23 import com.instantbank.lettertemplate.control.LetterTemplateEventException;
24 import com.instantbank.lettertemplate.control.event.LetterTemplateEvent;
25
26
33 public class ImageUploadHandler extends RequestHandlerSupport {
34 private Debug debug = null;
35 private MultipartRequest multi = null;
36 private String imagesTemporalPath = null;
37 ServletContext context;
38
39
40
49 public LetterTemplateEvent processRequest(HttpServletRequest request,
50 ServletContext context)
51 throws LetterTemplateEventException {
52
53 debug = new Debug();
54 debug.setDebugginOn(true);
55 debug.setPreMessage("** ImagesUploadHandler-application tier: ");
56
57 try {
58
59
60
61 HttpSession session = request.getSession();
62 imagesTemporalPath
63 = (String)session.getAttribute(WebKeys.ImagesTemporalPath);
64 debug.println("imagesTemporalPath=" + imagesTemporalPath);
65 multi = new MultipartRequest(request, imagesTemporalPath, 15 * 1024 * 1024);
66
67
68 debug.println("Params:");
69 Enumeration params = multi.getParameterNames();
70 while(params.hasMoreElements()) {
71 String name = (String)params.nextElement();
72 String value = multi.getParameter(name);
73 debug.println(name + " = " + value);
74 }
75
76 String action = multi.getParameter("action");
77 debug.println("Creation of an ImagesRepository Event; "
78 + "ImagesUploadHandler (web): action=" + action);
79
80 debug.println("ACTION====>" + action);
81
82 if(action == null) {
83 throw new LetterTemplateEventException
84 (LetterTemplateExceptionMessage.SERVICE_NOT_SELECTED);
85 }
86 else if(action.equals("upload")) {
87 return createNewImagesRepositoryEvent(request);
88 }
89 }
90 catch(Exception e) {
91 throw new LetterTemplateEventException
92 (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
93 + LetterTemplateExceptionMessage.RETRY);
94 }
95 return null;
96 }
97
98
99
107 private LetterTemplateEvent createNewImagesRepositoryEvent
108 (HttpServletRequest request)
109 throws LetterTemplateEventException {
110 ArrayList missingFields = null;
111
112 try {
113
114 String imageName = multi.getParameter("txtName");
115 imageName = imageName.trim();
116 imageName = imageName.toLowerCase();
117
118 debug.println("Files:");
119 String imageFile = null;
120 File f = null;
121 Enumeration files = multi.getFileNames();
122 if(files.hasMoreElements()) {
123
124 String name = (String)files.nextElement();
125 imageFile = multi.getFilesystemName(name);
126 String type = multi.getContentType(name);
127 debug.println("name: " + name);
128 debug.println("filename: " + imageFile);
129 debug.println("type: " + type);
130 f = multi.getFile(name);
131 if(f != null && (f.length() != 0)) {
132 debug.println("f.toString(): " + f.toString());
133 debug.println("f.getName(): " + f.getName());
134 debug.println("f.exists(): " + f.exists());
135 debug.println("f.length(): " + f.length());
136 }
137 }
138
139
140
141 ByteArrayFromFile b
142 = new ByteArrayFromFile(new File(imagesTemporalPath, imageFile));
143 byte[] image = b.getBytes();
144
145
146 f.delete();
147
148 if(image.length == 0) {
149 throw new LetterTemplateEventException
150 (LetterTemplateExceptionMessage.PROBLEM_NO_SELECT_IMAGE);
151 }
152
153
154 ImagesRepositoryEvent event
155 = new ImagesRepositoryEvent
156 (ImagesRepositoryEvent.STORE_IMAGE,
157 (String)request.getSession().getAttribute(WebKeys.CompanyId),
158 (Long)request.getSession().getAttribute(WebKeys.UserId),
159 imageName,
160 image,
161 null);
162 request.setAttribute(WebKeys.ImagesRepositoryEvent, event);
163 return event;
164 }
165 catch(Exception e) {
166 throw new LetterTemplateEventException
167 (LetterTemplateExceptionMessage.PROBLEM_PARSING + e.getMessage()
168 + LetterTemplateExceptionMessage.RETRY);
169 }
170 }
171 }
172
173