annotate pdf/src/main/java/digilib/servlet/PDFRequest.java @ 1137:3b5968aeefac

new region icons; autozoom on click
author hertzhaft
date Fri, 16 Nov 2012 18:26:55 +0100
parents 7779b37d1d05
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
903
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
1 package digilib.servlet;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
2
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
3 import java.io.UnsupportedEncodingException;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
4 import java.net.URLEncoder;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
5
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
6 import javax.servlet.http.HttpServletRequest;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
7
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
8 import org.apache.log4j.Logger;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
9
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
10 import digilib.image.ImageJobDescription;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
11 import digilib.io.DocuDirectory;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
12 import digilib.io.FileOpException;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
13 import digilib.io.FileOps.FileClass;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
14 import digilib.util.NumRange;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
15 import digilib.util.OptionsSet;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
16 import digilib.util.ParameterMap;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
17
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
18
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
19 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
20 * A container class for storing a set of instruction parameters
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
21 * used for content generator classes like MakePDF.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
22 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
23 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
24 * @author cmielack, casties
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
25 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
26 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
27 public class PDFRequest extends ParameterMap {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
28
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
29 DigilibConfiguration dlConfig = null;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
30 NumRange pages = null;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
31 /** general logger for this class */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
32 protected static Logger logger = Logger.getLogger("digilib.servlet");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
33
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
34
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
35 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
36 * Initialize the PDFJobInformation
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
37 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
38 * @param dlcfg
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
39 * The DigilibConfiguration.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
40 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
41 public PDFRequest(DigilibConfiguration dlcfg) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
42 super(30);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
43 dlConfig = dlcfg;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
44 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
45
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
46 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
47 * Initialize the PDFJobInformation with a request.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
48 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
49 * @param dlcfg The DigilibConfiguration.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
50 * @param request
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
51 * @throws FileOpException
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
52 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
53 public PDFRequest(HttpServletRequest request, DigilibConfiguration dlcfg) throws FileOpException {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
54 super(30);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
55 dlConfig = dlcfg;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
56 this.setWithRequest(request);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
57 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
58
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
59
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
60 protected void initParams() {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
61 // page numbers
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
62 newParameter("pgs", "", null, 's');
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
63 // url of the page/document (second part)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
64 newParameter("fn", "", null, 's');
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
65 // width of client in pixels
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
66 newParameter("dw", new Integer(0), null, 's');
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
67 // height of client in pixels
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
68 newParameter("dh", new Integer(500), null, 's');
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
69 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
70
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
71 /* (non-Javadoc)
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
72 * @see digilib.servlet.ParameterMap#initOptions()
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
73 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
74 @Override
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
75 protected void initOptions() {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
76 options = (OptionsSet) getValue("mo");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
77 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
78
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
79 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
80 * Read the request object.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
81 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
82 * @param request
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
83 * @throws FileOpException
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
84 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
85 public void setWithRequest(HttpServletRequest request) throws FileOpException {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
86 // read matching request parameters for the parameters in this map
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
87 for (String k : params.keySet()) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
88 if (request.getParameterMap().containsKey(k)) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
89 setValueFromString(k, request.getParameter(k));
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
90 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
91 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
92 // process parameters
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
93 pages = new NumRange(getAsString("pgs"));
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
94 ImageJobDescription ij = ImageJobDescription.getInstance(this, dlConfig);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
95 DocuDirectory dir = ij.getFileDirectory();
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
96 int dirsize = dir.size(FileClass.IMAGE);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
97 pages.setMaxnum(dirsize);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
98 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
99
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
100
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
101 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
102 * Generate a filename for the pdf to be created.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
103 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
104 * @return
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
105 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
106 public String getDocumentId(){
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
107 String fn = getAsString("fn");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
108 String dh = getAsString("dh");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
109 String dw = getAsString("dw");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
110 String pgs = getAsString("pgs");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
111
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
112 String id = "fn=" + fn + "&dw=" + dw + "&dh=" + dh + "&pgs=" + pgs + ".pdf";
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
113 // make safe to use as filename by urlencoding
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
114 try {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
115 id = URLEncoder.encode(id, "UTF-8");
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
116 } catch (UnsupportedEncodingException e) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
117 // this shouldn't happen
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
118 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
119 return id;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
120 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
121
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
122
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
123 public ImageJobDescription getImageJobInformation(){
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
124 return ImageJobDescription.getInstance(this, dlConfig);
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
125 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
126
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
127
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
128 public NumRange getPages() {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
129 return pages;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
130 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
131
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
132
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
133 /**
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
134 * Check parameters for validity.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
135 * Returns true if no errors are found.
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
136 *
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
137 * @return
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
138 */
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
139 public boolean checkValidity(){
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
140 if (pages != null) {
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
141 return true;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
142 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
143 return false;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
144 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
145
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
146 public DigilibConfiguration getDlConfig(){
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
147 return dlConfig;
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
148 }
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
149
7779b37d1d05 refactored into maven modules per servlet type.
robcast
parents:
diff changeset
150 }