changeset 1680:395d56ba0112

10: Allow Texter Servlet to Deliver Json Files Task-Url: http://github.com/robcast/digilib/issues/10
author Robert Casties <casties@mpiwg-berlin.mpg.de>
date Fri, 09 Mar 2018 15:34:20 +0100
parents f0daa76caba1
children 6d5e04a54848
files common/src/main/java/digilib/io/FileOps.java text/src/main/java/digilib/conf/TextServletConfiguration.java text/src/main/java/digilib/servlet/Texter.java
diffstat 3 files changed, 24 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/common/src/main/java/digilib/io/FileOps.java	Fri Mar 09 15:32:39 2018 +0100
+++ b/common/src/main/java/digilib/io/FileOps.java	Fri Mar 09 15:34:20 2018 +0100
@@ -44,10 +44,11 @@
 			{ "jpeg", "image/jpeg" }, { "jp2", "image/jp2" },
 			{ "png", "image/png" }, { "gif", "image/gif" },
 			{ "tif", "image/tiff" }, { "tiff", "image/tiff" },
-                        { "fpx", "image/fpx" },
+            { "fpx", "image/fpx" }, { "svg", "image/svg+xml" },
 			{ "txt", "text/plain" }, { "html", "text/html" },
 			{ "htm", "text/html" }, { "xml", "text/xml" },
-			{ "svg", "image/svg+xml" }, { "meta", "text/xml" } };
+			{ "meta", "text/xml" }, { "json", "application/json" }
+			};
 
 	public static Map<String, String> fileTypes;
 
@@ -98,8 +99,10 @@
 		if (mt == null) {
 			return FileClass.NONE;
 		}
-		if (mt.startsWith("image/svg")) {
+		if (mt.equals("image/svg")) {
 			return FileClass.SVG;
+		} else if (mt.equals("application/json")) {
+			return FileClass.TEXT;
 		} else if (mt.startsWith("image")) {
 			return FileClass.IMAGE;
 		} else if (mt.startsWith("text")) {
--- a/text/src/main/java/digilib/conf/TextServletConfiguration.java	Fri Mar 09 15:32:39 2018 +0100
+++ b/text/src/main/java/digilib/conf/TextServletConfiguration.java	Fri Mar 09 15:34:20 2018 +0100
@@ -51,7 +51,7 @@
     public static final String TEXT_DIR_CACHE_KEY = "text.servlet.dir.cache";    
     
     public static String getClassVersion() {
-        return "2.3.0 txt";
+    		return DigilibServletConfiguration.getClassVersion()+ " txt";
     }
 
     /** non-static getVersion for Java inheritance */
@@ -66,6 +66,9 @@
      */
     public TextServletConfiguration() {
         super();
+        // default text file subdirectory
+        newParameter("text-default-dir", null, null, 'f');
+        
         // text cache instance
         newParameter(TEXT_DIR_CACHE_KEY, null, null, 's');
     }
--- a/text/src/main/java/digilib/servlet/Texter.java	Fri Mar 09 15:32:39 2018 +0100
+++ b/text/src/main/java/digilib/servlet/Texter.java	Fri Mar 09 15:34:20 2018 +0100
@@ -81,6 +81,9 @@
 
 	/** use authentication */
     protected boolean useAuthorization = false;
+    
+    /** default text directory */
+    protected String defaultDir = "txt";
 
 	/*
 	 * (non-Javadoc)
@@ -111,7 +114,9 @@
 		// DocuDirCache instance
 		dirCache = (DocuDirCache) dlConfig.getValue(TextServletConfiguration.TEXT_DIR_CACHE_KEY);
         // configure ServletOps
-        ServletOps.setDlConfig(dlConfig);        
+        ServletOps.setDlConfig(dlConfig);
+        // set default dir
+        defaultDir = dlConfig.getAsString("text-default-dir");
 	}
 
 	/*
@@ -153,11 +158,13 @@
 			/*
 			 * find the file to load/send
 			 */
-			TextFile f = getTextFile(dlRequest, "/txt");
+			// try default directory
+			TextFile f = getTextFile(dlRequest, defaultDir);
 			if (f != null) {
 				ServletOps.sendFile(f.getFile(), null, null, response, logger);
 			} else {
-				f = getTextFile(dlRequest, "");
+				// try without default directory
+				f = getTextFile(dlRequest, null);
 				if (f != null) {
 					ServletOps.sendFile(f.getFile(), null, null, response, logger);
 				} else {
@@ -190,9 +197,11 @@
 	 *            be found.
 	 * @return The wanted Textfile or null if there wasn't a file.
 	 */
-
 	protected TextFile getTextFile(DigilibServletRequest dlRequest, String subDirectory) {
-		String loadPathName = dlRequest.getFilePath() + subDirectory;
+		String loadPathName = dlRequest.getFilePath();
+		if (subDirectory != null) {
+			loadPathName = dlRequest.getFilePath() + "/" + subDirectory;
+		}
 		// find the file(set)
 		return (TextFile) dirCache.getFile(loadPathName, dlRequest.getAsInt("pn"));
 	}