annotate servlet/src/digilib/servlet/Scaler.java @ 502:157d4c7d2343 digilibPDF

readded support for direct sending of image files
author cmielack
date Mon, 23 Feb 2009 16:03:06 +0100
parents d960b7c68b08
children fdb824bd57ab
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
1 package digilib.servlet;
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
2
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
3 import java.awt.Image;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
4 import java.awt.geom.Rectangle2D;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
5 import java.io.BufferedOutputStream;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
6 import java.io.File;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
7 import java.io.IOException;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
8 import java.io.InputStream;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
9 import java.io.OutputStream;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
10 import java.util.List;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
11
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
12 import javax.servlet.ServletConfig;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
13 import javax.servlet.ServletContext;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
14 import javax.servlet.ServletException;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
15 import javax.servlet.http.HttpServletRequest;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
16 import javax.servlet.http.HttpServletResponse;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
17
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
18 import org.apache.log4j.Logger;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
19
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
20 import digilib.auth.AuthOpException;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
21 import digilib.auth.AuthOps;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
22 import digilib.image.ImageOpException;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
23 import digilib.io.DocuDirCache;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
24 import digilib.io.DocuDirent;
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
25 import digilib.io.FileOpException;
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
26 import digilib.io.FileOps;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
27 import digilib.io.ImageFile;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
28 import digilib.io.ImageFileset;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
29
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
30 public class Scaler extends RequestHandler {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
31
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
32 /** digilib servlet version (for all components) */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
33 public static final String dlVersion = "1.7.0b";
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
34
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
35 /** general error code */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
36 public static final int ERROR_UNKNOWN = 0;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
37
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
38 /** error code for authentication error */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
39 public static final int ERROR_AUTH = 1;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
40
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
41 /** error code for file operation error */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
42 public static final int ERROR_FILE = 2;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
43
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
44 /** error code for image operation error */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
45 public static final int ERROR_IMAGE = 3;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
46
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
47 /** DocuDirCache instance */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
48 DocuDirCache dirCache;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
49
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
50 /** authentication error image file */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
51 File denyImgFile;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
52
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
53 /** image error image file */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
54 File errorImgFile;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
55
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
56 /** not found error image file */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
57 File notfoundImgFile;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
58
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
59 /** subsampling before scaling */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
60 float minSubsample = 2f;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
61
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
62 /** send files as is? */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
63 boolean sendFileAllowed = true;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
64
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
65 /** default scaling quality */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
66 int defaultQuality = 1;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
67
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
68 /** DigilibConfiguration instance */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
69 DigilibConfiguration dlConfig;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
70
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
71 /** use authorization database */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
72 boolean useAuthorization = true;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
73
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
74 /** AuthOps instance */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
75 AuthOps authOp;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
76
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
77 // EXPRIMENTAL
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
78 /** try to enlarge cropping area for "oblique" angles */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
79 boolean wholeRotArea = false;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
80
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
81 /**
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
82 * Initialisation on first run.
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
83 *
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
84 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
85 */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
86 public void init(ServletConfig config) throws ServletException {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
87 super.init(config);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
88
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
89 System.out
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
90 .println("***** Digital Image Library Image Scaler Servlet (version "
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
91 + dlVersion + ") *****");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
92 // say hello in the log file
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
93 logger
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
94 .info("***** Digital Image Library Image Scaler Servlet (version "
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
95 + dlVersion + ") *****");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
96
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
97 // get our ServletContext
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
98 ServletContext context = config.getServletContext();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
99 // see if there is a Configuration instance
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
100 dlConfig = (DigilibConfiguration) context
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
101 .getAttribute("digilib.servlet.configuration");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
102 if (dlConfig == null) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
103 // no Configuration
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
104 throw new ServletException("No Configuration!");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
105 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
106 // set our AuthOps
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
107 useAuthorization = dlConfig.getAsBoolean("use-authorization");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
108 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
109
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
110 // DocuDirCache instance
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
111 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
112 denyImgFile = ServletOps.getFile((File) dlConfig.getValue("denied-image"), config);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
113 errorImgFile = ServletOps.getFile((File) dlConfig.getValue("error-image"), config);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
114 notfoundImgFile = ServletOps.getFile((File) dlConfig.getValue("notfound-image"), config);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
115 sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
116 minSubsample = dlConfig.getAsFloat("subsample-minimum");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
117 defaultQuality = dlConfig.getAsInt("default-quality");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
118 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
119
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
120 @Override
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
121 public void processRequest(HttpServletRequest request,
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
122 HttpServletResponse response) throws ServletException, ImageOpException {
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
123
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
124
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
125 if (dlConfig == null) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
126 throw new ServletException("ERROR: No Configuration!");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
127 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
128
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
129
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
130
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
131 accountlog.debug("request: " + request.getQueryString());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
132 logger.debug("request: " + request.getQueryString());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
133
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
134
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
135
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
136 // define the job information
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
137 ImageJobInformation jobdeclaration = new ImageJobInformation();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
138 jobdeclaration.setWithRequest(request);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
139 jobdeclaration.setConfig(dlConfig);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
140
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
141 ImageFile fileToLoad = null;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
142 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
143 fileToLoad = jobdeclaration.get_fileToLoad();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
144 } catch (IOException e2) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
145 // TODO Auto-generated catch block
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
146 e2.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
147 return;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
148 }
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
149
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
150
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
151 // if requested, send image as a file
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
152 if(sendFileAllowed && jobdeclaration.checkSendAsFile()){
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
153 String mt = null;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
154 if (jobdeclaration.hasOption("mo", "rawfile")) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
155 mt = "application/octet-stream";
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
156 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
157 logger.debug("Sending RAW File as is.");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
158 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
159 ServletOps.sendFile(fileToLoad.getFile(), mt, response);
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
160 } catch (FileOpException e) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
161 e.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
162 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
163
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
164 return;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
165 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
166
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
167
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
168
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
169 // if possible, send the image without actually having to transform it
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
170 if(jobdeclaration.noTransformRequired()){
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
171 logger.debug("Sending File as is.");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
172
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
173 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
174 ServletOps.sendFile(fileToLoad.getFile(), null, response);
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
175 } catch (FileOpException e) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
176 e.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
177 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
178
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
179 //logger.info("Done in "
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
180 // + (System.currentTimeMillis() - startTime) + "ms");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
181 return;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
182 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
183
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
184
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
185
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
186
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
187 OutputStream outputstream = null;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
188 try {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
189 outputstream = response.getOutputStream();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
190 } catch (IOException e1) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
191 // TODO Auto-generated catch block
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
192 e1.printStackTrace();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
193 logger.error(e1.getMessage());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
194 }
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
195
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
196
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
197
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
198
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
199 if (! DigilibWorker.canRun()) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
200 logger.error("Servlet overloaded!");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
201 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
202 response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
203 } catch (IOException e) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
204 e.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
205 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
206 return;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
207 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
208
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
209
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
210
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
211
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
212
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
213 DigilibWorker job=null;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
214 try {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
215
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
216 long startTime = System.currentTimeMillis();
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
217
501
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
218 /* check permissions */
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
219 if (useAuthorization) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
220 // get a list of required roles (empty if no restrictions)
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
221 List rolesRequired;
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
222 try {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
223 rolesRequired = authOp.rolesForPath(jobdeclaration.getFilePath(), request);
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
224 if (rolesRequired != null) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
225 authlog.debug("Role required: " + rolesRequired);
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
226 authlog.debug("User: " + request.getRemoteUser());
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
227 // is the current request/user authorized?
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
228 if (!authOp.isRoleAuthorized(rolesRequired, request)) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
229 // send deny answer and abort
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
230 throw new AuthOpException();
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
231 }
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
232 }
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
233
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
234 } catch (AuthOpException e) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
235 // TODO Auto-generated catch block
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
236 e.printStackTrace();
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
237 }
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
238 }
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
239
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
240
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
241 job = new DigilibImageWorker(dlConfig,
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
242 outputstream ,
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
243 jobdeclaration.get_mimeType(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
244 jobdeclaration.get_scaleQual(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
245 jobdeclaration.getAsFloat("rot"),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
246 jobdeclaration.getAsFloat("cont"),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
247 jobdeclaration.getAsFloat("brgt"),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
248 jobdeclaration.get_paramRGBM(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
249 jobdeclaration.get_paramRGBA(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
250 jobdeclaration.get_fileToLoad(),
501
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
251 jobdeclaration.get_scaleXY(),
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
252 jobdeclaration.get_outerUserImgArea(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
253 jobdeclaration.get_innerUserImgArea(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
254 minSubsample,
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
255 jobdeclaration.get_wholeRotArea(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
256 jobdeclaration.get_forceType(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
257 jobdeclaration.get_hmir(),
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
258 jobdeclaration.get_vmir());
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
259
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
260 job.run();
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
261
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
262 if (job.hasError()) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
263 throw new ImageOpException(job.getError().toString());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
264 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
265
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
266 try {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
267 outputstream.flush();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
268 logger.debug("Job Processing Time: "+ (System.currentTimeMillis()-startTime) + "ms");
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
269 } catch (IOException e) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
270 e.printStackTrace();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
271 logger.error(e.getMessage());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
272 response.sendError(1);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
273 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
274
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
275
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
276 } catch (IOException e) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
277 // TODO Auto-generated catch block
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
278 e.printStackTrace();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
279 logger.error(e.getClass()+": "+ e.getMessage());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
280 //response.sendError(1);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
281 } catch (ImageOpException e) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
282 // TODO Auto-generated catch block
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
283 e.printStackTrace();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
284 logger.error(e.getClass()+": "+ e.getMessage());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
285 //response.sendError(1);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
286 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
287
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
288
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
289
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
290
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
291
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
292 /*boolean errorMsgHtml = false;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
293
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
294 if(jobdeclaration.hasOption("mo","errtxt")){
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
295 errorMsgHtml = true;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
296 } else if (jobdeclaration.hasOption("mo","errimg")) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
297 errorMsgHtml = true;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
298 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
299
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
300
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
301
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
302 */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
303
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
304
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
305 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
306
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
307
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
308
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
309 /**
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
310 * Sends an error to the client as text or image.
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
311 *
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
312 * @param asHTML
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
313 * @param type
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
314 * @param msg
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
315 * @param response
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
316 */
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
317 public void digilibError(boolean asHTML, int type, String msg,
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
318 HttpServletResponse response) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
319 try {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
320 File img = null;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
321 if (type == ERROR_AUTH) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
322 if (msg == null) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
323 msg = "ERROR: Unauthorized access!";
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
324 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
325 img = denyImgFile;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
326 } else if (type == ERROR_FILE) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
327 if (msg == null) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
328 msg = "ERROR: Image file not found!";
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
329 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
330 img = notfoundImgFile;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
331 } else {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
332 if (msg == null) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
333 msg = "ERROR: Other image error!";
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
334 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
335 img = this.errorImgFile;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
336 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
337 if (asHTML && (img != null)) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
338 ServletOps.htmlMessage(msg, response);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
339 } else {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
340 ServletOps.sendFile(img, null, response);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
341 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
342 } catch (IOException e) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
343 logger.error("Error sending error!", e);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
344 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
345
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
346 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
347
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
348 public static String getVersion(){
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
349 return dlVersion;
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
350 }
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
351
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
352
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
353 }