/*
* 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