view servlet/src/digilib/servlet/DigilibInfoReader.java @ 552:785fc58b68b1 digilibPDF

more cleanup and refactoring
author robcast
date Wed, 15 Dec 2010 08:58:01 +0100
parents 9cedd170b581
children
line wrap: on
line source

package digilib.servlet;

/** DigilibInfoReader 
 * A class for reading the information from info.xml files used in digilib image directories.
 *
 */

import java.io.File;
import java.util.List;

import org.apache.log4j.Logger;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;



public class DigilibInfoReader {

	/** gengeral logger for this class */
	protected static Logger logger = Logger.getLogger("digilib.servlet");
	
	private String filename = null;
	//private static String base_element = "info";
	
	public DigilibInfoReader(String fn){
		filename = fn;
	}

	/**
	 * Returns the attribute defined by 'attr' as a String.
	 * 
	 * @param attr
	 * @return
	 */
	@SuppressWarnings("unchecked") // Element.getChildren() returns naked List
    public String getAsString(String attr){
		try{
			SAXBuilder builder = new SAXBuilder();
			Document doc = builder.build(new File(filename));
			Element root = doc.getRootElement();
			List<Element> mainElements = root.getChildren();
			// logger.debug("XML mainElements:"+mainElements.toString());

			for(int i=0; i<mainElements.size(); i++){
				Element elem = mainElements.get(i);
				if(elem.getName()==attr){
					// logger.debug(attr+" == "+(String)elem.getTextTrim());
					return (String)elem.getTextTrim();
				}
			}

		}
		catch(Exception e){
			logger.error(e.getMessage());
		}
		return null;
	}
	
	
	/**
	 * Find out if the info.xml exists
	 * @return
	 */
	public boolean hasInfo(){
		try {
			SAXBuilder builder = new SAXBuilder();
			builder.build(new File(filename));
			return true;
		}
		catch(Exception e){
			return false;
		}
	}
	
}