Mercurial > hg > digilib-old
diff servlet/src/digilib/io/DigilibInfoReader.java @ 569:1f666c2b4578
Merge with PDF branch
8beefd1142b28ca9b2433205e7eea82a517bb215
author | robcast |
---|---|
date | Tue, 21 Dec 2010 09:52:16 +0100 |
parents | 0885f5ca5b24 |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/servlet/src/digilib/io/DigilibInfoReader.java Tue Dec 21 09:52:16 2010 +0100 @@ -0,0 +1,76 @@ +package digilib.io; + +/** 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; + } + } + +}