annotate servlet/src/digilib/servlet/PDFCache.java @ 499:87d2ed21bdec Root_digilibPDF

changed generation of documentID in PDFCache
author cmielack
date Fri, 13 Feb 2009 11:08:19 +0100
parents 86b5589f38db
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
1 package digilib.servlet;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
2
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
3 import java.io.BufferedInputStream;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
4 import java.io.File;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
5 import java.io.FileInputStream;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
6 import java.io.IOException;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
7 import java.util.Hashtable;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
8
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
9 import javax.servlet.ServletConfig;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
10 import javax.servlet.ServletContext;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
11 import javax.servlet.ServletException;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
12 import javax.servlet.ServletOutputStream;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
13 import javax.servlet.http.HttpServlet;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
14 import javax.servlet.http.HttpServletRequest;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
15 import javax.servlet.http.HttpServletResponse;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
16
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
17 import org.apache.log4j.Logger;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
18
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
19
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
20 /**
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
21 * PDF request manager with caching capabilities.
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
22 * This is a very early and dirty but functional version and will
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
23 * (hopefully soon) be replaced by a parallelized and more sophisticated one.
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
24 *
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
25 * @author cmielack
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
26 *
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
27 */
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
28
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
29 public class PDFCache extends HttpServlet {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
30
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
31 private static final long serialVersionUID = 1L;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
32
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
33
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
34 private static int STATUS_NONEXISTENT = 0; // the document does not exist and is not under construction
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
35 private static int STATUS_DONE = 1; // the document exists and can be downloaded
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
36 private static int STATUS_PENDING = 2; // the document is "under construction"
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
37 private static int STATUS_ERROR = 3; // an error occurred while processing the request
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
38
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
39 private static String cache_directory = "cache/"; // the path (relative to the tomcat base-directory) where cached
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
40 // files are stored
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
41
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
42 private static String cache_hash_id = "digilib.servlet.PDFCache";
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
43
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
44
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
45 private static Logger logger = Logger.getLogger("digilib.servlet");
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
46
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
47
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
48 public void init(ServletConfig config){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
49 // initialize the PDFCache
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
50
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
51 logger.debug("Initializing PDFCache");
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
52
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
53 try {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
54 super.init(config);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
55 } catch (ServletException e) {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
56 e.printStackTrace();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
57 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
58
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
59 ServletContext context = this.getServletContext();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
60
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
61 context.setAttribute(cache_hash_id, new Hashtable<String,Integer>());
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
62
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
63 Hashtable<String,Integer> cache_hash = (Hashtable<String,Integer>) context.getAttribute(cache_hash_id);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
64
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
65 if (cache_hash==null){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
66 cache_hash = new Hashtable<String,Integer>();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
67 context.setAttribute(cache_hash_id, cache_hash);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
68 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
69
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
70 // search the cache-directory for existing files and fill them into the Hashtable as STATUS_DONE
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
71 File cache_dir = new File(cache_directory);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
72 String[] cached_files = cache_dir.list();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
73
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
74
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
75 for (String file: cached_files){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
76 if (file.endsWith(".pdf")){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
77 logger.debug("cache found "+file);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
78 cache_hash.put(file, 1);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
79 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
80 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
81
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
82 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
83
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
84
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
85 public String getDocumentId(HttpServletRequest request){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
86 // generate an unambiguous ID from the request (this is used for filenames etc)
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
87 String id;
499
87d2ed21bdec changed generation of documentID in PDFCache
cmielack
parents: 498
diff changeset
88
87d2ed21bdec changed generation of documentID in PDFCache
cmielack
parents: 498
diff changeset
89 String fn = request.getParameter("fn");
87d2ed21bdec changed generation of documentID in PDFCache
cmielack
parents: 498
diff changeset
90 String dh = request.getParameter("dh");
87d2ed21bdec changed generation of documentID in PDFCache
cmielack
parents: 498
diff changeset
91 String pgs = request.getParameter("pgs");
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
92
499
87d2ed21bdec changed generation of documentID in PDFCache
cmielack
parents: 498
diff changeset
93 id = "fn=" + fn + "&dh=" + dh + "&pgs=" + pgs + ".pdf";
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
94
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
95 return id;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
96 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
97
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
98
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
99 public void doGet(HttpServletRequest request, HttpServletResponse response){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
100
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
101 // get the status of the Document specified by the request ...
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
102 int status = this.getStatus(request);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
103
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
104
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
105 if (status == STATUS_DONE) {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
106 // ... and if the file already exists, send it ...
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
107 try {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
108 sendFile(request,response);
498
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
109
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
110 } catch (IOException e) {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
111 // TODO Auto-generated catch block
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
112 e.printStackTrace();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
113 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
114 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
115
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
116 else if (status == STATUS_PENDING){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
117 // ... if it is in the works, notify the user about it ...
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
118 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
119 else if (status == STATUS_NONEXISTENT){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
120 // ... or else, generate the file and inform the user about the estimated generation-time
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
121 try {
498
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
122 createFile(request, response);
499
87d2ed21bdec changed generation of documentID in PDFCache
cmielack
parents: 498
diff changeset
123 response.sendRedirect(request.getRequestURI()+'?'+request.getQueryString()+"&done=true"); // refresh the browser after finishing the file
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
124 } catch (ServletException e) {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
125 // TODO Auto-generated catch block
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
126 e.printStackTrace();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
127 } catch (IOException e) {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
128 // TODO Auto-generated catch block
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
129 e.printStackTrace();
498
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
130 } catch (InterruptedException e) {
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
131 // TODO Auto-generated catch block
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
132 e.printStackTrace();
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
133 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
134 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
135 else {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
136 // if an error occurred ...
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
137 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
138 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
139
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
140 public int getStatus(HttpServletRequest request){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
141
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
142 String documentId = getDocumentId(request);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
143
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
144 ServletContext context = this.getServletContext();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
145 Hashtable<String,Integer> documentStatus = (Hashtable<String,Integer>) context.getAttribute(cache_hash_id);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
146
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
147 int status = STATUS_NONEXISTENT;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
148
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
149 if (documentStatus.containsKey(documentId)){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
150 status = documentStatus.get(documentId);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
151 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
152
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
153 return status;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
154 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
155
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
156 public void sendFile(HttpServletRequest request, HttpServletResponse response) throws IOException{
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
157 // send the file specified by the request to the response
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
158
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
159 String filename = getDocumentId(request);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
160 File cached_file = null;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
161 FileInputStream fis = null;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
162 ServletOutputStream sos = null;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
163 BufferedInputStream bis = null;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
164
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
165 try {
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
166 cached_file = new File(this.cache_directory + filename);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
167 fis = new FileInputStream(cached_file);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
168 sos = response.getOutputStream();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
169 bis = new BufferedInputStream(fis);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
170 int bytes = 0;
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
171
497
85772b4cd760 changed download filename
cmielack
parents: 495
diff changeset
172 String fn = request.getParameter("fn");
85772b4cd760 changed download filename
cmielack
parents: 495
diff changeset
173 String pgs = request.getParameter("pgs");
85772b4cd760 changed download filename
cmielack
parents: 495
diff changeset
174
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
175 response.setContentType("application/pdf");
497
85772b4cd760 changed download filename
cmielack
parents: 495
diff changeset
176 response.addHeader("Content-Disposition", "attachment; filename="+fn+"_"+pgs+".pdf");
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
177 response.setContentLength( (int) cached_file.length());
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
178
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
179 logger.debug("Sending document "+filename+" to the user.");
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
180
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
181 while ((bytes = bis.read()) != -1){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
182 sos.write(bytes);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
183 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
184 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
185 catch(Exception e){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
186 logger.error(e.getMessage());
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
187 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
188 finally{
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
189 // close all streams
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
190 if (fis != null)
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
191 fis.close();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
192 if (bis != null)
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
193 bis.close();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
194 if (sos != null)
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
195 sos.close();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
196 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
197 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
198
498
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
199 public void createFile(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException, InterruptedException{
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
200 // use MakePDF to generate a new Document and put it into the cache-directory
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
201
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
202 // get global instance of MakePDF
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
203 MakePDF mpdf = (MakePDF) this.getServletContext().getAttribute("digilib.servlet.MakePDF");
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
204
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
205
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
206 if (mpdf==null){
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
207 mpdf = new MakePDF();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
208 logger.debug("didn't find MakePDF-Object");
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
209 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
210
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
211 String filename = this.cache_directory + this.getDocumentId(request);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
212
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
213 logger.debug("createFile is going to create file "+filename);
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
214
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
215 mpdf.doCreate(request,response,filename); // set the parameters and ...
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
216 mpdf.run(); // ... start generating the pdf
498
86b5589f38db added a sendRedirect after the creation of a PDF so that the user that requested the document gets to download it upon completion
cmielack
parents: 497
diff changeset
217
495
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
218 //new Thread(mpdf,"MakePDF").start();
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
219 }
190afddb103f Added getImage method to ImageLoaderDocuImage;
cmielack
parents:
diff changeset
220 }