changeset 1271:5d02e7f08917

small fixes.
author robcast
date Mon, 27 Jan 2014 19:41:24 +0100
parents 3ab98c1847b7
children d0c99b2d7234
files common/src/main/java/digilib/conf/DigilibConfiguration.java common/src/main/java/digilib/image/ImageJobDescription.java common/src/main/java/digilib/image/ImageLoaderDocuImage.java common/src/main/java/digilib/io/DocuDirCache.java common/src/main/java/digilib/io/DocuDirectory.java common/src/main/java/digilib/io/ImageCacheStream.java common/src/main/java/digilib/io/ImageSet.java common/src/main/java/digilib/io/ImageStream.java common/src/main/java/digilib/meta/MetaFactory.java
diffstat 9 files changed, 99 insertions(+), 28 deletions(-) [+]
line wrap: on
line diff
--- a/common/src/main/java/digilib/conf/DigilibConfiguration.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/conf/DigilibConfiguration.java	Mon Jan 27 19:41:24 2014 +0100
@@ -84,7 +84,7 @@
         // maximum destination image size (0 means no limit)
         newParameter("max-image-size", new Integer(0), null, 'f');
         // allow image toolkit to use disk cache
-        newParameter("img-diskcache-allowed", Boolean.TRUE, null, 'f');
+        newParameter("img-diskcache-allowed", Boolean.FALSE, null, 'f');
         // default type of error message (image, text, code)
         newParameter("default-errmsg-type", "image", null, 'f');
         // prefix for IIIF image API paths (used by DigilibRequest)
@@ -111,9 +111,11 @@
                         }
                         if (!param.setValueFromString((String) confEntry.getValue())) {
                             /*
-                             * automatic conversion failed -- try special casesß
+                             * automatic conversion failed -- try special cases
                              */
-                            logger.warn("Unable to parse config parameter: "+param.getName());
+                            if (!setSpecialValueFromString(param, (String) confEntry.getValue())) {
+                                logger.warn("Unable to parse config parameter: "+param.getName());
+                            }
                         }
                     } else {
                         // parameter unknown -- just add
@@ -129,6 +131,20 @@
         }
     }
     
+    
+    /**
+     * Set non-standard value in Parameter param. Returns true if successful.
+     * 
+     * @param param
+     * @param value
+     * @return
+     */
+    protected boolean setSpecialValueFromString(Parameter param, String value) {
+        // should be overridden
+        return false;
+    }
+    
+    
     /**
      * Configure digilib.
      * 
@@ -137,13 +153,7 @@
     @SuppressWarnings("unchecked")
     public void configure() {
         DigilibConfiguration config = this;
-        if (DigilibConfiguration.isLoggerConfigured) {
-            logger.debug("Logger already configured!");
-        } else {
-            // we start log4j with a default logger config
-            BasicConfigurator.configure();
-            DigilibConfiguration.isLoggerConfigured = true;
-        }
+        setupLogger();
         /*
          * initialise static DocuImage class instance
          */
@@ -172,4 +182,17 @@
         ImageIO.setUseCache(dc);
     }
 
+    /**
+     * Configure Log4J (using BasicConfigurator).
+     */
+    public static void setupLogger() {
+        if (DigilibConfiguration.isLoggerConfigured) {
+            logger.debug("Logger already configured!");
+        } else {
+            // we start log4j with a default logger config
+            BasicConfigurator.configure();
+            DigilibConfiguration.isLoggerConfigured = true;
+        }
+    }
+
 }
--- a/common/src/main/java/digilib/image/ImageJobDescription.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/image/ImageJobDescription.java	Mon Jan 27 19:41:24 2014 +0100
@@ -38,7 +38,6 @@
 import digilib.io.DocuDirectory;
 import digilib.io.FileOpException;
 import digilib.io.FileOps;
-import digilib.io.FileOps.FileClass;
 import digilib.io.ImageInput;
 import digilib.io.ImageSet;
 import digilib.util.ImageSize;
@@ -306,7 +305,7 @@
             if (dirCache == null) {
                 throw new FileOpException("No DirCache configured!");
             }
-            imageSet = (ImageSet) dirCache.getFile(getFilePath(), getAsInt("pn"), FileClass.IMAGE);
+            imageSet = (ImageSet) dirCache.getFile(getFilePath(), getAsInt("pn"));
             if (imageSet == null) {
                 throw new FileOpException("File " + getFilePath() + "(" + getAsInt("pn") + ") not found.");
             }
@@ -570,7 +569,8 @@
             qual = 0;
         else if (hasOption("q1"))
             qual = 1;
-        else if (hasOption("q2")) qual = 2;
+        else if (hasOption("q2")) 
+            qual = 2;
         return qual;
     }
 
--- a/common/src/main/java/digilib/image/ImageLoaderDocuImage.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/image/ImageLoaderDocuImage.java	Mon Jan 27 19:41:24 2014 +0100
@@ -186,7 +186,7 @@
         // RenderingHints.VALUE_ANTIALIAS_OFF);
         // setup interpolation quality
         if (qual > 0) {
-            logger.debug("quality q1");
+            logger.debug("quality q1+");
             renderHint.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_BICUBIC);
         } else {
             logger.debug("quality q0");
--- a/common/src/main/java/digilib/io/DocuDirCache.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/io/DocuDirCache.java	Mon Jan 27 19:41:24 2014 +0100
@@ -60,10 +60,8 @@
 	protected AtomicInteger misses = new AtomicInteger(0);
 
 	/**
-	 * Constructor with array of base directory names and file class.
+	 * Constructor with digilib configuration and file class.
 	 * 
-	 * @param bd
-	 *            base directory names
      * @param fc
      * @param dlConfig
 	 */
@@ -73,10 +71,7 @@
 	}
 
 	/**
-	 * Constructor with array of base directory names.
-	 * 
-	 * @param bd
-	 *            base directory names
+	 * Default constructor. Uses FileClass.IMAGE.
 	 */
 	public DocuDirCache() {
 		// default file class is CLASS_IMAGE
@@ -115,7 +110,7 @@
 	/**
 	 * Add a directory to the cache and check its parents.
 	 * Always returns the correct Object from the cache, 
-	 * either newDir one or another one.
+	 * either newDir or the cached one.
 	 *
 	 * @param newDir
 	 * @return dir
@@ -141,7 +136,7 @@
 
     /**
      * Returns the DocuDirent with the pathname <code>fn</code> and the index
-     * <code>in</code>.
+     * <code>in</code> of FileClass fc.
      * 
      * If <code>fn</code> is a file then the corresponding DocuDirent is
      * returned and the index is ignored.
--- a/common/src/main/java/digilib/io/DocuDirectory.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/io/DocuDirectory.java	Mon Jan 27 19:41:24 2014 +0100
@@ -175,7 +175,9 @@
 	 *  
 	 */
 	public void readMeta() {
-	    meta.readMeta(this);
+	    if (meta != null) {
+	        meta.readMeta(this);
+	    }
 	}
 
 
@@ -184,7 +186,9 @@
      *  
      */
     public void checkMeta() {
-        meta.checkMeta(this);
+        if (meta != null) {
+            meta.checkMeta(this);
+        }
     }
 
 
--- a/common/src/main/java/digilib/io/ImageCacheStream.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/io/ImageCacheStream.java	Mon Jan 27 19:41:24 2014 +0100
@@ -35,7 +35,7 @@
  */
 public class ImageCacheStream extends ImageStream {
 
-    private ImageInputStream iis = null;
+    protected ImageInputStream iis = null;
     
     /** Create ImageCacheStream from InputStream and mime-type.
      * 
@@ -52,7 +52,9 @@
          * InputStream. This class is provided for cases where it is not
          * possible to create a writable temporary file.
          */
-        iis = ImageIO.createImageInputStream(stream);
+        if (stream != null) {
+            iis = ImageIO.createImageInputStream(stream);
+        }
     }
 
     /*
@@ -75,4 +77,19 @@
         return iis;
     }
 
+    /* (non-Javadoc)
+     * @see digilib.io.ImageStream#setInputStream(java.io.InputStream)
+     */
+    @Override
+    public void setInputStream(InputStream stream) {
+        super.setInputStream(stream);
+        if (stream != null) {
+            try {
+                iis = ImageIO.createImageInputStream(stream);
+            } catch (IOException e) {
+                // nothing to do, really.
+            }
+        }
+    }
+
 }
--- a/common/src/main/java/digilib/io/ImageSet.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/io/ImageSet.java	Mon Jan 27 19:41:24 2014 +0100
@@ -220,7 +220,7 @@
     }
 
     /**
-     * Adds an ImageImput to this ImageSet.
+     * Adds an ImageInput to this ImageSet.
      * 
      * The images should be added in the order of higher to lower resolutions.
      * The first image is considered the hires "original".
@@ -234,5 +234,22 @@
     	f.setParent(this);
     	return list.add(f);
     }
+    
+    
+    /**
+     * Append all ImageInputs from another ImageSet (at the end).
+     * 
+     * Changes the parents of the ImageInputs to this ImageSet.
+     *  
+     * @param imgs
+     */
+    public void append(ImageSet imgs) {
+        // append list
+        list.addAll(imgs.list);
+        // change parents
+        for (ImageInput ii : imgs.list) {
+            ii.setParent(this);
+        }
+    }
 
 }
--- a/common/src/main/java/digilib/io/ImageStream.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/io/ImageStream.java	Mon Jan 27 19:41:24 2014 +0100
@@ -63,4 +63,11 @@
         return stream;
     }
 
+    /**
+     * @param stream the stream to set
+     */
+    public void setInputStream(InputStream stream) {
+        this.stream = stream;
+    }
+
 }
--- a/common/src/main/java/digilib/meta/MetaFactory.java	Fri Jan 24 18:03:20 2014 +0100
+++ b/common/src/main/java/digilib/meta/MetaFactory.java	Mon Jan 27 19:41:24 2014 +0100
@@ -46,6 +46,10 @@
     protected static Class<FileMeta> fileMetaClass;
 
     public static FileMeta getFileMetaInstance() {
+        if (fileMetaClass == null) {
+            logger.warn("No FileMeta class!");
+            return null;
+        }
         FileMeta mo = null;
         try {
             mo = fileMetaClass.newInstance();
@@ -56,6 +60,10 @@
     }
     
     public static DirMeta getDirMetaInstance() {
+        if (dirMetaClass == null) {
+            logger.warn("No DirMeta class!");
+            return null;
+        }
         DirMeta mo = null;
         try {
             mo = dirMetaClass.newInstance();