annotate servlet/src/digilib/servlet/PDFJobDescription.java @ 552:785fc58b68b1 digilibPDF

more cleanup and refactoring
author robcast
date Wed, 15 Dec 2010 08:58:01 +0100
parents 6c9eba7772cf
children d3b29ccdef32
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
1 package digilib.servlet;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
2
531
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 511
diff changeset
3 import java.io.UnsupportedEncodingException;
9cedd170b581 * PDF generation works now even with subdirectories
robcast
parents: 511
diff changeset
4 import java.net.URLEncoder;
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
5 import java.util.ArrayList;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
6
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
7 import javax.servlet.http.HttpServletRequest;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
8
505
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
9 import org.apache.log4j.Logger;
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
10
541
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
11 import digilib.io.DocuDirectory;
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
12 import digilib.io.FileOps;
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
13
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
14
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
15 /**
533
87cb3dc2aa12 improved pdf generation (not done yet)
robcast
parents: 531
diff changeset
16 * A container class for storing a set of instruction parameters
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
17 * used for content generator classes like MakePDF.
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
18 *
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
19 *
548
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
20 * @author cmielack, casties
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
21 *
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
22 */
548
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
23 public class PDFJobDescription extends ParameterMap {
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
24
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
25 DigilibConfiguration dlConfig = null;
541
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
26 NumRange pages = null;
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
27 /** general logger for this class */
505
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
28 protected static Logger logger = Logger.getLogger("digilib.servlet");
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
29
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
30
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
31 /**
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
32 * Initialize the PDFJobInformation
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
33 *
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
34 * @param dlcfg
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
35 * The DigilibConfiguration.
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
36 */
548
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
37 public PDFJobDescription(DigilibConfiguration dlcfg) {
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
38 super(30);
551
6c9eba7772cf more refactoring and cleanup
robcast
parents: 548
diff changeset
39 dlConfig = dlcfg;
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
40 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
41
548
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
42 /**
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
43 * Initialize the PDFJobInformation with a request.
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
44 *
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
45 * @param dlcfg The DigilibConfiguration.
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
46 * @param request
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
47 */
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
48 public PDFJobDescription(HttpServletRequest request, DigilibConfiguration dlcfg) {
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
49 super(30);
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
50 dlConfig = dlcfg;
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
51 this.setWithRequest(request);
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
52 }
bc9196347188 more refactoring and cleanup
robcast
parents: 547
diff changeset
53
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
54
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
55 protected void initParams() {
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
56 // page numbers
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
57 newParameter("pgs", "", null, 's');
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
58 // url of the page/document (second part)
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
59 newParameter("fn", "", null, 's');
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
60 // width of client in pixels
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
61 newParameter("dw", new Integer(0), null, 's');
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
62 // height of client in pixels
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
63 newParameter("dh", new Integer(0), null, 's');
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
64 }
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
65
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
66 /**
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
67 * Read in the request object.
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
68 *
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
69 * @param request
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
70 */
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
71 public void setWithRequest(HttpServletRequest request) {
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
72 for (String k : params.keySet()) {
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
73 if (request.getParameterMap().containsKey(k)) {
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
74 setValueFromString(k, request.getParameter(k));
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
75 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
76 }
541
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
77 // process parameters
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
78 try {
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
79 pages = new NumRange(getAsString("pgs"));
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
80 ImageJobDescription ij = ImageJobDescription.setFrom(this, dlConfig);
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
81 DocuDirectory dir = ij.getFileDirectory();
541
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
82 int dirsize = dir.size(FileOps.CLASS_IMAGE);
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
83 pages.setMaxnum(dirsize);
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
84 } catch (Exception e) {
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
85 logger.warn("Problem with parsing page numbers: "+e.toString());
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
86 }
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
87 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
88
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
89
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
90 /**
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
91 * Generate the filename of the pdf to be created.
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
92 *
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
93 * @return
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
94 */
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
95 public String getDocumentId(){
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
96 String id;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
97
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
98 // TODO use complete request information for id generation
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
99
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
100 String fn = getAsString("fn");
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
101 String dh = getAsString("dh");
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
102 String dw = getAsString("dw");
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
103 String pgs = getAsString("pgs");
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
104
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
105 id = "fn=" + fn + "&dw=" + dw + "&dh=" + dh + "&pgs=" + pgs + ".pdf";
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
106 // make safe to use as filename by urlencoding
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
107 try {
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
108 id = URLEncoder.encode(id, "UTF-8");
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
109 } catch (UnsupportedEncodingException e) {
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
110 // this shouldn't happen
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
111 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
112 return id;
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
113 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
114
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
115
547
e1094c5ec032 more cleanup and refactoring
robcast
parents: 541
diff changeset
116 public ImageJobDescription getImageJobInformation(){
552
785fc58b68b1 more cleanup and refactoring
robcast
parents: 551
diff changeset
117 return ImageJobDescription.setFrom(this, dlConfig);
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
118 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
119
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
120
541
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
121 public NumRange getPages() {
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
122 return pages;
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
123 }
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
124
505
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
125
511
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
126 /**
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
127 * Check parameters for validity.
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
128 * Returns true if no errors are found.
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
129 *
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
130 * @return
e706a777798b documentation and comments added/cleaned up
cmielack
parents: 509
diff changeset
131 */
505
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
132 public boolean checkValidity(){
541
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
133 if (pages != null) {
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
134 return true;
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
135 }
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
136 return false;
f140d5ee8c0b new NumRange class
robcast
parents: 533
diff changeset
137 }
505
06d7e8c09b11 *** empty log message ***
cmielack
parents: 503
diff changeset
138
509
ab94692bff0c *** empty log message ***
cmielack
parents: 505
diff changeset
139 public DigilibConfiguration getDlConfig(){
ab94692bff0c *** empty log message ***
cmielack
parents: 505
diff changeset
140 return dlConfig;
ab94692bff0c *** empty log message ***
cmielack
parents: 505
diff changeset
141 }
ab94692bff0c *** empty log message ***
cmielack
parents: 505
diff changeset
142
503
fdb824bd57ab first functional version of PDFCache after restructuring the code
cmielack
parents:
diff changeset
143 }