diff servlet/src/digilib/servlet/Texter.java @ 161:ace2a4a0ba74

servlet version 1.16a4 - rather experimental - new Texter servlet for sending text - reads and caches text files in DocuDirCache - DocuFile renamed to ImageFile (-Set) - new TextFile
author robcast
date Tue, 16 Sep 2003 18:32:28 +0200
parents
children 6002ea661acd
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/servlet/src/digilib/servlet/Texter.java	Tue Sep 16 18:32:28 2003 +0200
@@ -0,0 +1,196 @@
+/* Texter.java -- Servlet for displaying text
+
+  Digital Image Library servlet components
+
+  Copyright (C) 2003 Robert Casties (robcast@mail.berlios.de)
+
+  This program is free software; you can redistribute  it and/or modify it
+  under  the terms of  the GNU General  Public License as published by the
+  Free Software Foundation;  either version 2 of the  License, or (at your
+  option) any later version.
+   
+  Please read license.txt for the full details. A copy of the GPL
+  may be found at http://www.gnu.org/copyleft/lgpl.html
+
+  You should have received a copy of the GNU General Public License
+  along with this program; if not, write to the Free Software
+  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+ * Created on 15.09.2003 by casties
+ *
+ */
+package digilib.servlet;
+
+import java.io.IOException;
+
+import javax.servlet.ServletConfig;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import digilib.Utils;
+import digilib.auth.AuthOps;
+import digilib.io.DocuDirCache;
+import digilib.io.FileOpException;
+import digilib.io.FileOps;
+import digilib.io.TextFile;
+
+/** Servlet for displaying text
+ * 
+ * @author casties
+ *
+ */
+public class Texter extends HttpServlet {
+
+	/** Servlet version */
+	public static String tlVersion = "0.1a1";
+	/** DigilibConfiguration instance */
+	DigilibConfiguration dlConfig = null;
+	/** Utils instance with debuglevel */
+	Utils util;
+	/** FileOps instance */
+	FileOps fileOp;
+	/** AuthOps instance */
+	AuthOps authOp;
+	/** ServletOps instance */
+	ServletOps servletOp;
+	/** DocuDirCache instance */
+	DocuDirCache dirCache;
+
+	/** use authentication */
+	boolean useAuthentication = false;
+
+	/* (non-Javadoc)
+	 * @see javax.servlet.Servlet#init(javax.servlet.ServletConfig)
+	 */
+	public void init(ServletConfig config) throws ServletException {
+		super.init(config);
+
+		System.out.println(
+			"***** Digital Image Library Text Servlet (version "
+				+ tlVersion
+				+ ") *****");
+
+		// get our ServletContext
+		ServletContext context = config.getServletContext();
+		// see if there is a Configuration instance
+		dlConfig =
+			(DigilibConfiguration) context.getAttribute(
+				"digilib.servlet.configuration");
+		if (dlConfig == null) {
+			// create new Configuration
+			try {
+				dlConfig = new DigilibConfiguration(config);
+				context.setAttribute("digilib.servlet.configuration", dlConfig);
+			} catch (Exception e) {
+				throw new ServletException(e);
+			}
+		}
+		// first we need an Utils
+		util = dlConfig.getUtil();
+		// set our AuthOps
+		useAuthentication = dlConfig.getAsBoolean("use-authorization");
+		authOp = (AuthOps) dlConfig.getValue("servlet.auth.op");
+		// FileOps instance
+		fileOp = new FileOps(util);
+		// AuthOps instance
+		servletOp = new ServletOps(util);
+		// DocuDirCache instance
+		dirCache = (DocuDirCache) dlConfig.getValue("servlet.dir.cache");
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+	 */
+	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);
+		// add DigilibRequest to ServletRequest
+		request.setAttribute("digilib.servlet.request", dlReq);
+		// do the processing
+		processRequest(request, response);
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.servlet.http.HttpServlet#doPost(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
+	 */
+	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);
+		// add DigilibRequest to ServletRequest
+		request.setAttribute("digilib.servlet.request", dlReq);
+		// do the processing
+		processRequest(request, response);
+	}
+
+	protected void processRequest(
+		HttpServletRequest request,
+		HttpServletResponse response)
+		throws ServletException, IOException {
+
+		/*
+		 *  request parameters
+		 */
+
+		DigilibRequest dlRequest =
+			(DigilibRequest) request.getAttribute("digilib.servlet.request");
+
+		try {
+
+			/*
+			 *  find the file to load/send
+			 */
+
+			// get PathInfo
+			String loadPathName = dlRequest.getFilePath();
+			// find the file(set)
+			TextFile fileToLoad =
+				(TextFile) dirCache.getFile(
+					loadPathName,
+					dlRequest.getPn(),
+					FileOps.CLASS_TEXT);
+			if (fileToLoad == null) {
+				throw new FileOpException(
+					"File "
+						+ loadPathName
+						+ "("
+						+ dlRequest.getPn()
+						+ ") not found.");
+			}
+
+			/*
+			 * do something with the file
+			 */
+			 
+
+
+			/*
+			 * send the result
+			 */
+			 
+			servletOp.sendFile(fileToLoad.getFile(), response);
+			
+
+		} catch (FileOpException e) {
+			util.dprintln(1, "ERROR: File IO Error: " + e);
+			try {
+				ServletOps.htmlMessage("ERROR: File IO Error: " + e, response);
+			} catch (FileOpException ex) {
+			} // so we don't get a loop
+		}
+
+	}
+
+}