# HG changeset patch # User robcast # Date 1292399881 -3600 # Node ID 785fc58b68b154441b772b37ad60ad35b14dce8a # Parent 6c9eba7772cfc2ec15e5614821cf6db20f38c6a6 more cleanup and refactoring diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/DigilibConfiguration.java --- a/servlet/src/digilib/servlet/DigilibConfiguration.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/DigilibConfiguration.java Wed Dec 15 08:58:01 2010 +0100 @@ -50,8 +50,6 @@ */ public class DigilibConfiguration extends ParameterMap { - private static final long serialVersionUID = -6630487070791637120L; - /** DocuImage class instance */ private Class docuImageClass = null; @@ -63,11 +61,16 @@ * */ public DigilibConfiguration() { - // create HashMap(20) super(20); // we start with a default logger config BasicConfigurator.configure(); + initParams(); + } + /** + * + */ + protected void initParams() { /* * Definition of parameters and default values. System parameters that * are not read from config file have a type 's'. @@ -93,6 +96,10 @@ newParameter("servlet.auth.op", null, null, 's'); // Executor for image operations newParameter("servlet.worker.imageexecutor", null, null, 's'); + // Executor for PDF operations + newParameter("servlet.worker.pdfexecutor", null, null, 's'); + // Executor for PDF-image operations + newParameter("servlet.worker.pdfimageexecutor", null, null, 's'); /* * parameters that can be read from config file have a type 'f' @@ -161,7 +168,8 @@ newParameter("pdf-temp-dir", "pdf_temp", null, 'f'); // PDF generation cache directory newParameter("pdf-cache-dir", "pdf_cache", null, 'f'); - + // PDF generation cache directory + newParameter("pdf-cache-dir", "pdf_cache", null, 'f'); } /** diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/DigilibRequest.java --- a/servlet/src/digilib/servlet/DigilibRequest.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/DigilibRequest.java Wed Dec 15 08:58:01 2010 +0100 @@ -65,11 +65,14 @@ protected ServletRequest servletRequest; // internal ServletRequest - /** Creates a new instance of DigilibRequest and sets default values. */ public DigilibRequest() { - // create HashMap(20) super(30); + } + /** set up parameters. + * + */ + protected void initParams() { /* * Definition of parameters and default values. Parameter of type 's' * are for the servlet. @@ -152,7 +155,6 @@ newParameter("lv", new Integer(2), null, 'c'); // marks newParameter("mk", "", null, 'c'); - } /** @@ -162,7 +164,7 @@ * @param request */ public DigilibRequest(ServletRequest request) { - this(); + super(30); setWithRequest(request); } diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/ImageJobDescription.java --- a/servlet/src/digilib/servlet/ImageJobDescription.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/ImageJobDescription.java Wed Dec 15 08:58:01 2010 +0100 @@ -57,6 +57,14 @@ public ImageJobDescription(DigilibConfiguration dlcfg) { super(30); dlConfig = dlcfg; + } + + + /** set up Parameters + * @see digilib.servlet.ParameterMap#initParams() + */ + @Override + protected void initParams() { // url of the page/document (second part) newParameter("fn", "", null, 's'); // page number @@ -98,16 +106,31 @@ } - /** Constructor using another ParameterMap. - * Clones internal Maps only! - * @param otherMap - * @param dlcfg + /* (non-Javadoc) + * @see digilib.servlet.ParameterMap#initOptions() */ - public ImageJobDescription(ParameterMap otherMap, DigilibConfiguration dlcfg) { - super(otherMap); - dlConfig = dlcfg; + @Override + protected void initOptions() { + if (options == null) { + String s = this.getAsString("mo"); + options = new OptionsSet(s); + } } - + + + /** Creates new ImageJobDescription by merging Parameters from another ParameterMap. + * @param pm + * @param dlcfg + * @return + */ + public static ImageJobDescription setFrom(ParameterMap pm, DigilibConfiguration dlcfg) { + ImageJobDescription newMap = new ImageJobDescription(dlcfg); + // add all params to this map + newMap.params.putAll(pm.params); + newMap.initOptions(); + return newMap; + } + public String getMimeType() throws IOException { if (mimeType == null) { diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/PDFCache.java --- a/servlet/src/digilib/servlet/PDFCache.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/PDFCache.java Wed Dec 15 08:58:01 2010 +0100 @@ -70,7 +70,7 @@ logger.info("***** Digital Image Library Image PDF-Cache Servlet (version " + version + ") *****"); - ServletContext context = config.getServletContext(); + ServletContext context = getServletContext(); dlConfig = (DigilibConfiguration) context.getAttribute("digilib.servlet.configuration"); if (dlConfig == null) { // no Configuration @@ -190,7 +190,7 @@ try { // forward to the relevant jsp - ServletContext context = request.getServletContext(); + ServletContext context = getServletContext(); RequestDispatcher dispatch = context.getRequestDispatcher(jsp); dispatch.forward(request, response); } catch (ServletException e) { @@ -250,7 +250,7 @@ // filename example: digilib_example_pgs1-3.pdf String filename; filename = "digilib_"; - filename += pdfji.getImageJobInformation().getAsString("fn"); + filename += pdfji.getAsString("fn"); filename += "_pgs" + pdfji.getAsString("pgs"); filename += ".pdf"; diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/PDFJobDescription.java --- a/servlet/src/digilib/servlet/PDFJobDescription.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/PDFJobDescription.java Wed Dec 15 08:58:01 2010 +0100 @@ -22,10 +22,9 @@ */ public class PDFJobDescription extends ParameterMap { - ImageJobDescription image_info = null; DigilibConfiguration dlConfig = null; NumRange pages = null; - /** gengeral logger for this class */ + /** general logger for this class */ protected static Logger logger = Logger.getLogger("digilib.servlet"); @@ -38,14 +37,6 @@ public PDFJobDescription(DigilibConfiguration dlcfg) { super(30); dlConfig = dlcfg; - // page numbers - newParameter("pgs", "", null, 's'); - // url of the page/document (second part) - newParameter("fn", "", null, 's'); - // width of client in pixels - newParameter("dw", new Integer(0), null, 's'); - // height of client in pixels - newParameter("dh", new Integer(0), null, 's'); } /** @@ -61,24 +52,33 @@ } + protected void initParams() { + // page numbers + newParameter("pgs", "", null, 's'); + // url of the page/document (second part) + newParameter("fn", "", null, 's'); + // width of client in pixels + newParameter("dw", new Integer(0), null, 's'); + // height of client in pixels + newParameter("dh", new Integer(0), null, 's'); + } + /** * Read in the request object. * * @param request */ public void setWithRequest(HttpServletRequest request) { - image_info = new ImageJobDescription(dlConfig); - // FIXME: image_info.setWithRequest(request); - - for (String param : parameter_list){ - if (request.getParameterMap().containsKey(param)){ - setValueFromString(param, request.getParameter(param)); + for (String k : params.keySet()) { + if (request.getParameterMap().containsKey(k)) { + setValueFromString(k, request.getParameter(k)); } } // process parameters try { pages = new NumRange(getAsString("pgs")); - DocuDirectory dir = image_info.getFileDirectory(); + ImageJobDescription ij = ImageJobDescription.setFrom(this, dlConfig); + DocuDirectory dir = ij.getFileDirectory(); int dirsize = dir.size(FileOps.CLASS_IMAGE); pages.setMaxnum(dirsize); } catch (Exception e) { @@ -97,31 +97,24 @@ // TODO use complete request information for id generation - if(this.image_info!=null){ - String fn = image_info.getAsString("fn"); - String dh = image_info.getAsString("dh"); - String pgs = getAsString("pgs"); + String fn = getAsString("fn"); + String dh = getAsString("dh"); + String dw = getAsString("dw"); + String pgs = getAsString("pgs"); - id = "fn=" + fn + "&dh=" + dh + "&pgs=" + pgs + ".pdf"; - // make safe to use as filename by urlencoding - try { - id = URLEncoder.encode(id, "UTF-8"); - } catch (UnsupportedEncodingException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } + id = "fn=" + fn + "&dw=" + dw + "&dh=" + dh + "&pgs=" + pgs + ".pdf"; + // make safe to use as filename by urlencoding + try { + id = URLEncoder.encode(id, "UTF-8"); + } catch (UnsupportedEncodingException e) { + // this shouldn't happen } - else { - id = null; - } - return id; } public ImageJobDescription getImageJobInformation(){ - ImageJobDescription new_image_info = new ImageJobDescription(image_info, dlConfig); - return new_image_info; + return ImageJobDescription.setFrom(this, dlConfig); } diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/PDFStreamWorker.java --- a/servlet/src/digilib/servlet/PDFStreamWorker.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/PDFStreamWorker.java Wed Dec 15 08:58:01 2010 +0100 @@ -81,7 +81,7 @@ for (int p : pgs) { logger.debug(" - adding Image " + p + " to " + outstream); // create ImageJobInformation - ImageJobDescription iji = job_info.getImageJobInformation(); + ImageJobDescription iji = ImageJobDescription.setFrom(job_info, job_info.dlConfig); iji.setValue("pn", p); addImage(doc, iji); logger.debug(" - done adding Image " + p + " to " + outstream); diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/ParameterMap.java --- a/servlet/src/digilib/servlet/ParameterMap.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/ParameterMap.java Wed Dec 15 08:58:01 2010 +0100 @@ -22,6 +22,7 @@ package digilib.servlet; import java.util.HashMap; +import java.util.Map.Entry; /** HashMap of digilib.servlet.Parameter's. * @@ -42,14 +43,16 @@ public ParameterMap() { params = new HashMap(); options = new OptionsSet(); + initParams(); } /** Constructor with initial size. - * @param arg0 + * @param size */ - public ParameterMap(int arg0) { - params = new HashMap(arg0); + public ParameterMap(int size) { + params = new HashMap(size); options = new OptionsSet(); + initParams(); } /** Shallow copy constructor. @@ -59,11 +62,40 @@ @SuppressWarnings("unchecked") public static ParameterMap cloneFrom(ParameterMap pm) { ParameterMap newPm = new ParameterMap(); + // clone params to this map newPm.params = (HashMap) pm.params.clone(); newPm.options = (OptionsSet) pm.options.clone(); return newPm; } + + /** Creates new ParameterMap by merging Parameters from another ParameterMap. + * @param pm + * @return + */ + public static ParameterMap setFrom(ParameterMap pm) { + ParameterMap newPm = new ParameterMap(); + // add all params to this map + newPm.params.putAll(pm.params); + newPm.initOptions(); + return newPm; + + } + + /** set up parameters + * + */ + protected void initParams() { + // no default parameters + } + + /** set up options + * + */ + protected void initOptions() { + // no default options + } + /** Get the Parameter with the corresponding key. * * Returns null if no element is associated with key. diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/Scaler.java --- a/servlet/src/digilib/servlet/Scaler.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/Scaler.java Wed Dec 15 08:58:01 2010 +0100 @@ -152,7 +152,7 @@ // parse request DigilibRequest dlRequest = new DigilibRequest(request); // extract the job information - ImageJobDescription jobTicket = new ImageJobDescription(dlRequest, dlConfig); + ImageJobDescription jobTicket = ImageJobDescription.setFrom(dlRequest, dlConfig); ImageWorker job = null; try { diff -r 6c9eba7772cf -r 785fc58b68b1 servlet/src/digilib/servlet/Texter.java --- a/servlet/src/digilib/servlet/Texter.java Tue Dec 14 20:26:35 2010 +0100 +++ b/servlet/src/digilib/servlet/Texter.java Wed Dec 15 08:58:01 2010 +0100 @@ -108,9 +108,7 @@ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // create new request with defaults - DigilibRequest dlReq = new DigilibRequest(); - // set with request parameters - dlReq.setWithRequest(request); + DigilibRequest dlReq = new DigilibRequest(request); // add DigilibRequest to ServletRequest request.setAttribute("digilib.servlet.request", dlReq); // do the processing @@ -126,9 +124,7 @@ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // create new request with defaults - DigilibRequest dlReq = new DigilibRequest(); - // set with request parameters - dlReq.setWithRequest(request); + DigilibRequest dlReq = new DigilibRequest(request); // add DigilibRequest to ServletRequest request.setAttribute("digilib.servlet.request", dlReq); // do the processing