annotate servlet/src/digilib/servlet/Scaler.java @ 563:686086d6e6d6 digilibPDF

more refactoring and rearranging more enums pdf and image generation still works
author robcast
date Fri, 17 Dec 2010 20:42:25 +0100
parents 2e971b9f3022
children fd2ef7e46119
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;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
5 import java.util.List;
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
6 import java.util.concurrent.ExecutionException;
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
7 import java.util.concurrent.Future;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
8
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
9 import javax.servlet.ServletConfig;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
10 import javax.servlet.ServletContext;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
11 import javax.servlet.ServletException;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
12 import javax.servlet.http.HttpServlet;
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
13 import javax.servlet.http.HttpServletRequest;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
14 import javax.servlet.http.HttpServletResponse;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
15
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
16 import org.apache.log4j.Logger;
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
17
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
18 import digilib.auth.AuthOpException;
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
19 import digilib.auth.AuthOps;
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
20 import digilib.image.DocuImage;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
21 import digilib.image.ImageJobDescription;
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
22 import digilib.image.ImageWorker;
86
997ba69afb81 New version 1.8b1.
robcast
parents: 85
diff changeset
23 import digilib.io.DocuDirCache;
335
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
24 import digilib.io.DocuDirectory;
9bce7008a514 Servlet version 1.5.3b
robcast
parents: 303
diff changeset
25 import digilib.io.DocuDirent;
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 558
diff changeset
26 import digilib.io.FileOps.FileClass;
161
ace2a4a0ba74 servlet version 1.16a4
robcast
parents: 156
diff changeset
27 import digilib.io.ImageFile;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
28 import digilib.util.DigilibJobCenter;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
29
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
30 @SuppressWarnings("serial")
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
31 public class Scaler extends HttpServlet {
263
e16d132aa6f6 Servlet version 1.21b1
robcast
parents: 253
diff changeset
32
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
33 /** digilib servlet version (for all components) */
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 558
diff changeset
34 public static final String version = "1.9.0a";
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
35
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
36 /** servlet error codes */
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
37 public static enum Error {UNKNOWN, AUTH, FILE, IMAGE};
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
38
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
39 /** type of error message */
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
40 public static enum ErrMsg {IMAGE, TEXT, CODE};
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
41
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
42 /** logger for accounting requests */
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
43 protected static Logger accountlog = Logger.getLogger("account.request");
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
44
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
45 /** gengeral logger for this class */
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
46 protected static Logger logger = Logger.getLogger("digilib.servlet");
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
47
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
48 /** logger for authentication related */
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
49 protected static Logger authlog = Logger.getLogger("digilib.auth");
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
50
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
51 /** DocuDirCache instance */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
52 DocuDirCache dirCache;
161
ace2a4a0ba74 servlet version 1.16a4
robcast
parents: 156
diff changeset
53
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
54 /** Image executor */
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
55 DigilibJobCenter<DocuImage> imageJobCenter;
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
56
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
57 /** authentication error image file */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
58 File denyImgFile;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
59
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
60 /** image error image file */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
61 File errorImgFile;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
62
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
63 /** not found error image file */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
64 File notfoundImgFile;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
65
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
66 /** send files as is? */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
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
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
69 /** DigilibConfiguration instance */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
70 DigilibConfiguration dlConfig;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
71
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
72 /** use authorization database */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
73 boolean useAuthorization = true;
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
74
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
75 /** AuthOps instance */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
76 AuthOps authOp;
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
77
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
78 /**
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
79 * Initialisation on first run.
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
80 *
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
81 * @throws ServletException
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
82 *
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
83 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
84 */
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
85 public void init(ServletConfig config) throws ServletException {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
86 super.init(config);
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
87
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
88 System.out
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
89 .println("***** Digital Image Library Image Scaler Servlet (version "
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 558
diff changeset
90 + version + ") *****");
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
91 // say hello in the log file
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
92 logger.info("***** Digital Image Library Image Scaler Servlet (version "
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 558
diff changeset
93 + version + ") *****");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
94
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
95 // get our ServletContext
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
96 ServletContext context = config.getServletContext();
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
97 // see if there is a Configuration instance
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
98 dlConfig = (DigilibConfiguration) context
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
99 .getAttribute("digilib.servlet.configuration");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
100 if (dlConfig == null) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
101 // no Configuration
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
102 throw new ServletException("No Configuration!");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
103 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
104 // set our AuthOps
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
105 useAuthorization = dlConfig.getAsBoolean("use-authorization");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
106 authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
107
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
108 // DocuDirCache instance
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
109 dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
110
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
111 // Executor
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
112 imageJobCenter = (DigilibJobCenter<DocuImage>) dlConfig
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
113 .getValue("servlet.worker.imageexecutor");
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
114
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
115 denyImgFile = ServletOps.getFile(
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
116 (File) dlConfig.getValue("denied-image"), config);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
117 errorImgFile = ServletOps.getFile(
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
118 (File) dlConfig.getValue("error-image"), config);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
119 notfoundImgFile = ServletOps.getFile(
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
120 (File) dlConfig.getValue("notfound-image"), config);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
121 sendFileAllowed = dlConfig.getAsBoolean("sendfile-allowed");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
122 }
1
0ff3ede32060 Initial revision
robcast
parents:
diff changeset
123
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
124 /** Returns modification time relevant to the request for caching.
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
125 *
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
126 * @see javax.servlet.http.HttpServlet#getLastModified(javax.servlet.http.HttpServletRequest)
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
127 */
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
128 protected long getLastModified(HttpServletRequest request) {
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
129 accountlog.debug("GetLastModified from " + request.getRemoteAddr()
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
130 + " for " + request.getQueryString());
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
131 long mtime = -1;
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
132 // create new request
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
133 DigilibRequest dlReq = new DigilibRequest(request);
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
134 // find the file(set)
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
135 DocuDirent f = dirCache.getFile(dlReq.getFilePath(),
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 558
diff changeset
136 dlReq.getAsInt("pn"), FileClass.IMAGE);
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
137 // find the requested file
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
138 if (f != null) {
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
139 DocuDirectory dd = (DocuDirectory) f.getParent();
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
140 mtime = dd.getDirMTime() / 1000 * 1000;
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
141 }
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
142 return mtime;
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
143 }
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
144
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
145 /* (non-Javadoc)
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
146 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
147 */
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
148 public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException {
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
149 accountlog.info("GET from " + request.getRemoteAddr());
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
150 this.processRequest(request, response);
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
151 }
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
152
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
153
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
154 /* (non-Javadoc)
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
155 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
156 */
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
157 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException {
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
158 accountlog.info("POST from " + request.getRemoteAddr());
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
159 this.processRequest(request, response);
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
160 }
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
161
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
162
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
163 /** Service this request using the response.
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
164 * @param request
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
165 * @param response
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
166 * @throws ServletException
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
167 */
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
168 public void processRequest(HttpServletRequest request,
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
169 HttpServletResponse response) throws ServletException {
487
6c01d283e90e Servlet version 1.16.1
robcast
parents: 478
diff changeset
170
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
171 if (dlConfig == null) {
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
172 logger.error("ERROR: No Configuration!");
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
173 throw new ServletException("NO VALID digilib CONFIGURATION!");
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
174 }
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
175
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
176 accountlog.debug("request: " + request.getQueryString());
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
177 logger.debug("request: " + request.getQueryString());
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
178 long startTime = System.currentTimeMillis();
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
179
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
180 // parse request
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
181 DigilibRequest dlRequest = new DigilibRequest(request);
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
182 // extract the job information
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
183 ImageJobDescription jobTicket = ImageJobDescription.getInstance(dlRequest, dlConfig);
502
157d4c7d2343 readded support for direct sending of image files
cmielack
parents: 501
diff changeset
184
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
185 // type of error reporting
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
186 ErrMsg errMsgType = ErrMsg.IMAGE;
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
187 if (dlRequest.hasOption("errtxt")) {
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
188 errMsgType = ErrMsg.TEXT;
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
189 } else if (dlRequest.hasOption("errcode")) {
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
190 errMsgType = ErrMsg.CODE;
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
191 }
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
192
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
193 try {
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
194 /*
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
195 * check if we can fast-track without scaling
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
196 */
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
197 ImageFile fileToLoad = jobTicket.getFileToLoad();
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
198
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
199 // check permissions
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
200 if (useAuthorization) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
201 // get a list of required roles (empty if no restrictions)
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
202 List<String> rolesRequired = authOp.rolesForPath(
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
203 jobTicket.getFilePath(), request);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
204 if (rolesRequired != null) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
205 authlog.debug("Role required: " + rolesRequired);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
206 authlog.debug("User: " + request.getRemoteUser());
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
207 // is the current request/user authorized?
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
208 if (!authOp.isRoleAuthorized(rolesRequired, request)) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
209 // send deny answer and abort
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
210 throw new AuthOpException();
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
211 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
212 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
213 }
79
63c8186455c1 Servlet version 1.6b. Further cleanup and new functionality:
robcast
parents: 73
diff changeset
214
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
215 // if requested, send image as a file
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
216 if (sendFileAllowed && jobTicket.getSendAsFile()) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
217 String mt = null;
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
218 if (jobTicket.hasOption("rawfile")) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
219 mt = "application/octet-stream";
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
220 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
221 logger.debug("Sending RAW File as is.");
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
222 ServletOps.sendFile(fileToLoad.getFile(), mt, null, response);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
223 logger.info("Done in " + (System.currentTimeMillis() - startTime) + "ms");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
224 return;
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
225 }
487
6c01d283e90e Servlet version 1.16.1
robcast
parents: 478
diff changeset
226
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
227 // if possible, send the image without actually having to transform it
e1094c5ec032 more cleanup and refactoring
robcast
parents: 544
diff changeset
228 if (! jobTicket.isTransformRequired()) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
229 logger.debug("Sending File as is.");
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
230 ServletOps.sendFile(fileToLoad.getFile(), null, null, response);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
231 logger.info("Done in " + (System.currentTimeMillis() - startTime) + "ms");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
232 return;
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
233 }
181
afe7ff98bb71 Servlet version 1.18b1
robcast
parents: 177
diff changeset
234
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
235 // check load of workers
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
236 if (imageJobCenter.isBusy()) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
237 logger.error("Servlet overloaded!");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
238 response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
239 return;
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
240 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
241 // create job
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
242 ImageWorker job = new ImageWorker(dlConfig, jobTicket);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
243 // submit job
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
244 Future<DocuImage> jobResult = imageJobCenter.submit(job);
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
245 // wait for result
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
246 DocuImage img = jobResult.get();
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
247 // send image
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
248 ServletOps.sendImage(img, null, response);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
249 logger.debug("Job Processing Time: "
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
250 + (System.currentTimeMillis() - startTime) + "ms");
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
251
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
252 } catch (IOException e) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
253 logger.error(e.getClass() + ": " + e.getMessage());
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
254 digilibError(errMsgType, Error.FILE, null, response);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
255 } catch (AuthOpException e) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
256 logger.error(e.getClass() + ": " + e.getMessage());
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
257 digilibError(errMsgType, Error.AUTH, null, response);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
258 } catch (InterruptedException e) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
259 logger.error(e.getClass() + ": " + e.getMessage());
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
260 } catch (ExecutionException e) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
261 logger.error(e.getClass() + ": " + e.getMessage());
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
262 String causeMsg = e.getCause().getMessage();
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
263 logger.error("caused by: " + causeMsg);
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
264 digilibError(errMsgType, Error.IMAGE, causeMsg, response);
543
919e008ab1fb more steps towards more standard java.util.concurrent design
robcast
parents: 542
diff changeset
265 }
405
ffb2036da205 first stab at PDF printer servlet. DOES NOT WORK YET!
robcast
parents: 394
diff changeset
266
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
267 }
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
268
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
269 /**
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
270 * Sends an error to the client as text or image.
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
271 *
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
272 * @param type
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
273 * @param error
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
274 * @param msg
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
275 * @param response
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
276 */
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
277 public void digilibError(ErrMsg type, Error error, String msg,
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
278 HttpServletResponse response) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
279 try {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
280 File img = null;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
281 int status = 0;
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
282 if (error == Error.AUTH) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
283 if (msg == null) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
284 msg = "ERROR: Unauthorized access!";
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
285 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
286 img = denyImgFile;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
287 status = HttpServletResponse.SC_FORBIDDEN;
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
288 } else if (error == Error.FILE) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
289 if (msg == null) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
290 msg = "ERROR: Image file not found!";
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
291 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
292 img = notfoundImgFile;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
293 status = HttpServletResponse.SC_NOT_FOUND;
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
294 } else {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
295 if (msg == null) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
296 msg = "ERROR: Other image error!";
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
297 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
298 img = this.errorImgFile;
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
299 status = HttpServletResponse.SC_BAD_REQUEST;
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
300 }
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
301 if (type == ErrMsg.TEXT) {
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
302 ServletOps.htmlMessage(msg, response);
558
2e971b9f3022 added some enums
robcast
parents: 557
diff changeset
303 } else if (type == ErrMsg.CODE) {
557
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
304 response.sendError(status, msg);
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
305 } else if (img != null) {
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
306 // default: image
0885f5ca5b24 more refactoring and rearranging
robcast
parents: 552
diff changeset
307 ServletOps.sendFile(img, null, null, response);
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
308 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
309 } catch (IOException e) {
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
310 logger.error("Error sending error!", e);
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
311 }
298
1ecaf9c1fd8a Servlet version 1.5.0b -- the beginning of the next generation :-)
robcast
parents: 288
diff changeset
312
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
313 }
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
314
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
315 public static String getVersion() {
563
686086d6e6d6 more refactoring and rearranging
robcast
parents: 558
diff changeset
316 return version;
544
5ff500d6812a more steps towards more standard java.util.concurrent design
robcast
parents: 543
diff changeset
317 }
489
882ee6a055bd try to fix small problem with version number display
robcast
parents: 487
diff changeset
318
500
b2325b33b77b completely restructured the scaler
cmielack
parents: 1
diff changeset
319 }