diff servlet/src/digilib/pdf/PDFTitlePage.java @ 595:e8668edcb880 stream

Merge from HEAD 85e465e6a6425d91c0704f6584a461492d51de97
author robcast
date Sun, 09 Jan 2011 21:11:03 +0100
parents 95417c4615b8 85e465e6a642
children
line wrap: on
line diff
--- a/servlet/src/digilib/pdf/PDFTitlePage.java	Fri Jan 07 12:00:10 2011 +0100
+++ b/servlet/src/digilib/pdf/PDFTitlePage.java	Sun Jan 09 21:11:03 2011 +0100
@@ -1,5 +1,6 @@
 package digilib.pdf;
 
+import java.io.File;
 import java.io.IOException;
 import java.net.MalformedURLException;
 import java.net.URL;
@@ -14,8 +15,7 @@
 import com.itextpdf.text.Image;
 import com.itextpdf.text.Paragraph;
 
-
-import digilib.io.DocuDirCache;
+import digilib.io.FileOpException;
 import digilib.servlet.PDFCache;
 import digilib.servlet.PDFRequest;
 
@@ -27,7 +27,6 @@
 	
 	private PDFRequest job_info = null;
 	private DigilibInfoReader info_reader= null;
-	private DocuDirCache dirCache = null;
 	protected static Logger logger = Logger.getLogger("digilib.servlet");
 
 	
@@ -37,12 +36,27 @@
 	 */
 	public PDFTitlePage(PDFRequest pdfji){
 		job_info = pdfji;
-		dirCache = (DocuDirCache) job_info.getDlConfig().getValue("servlet.dir.cache");
+
+		// use MPIWG-style info.xml
+        info_reader = getInfoXmlReader(pdfji);
+	}
 
-		String fn = getBase(dirCache.getDirectory(pdfji.getImageJobInformation().getAsString("fn")).getDir().getPath()) + "presentation/info.xml";
-		
-		info_reader = new DigilibInfoReader(fn);
-	}
+    /**
+     * @param pdfji
+     * @return 
+     */
+    protected DigilibInfoReader getInfoXmlReader(PDFRequest pdfji) {
+        try {
+            // try to load ../presentation/info.xml
+            File imgDir = pdfji.getImageJobInformation().getFileDirectory().getDir();
+            File docDir = imgDir.getParentFile();
+            File infoFn = new File(new File(docDir, "presentation"), "info.xml");
+            return new DigilibInfoReader(infoFn.getAbsolutePath());
+        } catch (FileOpException e) {
+            logger.warn("info.xml not found");
+        }
+        return null;
+    }
 	
 	/**
 	 * generate iText-PDF-Contents for the title page
@@ -58,7 +72,6 @@
 			content.add(Chunk.NEWLINE);
 		}
 		
-		
 		// add logo
 		content.add(getLogo());
 		content.add(Chunk.NEWLINE);
@@ -88,9 +101,6 @@
 		content.add(Chunk.NEWLINE);
 		content.add(Chunk.NEWLINE);
 
-		// add credits
-		content.add(new Paragraph("MPIWG Berlin 2009", FontFactory.getFont(FontFactory.HELVETICA,10)));
-
 		// add digilib version
 		content.add(new Paragraph(getDigilibVersion(),FontFactory.getFont(FontFactory.HELVETICA,10)));
 
@@ -108,32 +118,11 @@
 		return content;
 	}
 	
-	/**
-	 * return base directory of an image directory
-	 * 
-	 * @param path
-	 * @return
-	 */
-	private String getBase(String path){
-		if(path.contains("/")){
-			String[] x = path.split("/");
-			String newpath = "";
-			for(int i=0; i<x.length-1; i++){
-				newpath += x[i]+"/";
-			}
-			return newpath;
-		}
-		else
-			return "";
-	}
-	
-
-	/**
+	/*
 	 * Methods for the different attributes.
 	 * 
 	 */
 	
-	
 	private Image getLogo(){
 		try {
 			URL url = new URL(job_info.getDlConfig().getAsString("pdf-logo"));
@@ -144,34 +133,35 @@
 			}
 		} catch (BadElementException e) {
 			logger.error(e.getMessage());
-			e.printStackTrace();
 		} catch (MalformedURLException e) {
 			logger.error(e.getMessage());
-			e.printStackTrace();
 		} catch (IOException e) {
 			logger.error(e.getMessage());
-			e.printStackTrace();
 		}
 		return null;
 	}
+	
 	private String getTitle(){
 		if(info_reader.hasInfo())
 			return info_reader.getAsString("title");
 		else
 			return job_info.getImageJobInformation().getAsString("fn");
 	}
+	
 	private String getAuthor(){
 		if(info_reader.hasInfo())
 			return info_reader.getAsString("author");
 		else
 			return " ";
 	}
+	
 	private String getDate(){
 		if(info_reader.hasInfo())
 			return info_reader.getAsString("date");
 		else
 			return " ";
 	}
+	
 	private String getPages(){
 		return "Pages "+job_info.getAsString("pgs") + " (scan page numbers)";
 	}