annotate servlet/src/digilib/servlet/Scaler.java @ 543:919e008ab1fb digilibPDF

more steps towards more standard java.util.concurrent design
author robcast
date Thu, 14 Oct 2010 14:24:33 +0200
parents e2ff961001af
children 5ff500d6812a
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
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
3 import java.io.File;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
4 import java.io.IOException;
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
5 import java.io.OutputStream;
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
6 import java.util.List;
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
7 import java.util.concurrent.ExecutionException;
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
8 import java.util.concurrent.ExecutorService;
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
9 import java.util.concurrent.Future;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
10
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
11 import javax.servlet.ServletConfig;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
12 import javax.servlet.ServletContext;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
13 import javax.servlet.ServletException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
14 import javax.servlet.http.HttpServletRequest;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
15 import javax.servlet.http.HttpServletResponse;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
16
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
17 import digilib.auth.AuthOpException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
18 import digilib.auth.AuthOps;
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
19 import digilib.image.DocuImage;
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
20 import digilib.image.ImageOpException;
86
997ba69afb81 New version 1.8b1.
robcast
parents: 85
diff changeset
21 import digilib.io.DocuDirCache;
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
22 import digilib.io.DocuDirectory;
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
23 import digilib.io.DocuDirent;
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
24 import digilib.io.FileOpException;
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
25 import digilib.io.FileOps;
161
ace2a4a0ba74 servlet version 1.16a4
robcast
parents: 156
diff changeset
26 import digilib.io.ImageFile;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
27
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
28
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 503
diff changeset
29 // TODO digilibError is not used anymore and may need to get reintegrated
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
30
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
31 public class Scaler extends RequestHandler {
263
e16d132aa6f6 Servlet version 1.21b1
robcast
parents: 253
diff changeset
32
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
33 /** digilib servlet version (for all components) */
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
34 public static final String dlVersion = "1.8.1a";
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
35
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
36 /** general error code */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
37 public static final int ERROR_UNKNOWN = 0;
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
38
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
39 /** error code for authentication error */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
40 public static final int ERROR_AUTH = 1;
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
41
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
42 /** error code for file operation error */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
43 public static final int ERROR_FILE = 2;
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
44
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
45 /** error code for image operation error */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
46 public static final int ERROR_IMAGE = 3;
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
47
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
48 /** DocuDirCache instance */
86
997ba69afb81 New version 1.8b1.
robcast
parents: 85
diff changeset
49 DocuDirCache dirCache;
161
ace2a4a0ba74 servlet version 1.16a4
robcast
parents: 156
diff changeset
50
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
51 /** Image executor */
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
52 ExecutorService imageJobCenter;
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
53
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
54 /** authentication error image file */
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
55 File denyImgFile;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
56
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
57 /** image error image file */
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
58 File errorImgFile;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
59
363
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
60 /** not found error image file */
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
61 File notfoundImgFile;
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
62
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
63 /** subsampling before scaling */
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
64 float minSubsample = 2f;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
65
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
66 /** send files as is? */
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
67 boolean sendFileAllowed = true;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
68
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
69 /** default scaling quality */
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
70 int defaultQuality = 1;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
71
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
72 /** DigilibConfiguration instance */
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
73 DigilibConfiguration dlConfig;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
74
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
75 /** use authorization database */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
76 boolean useAuthorization = true;
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
77
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
78 /** AuthOps instance */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
79 AuthOps authOp;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
80
100
cc6a0b9ac78e digilib V1.9b1
robcast
parents: 94
diff changeset
81 // EXPRIMENTAL
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
82 /** try to enlarge cropping area for "oblique" angles */
100
cc6a0b9ac78e digilib V1.9b1
robcast
parents: 94
diff changeset
83 boolean wholeRotArea = false;
cc6a0b9ac78e digilib V1.9b1
robcast
parents: 94
diff changeset
84
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
85
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
86 protected long getLastModified(HttpServletRequest request) {
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
87 accountlog.debug("GetLastModified from " + request.getRemoteAddr()
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
88 + " for " + request.getQueryString());
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
89 long mtime = -1;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
90 // create new request with defaults
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
91 DigilibRequest dlReq = new DigilibRequest();
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
92 // set with request parameters
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
93 dlReq.setWithRequest(request);
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
94 // find the requested file
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
95 DocuDirent f = findFile(dlReq);
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
96 if (f != null) {
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
97 DocuDirectory dd = (DocuDirectory) f.getParent();
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
98 mtime = dd.getDirMTime() / 1000 * 1000;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
99 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
100 return mtime;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
101 }
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
102
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
103 /**
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
104 * Returns the DocuDirent corresponding to the DigilibRequest.
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
105 *
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
106 * @param dlRequest
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
107 * @return
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
108 */
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
109 public DocuDirent findFile(DigilibRequest dlRequest) {
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
110 // find the file(set)
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
111 DocuDirent f = dirCache.getFile(dlRequest.getFilePath(), dlRequest
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
112 .getAsInt("pn"), FileOps.CLASS_IMAGE);
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
113 return f;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
114 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
115
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
116
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
117
170
d40922628e4a Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents: 161
diff changeset
118 /**
d40922628e4a Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents: 161
diff changeset
119 * Initialisation on first run.
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
120 * @throws ServletException
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
121 *
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
122 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
123 */
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
124 public void init(ServletConfig config) throws ServletException {
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
125 super.init(config);
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
126
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
127 System.out
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
128 .println("***** Digital Image Library Image Scaler Servlet (version "
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
129 + dlVersion + ") *****");
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
130 // say hello in the log file
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
131 logger
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
132 .info("***** Digital Image Library Image Scaler Servlet (version "
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
133 + dlVersion + ") *****");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
134
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
135 // get our ServletContext
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
136 ServletContext context = config.getServletContext();
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
137 // see if there is a Configuration instance
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
138 dlConfig = (DigilibConfiguration) context
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
139 .getAttribute("digilib.servlet.configuration");
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
140 if (dlConfig == null) {
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
141 // no Configuration
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
142 throw new ServletException("No Configuration!");
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
143 }
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
144 // set our AuthOps
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
145 useAuthorization = dlConfig.getAsBoolean("use-authorization");
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
146 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
147
86
997ba69afb81 New version 1.8b1.
robcast
parents: 85
diff changeset
148 // DocuDirCache instance
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
149 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
150
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
151 // Executor
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
152 imageJobCenter = (ExecutorService) dlConfig.get("servlet.worker.imageexecutor");
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
153
394
31643c12d939 digilib can now take its error-icons from the web app
robcast
parents: 363
diff changeset
154 denyImgFile = ServletOps.getFile((File) dlConfig.getValue("denied-image"), config);
31643c12d939 digilib can now take its error-icons from the web app
robcast
parents: 363
diff changeset
155 errorImgFile = ServletOps.getFile((File) dlConfig.getValue("error-image"), config);
31643c12d939 digilib can now take its error-icons from the web app
robcast
parents: 363
diff changeset
156 notfoundImgFile = ServletOps.getFile((File) dlConfig.getValue("notfound-image"), config);
153
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
157 sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed");
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
158 minSubsample = dlConfig.getAsFloat("subsample-minimum");
4980c969be4c Servlet version 1.16a1
robcast
parents: 151
diff changeset
159 defaultQuality = dlConfig.getAsInt("default-quality");
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
160 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
161
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 503
diff changeset
162
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 503
diff changeset
163
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 503
diff changeset
164
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
165 @Override
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
166 public void processRequest(HttpServletRequest request,
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
167 HttpServletResponse response) throws ServletException, ImageOpException {
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
168
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
169
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
170 if (dlConfig == null) {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
171 throw new ServletException("ERROR: No Configuration!");
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
172 }
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
173
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
174 accountlog.debug("request: " + request.getQueryString());
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
175 logger.debug("request: " + request.getQueryString());
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
176
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
177
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
178 // define the job information
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents: 502
diff changeset
179 ImageJobInformation jobdeclaration = new ImageJobInformation(dlConfig);
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
180 jobdeclaration.setWithRequest(request);
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
181
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
182 ImageFile fileToLoad = null;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
183 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
184 fileToLoad = jobdeclaration.get_fileToLoad();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
185 } catch (IOException e2) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
186 // TODO Auto-generated catch block
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
187 e2.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
188 return;
170
d40922628e4a Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents: 161
diff changeset
189 }
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
190
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
191
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
192 // if requested, send image as a file
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
193 if(sendFileAllowed && jobdeclaration.checkSendAsFile()){
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
194 String mt = null;
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
195 if (jobdeclaration.hasOption("mo", "rawfile")) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
196 mt = "application/octet-stream";
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 logger.debug("Sending RAW File as is.");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
199 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
200 ServletOps.sendFile(fileToLoad.getFile(), mt, response);
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
201 } catch (FileOpException e) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
202 e.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
203 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
204
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
205 return;
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
206 }
487
6c01d283e90e Servlet version 1.16.1
robcast
parents: 478
diff changeset
207
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
208
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
209
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
210 // 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
211 if(jobdeclaration.noTransformRequired()){
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
212 logger.debug("Sending File as is.");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
213
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
214 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
215 ServletOps.sendFile(fileToLoad.getFile(), null, response);
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
216 } catch (FileOpException e) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
217 e.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
218 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
219
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
220 //logger.info("Done in "
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
221 // + (System.currentTimeMillis() - startTime) + "ms");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
222 return;
149
04ad64b2137a Servlet version 1.14b1
robcast
parents: 148
diff changeset
223 }
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
224
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
225
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
226
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
227
542
e2ff961001af first step towards more standard java.util.concurrent design
robcast
parents: 536
diff changeset
228 if (! DigilibWorker1.canRun()) {
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
229 logger.error("Servlet overloaded!");
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
230 try {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
231 response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
232 } catch (IOException e) {
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
233 e.printStackTrace();
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
234 }
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
235 return;
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
236 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
237
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
238
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
239 //DigilibWorker1 job=null;
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
240 ImageWorker job = null;
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
241 try {
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
242
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
243 long startTime = System.currentTimeMillis();
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
244
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
245 OutputStream outputstream = null;
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
246 outputstream = response.getOutputStream();
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
247
170
d40922628e4a Servlet Version 1.16b2 with new DigilibParameter code.
robcast
parents: 161
diff changeset
248 /* check permissions */
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
249 if (useAuthorization) {
73
3b8797fc3e90 New servlet version 1.5b.
robcast
parents: 67
diff changeset
250 // get a list of required roles (empty if no restrictions)
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 527
diff changeset
251 List<String> rolesRequired;
501
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
252 try {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
253 rolesRequired = authOp.rolesForPath(jobdeclaration.getFilePath(), request);
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
254 if (rolesRequired != null) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
255 authlog.debug("Role required: " + rolesRequired);
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
256 authlog.debug("User: " + request.getRemoteUser());
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
257 // is the current request/user authorized?
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
258 if (!authOp.isRoleAuthorized(rolesRequired, request)) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
259 // send deny answer and abort
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
260 throw new AuthOpException();
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
261 }
487
6c01d283e90e Servlet version 1.16.1
robcast
parents: 478
diff changeset
262 }
6c01d283e90e Servlet version 1.16.1
robcast
parents: 478
diff changeset
263
501
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
264 } catch (AuthOpException e) {
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
265 // TODO Auto-generated catch block
d960b7c68b08 added auth ops support
cmielack
parents: 500
diff changeset
266 e.printStackTrace();
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
267 }
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
268 }
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
269
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
270
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
271 //job = new DigilibImageWorker1(dlConfig, outputstream , jobdeclaration);
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
272 //job.run();
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
273
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
274 // create job
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
275 job = new ImageWorker(dlConfig, jobdeclaration);
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
276 // submit job
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
277 Future<DocuImage> jobResult = imageJobCenter.submit(job);
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
278 // wait for result
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
279 DocuImage img = jobResult.get();
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
280 // send image
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
281 ServletOps.writeImage(img, null, outputstream);
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
282
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
283 logger.debug("Job Processing Time: "+ (System.currentTimeMillis()-startTime) + "ms");
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
284
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
285 } catch (IOException e) {
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
286 e.printStackTrace();
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
287 logger.error(e.getClass()+": "+ e.getMessage());
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
288 //response.sendError(1);
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
289 } catch (InterruptedException e) {
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
290 // TODO Auto-generated catch block
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
291 e.printStackTrace();
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
292 logger.error(e.getClass()+": "+ e.getMessage());
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
293 } catch (ExecutionException e) {
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
294 // TODO Auto-generated catch block
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
295 e.printStackTrace();
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
296 logger.error(e.getClass()+": "+ e.getMessage());
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
297 logger.error("caused by: "+ e.getCause().getMessage());
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
298 }
405
ffb2036da205 first stab at PDF printer servlet. DOES NOT WORK YET!
robcast
parents: 394
diff changeset
299
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
300 }
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
301
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
302
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
303 /**
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
304 * Sends an error to the client as text or image.
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
305 *
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
306 * @param asHTML
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
307 * @param type
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
308 * @param msg
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
309 * @param response
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
310 */
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
311 public void digilibError(boolean asHTML, int type, String msg,
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
312 HttpServletResponse response) {
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
313 try {
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
314 File img = null;
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
315 if (type == ERROR_AUTH) {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
316 if (msg == null) {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
317 msg = "ERROR: Unauthorized access!";
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
318 }
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
319 img = denyImgFile;
363
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
320 } else if (type == ERROR_FILE) {
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
321 if (msg == null) {
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
322 msg = "ERROR: Image file not found!";
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
323 }
b37d2737b342 added code for "not found" image
hertzhaft
parents: 356
diff changeset
324 img = notfoundImgFile;
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
325 } else {
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
326 if (msg == null) {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
327 msg = "ERROR: Other image error!";
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
328 }
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
329 img = this.errorImgFile;
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
330 }
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
331 if (asHTML && (img != null)) {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
332 ServletOps.htmlMessage(msg, response);
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
333 } else {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
334 ServletOps.sendFile(img, null, response);
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
335 }
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
336 } catch (IOException e) {
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
337 logger.error("Error sending error!", e);
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
338 }
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
339
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
340 }
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
341
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
342 public static String getVersion(){
489
882ee6a055bd try to fix small problem with version number display
robcast
parents: 487
diff changeset
343 return dlVersion;
882ee6a055bd try to fix small problem with version number display
robcast
parents: 487
diff changeset
344 }
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
345
489
882ee6a055bd try to fix small problem with version number display
robcast
parents: 487
diff changeset
346
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
347 }