XML Java

/*
 * This file is made available under the terms of the LGPL licence.
 * This licence can be retrieved from http://www.gnu.org/copyleft/lesser.html.
 * The source remains the property of the YAWL Foundation.  The YAWL Foundation is a
 * collaboration of individuals and organisations who are committed to improving
 * workflow technology.
 */
import org.jdom.*;
import org.jdom.input.SAXBuilder;
import org.jdom.output.*;
import org.apache.log4j.Logger;
import java.io.*;
/**
 * Some static utility methods for coverting JDOM Documents and Elements
 * to Strings and files & vice versa.
 *
 *  @author Michael Adams
 *  04/07/2006
 *
 *  Last date: 22/06/08
 */
 public class JDOMUtil {
    private static Logger _log = Logger.getLogger("org.yawlfoundation.yawl.util.JDOMUtil");
    /****************************************************************************/
    public static String documentToString(Document doc) {
        if (doc == null) return null;
        XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
        return out.outputString(doc);
    }
    /****************************************************************************/
    public static String elementToString(Element e) {
        if (e == null) return null ;
        XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
        return out.outputString(e);
    }
    /****************************************************************************/
    public static String elementToStringDump(Element e) {
        if (e == null) return null ;
        XMLOutputter out = new XMLOutputter(Format.getCompactFormat());
        return out.outputString(e);
    }
    /****************************************************************************/
    public static Document stringToDocument(String s) {
        try {
           if (s == null) return null ;
           return new SAXBuilder().build(new StringReader(s));
        }
        catch (JDOMException jde) {
            _log.error("JDOMException converting to Document, String = " + s , jde);
            return null ;
        }
        catch (IOException ioe) {
            _log.error("IOException converting to Document, String = " + s, ioe);
            return null ;
        }
    }
    /****************************************************************************/
    public static Element stringToElement(String s) {
        if (s == null) return null ;
        Document doc = stringToDocument(s);
        return doc.getRootElement();
    }
    /****************************************************************************/
    public static Document fileToDocument(String path) {
       try {
           if (path == null) return null ;
           return new SAXBuilder().build(new File(path));
       }
       catch (JDOMException jde) {
           _log.error("JDOMException loading file into Document, filepath = " + path , jde);
           return null ;
       }
       catch (IOException ioe) {
           _log.error("IOException loading file into Document, filepath = " + path, ioe);
           return null ;
       }
    }
    /****************************************************************************/
         /** saves a JDOM Document to a file */
     public static void documentToFile(Document doc, String path)   {
        try {
           FileOutputStream fos = new FileOutputStream(path);
           XMLOutputter xop = new XMLOutputter(Format.getPrettyFormat());
           xop.output(doc, fos);
           fos.flush();
           fos.close();
      }
      catch (IOException ioe){
          _log.error("IO Exeception in saving Document to file, filepath = " + path, ioe) ;
      }
   }
    /****************************************************************************/
    public static String getDefaultValueForType(String dataType) {
        if (dataType == null) return "null";
        else if (dataType.equalsIgnoreCase("boolean")) return "false" ;
        else if (dataType.equalsIgnoreCase("string")) return "" ;
        else return "0";
    }
    /****************************************************************************/
    public static String encodeEscapes(String s) {
        if (s == null) return s;
        return s.replaceAll("&", "&")
                .replaceAll("<", "<")                
                .replaceAll(">", ">")
                .replaceAll("\"", """)
                .replaceAll("'", "'") ;
    }
    public static String decodeEscapes(String s) {
        if (s == null) return s;
        return s.replaceAll("&", "&")
                .replaceAll("<","<")               
                .replaceAll(">", ">")
                .replaceAll(""","\"")
                .replaceAll("'", "'") ;
    }
    /****************************************************************************/
    public static String formatXMLString(String s) {
        if (s == null) return null;
        if (s.startsWith("            return documentToString(stringToDocument(s));
        else
            return elementToString(stringToElement(s));
    }
    public static String formatXMLStringAsDocument(String s) {
        return documentToString(stringToDocument(s));
    }
    public static String formatXMLStringAsElement(String s) {
        return elementToString(stringToElement(s));
    }
} //ends