[Minor] cleaned up XmlHelper
This commit is contained in:
parent
60e75219bb
commit
f35ba7b13c
|
@ -21,9 +21,9 @@ package ch.eitchnet.utils.helper;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileInputStream;
|
import java.io.FileInputStream;
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.text.MessageFormat;
|
||||||
|
|
||||||
import javax.xml.parsers.DocumentBuilder;
|
import javax.xml.parsers.DocumentBuilder;
|
||||||
import javax.xml.parsers.DocumentBuilderFactory;
|
import javax.xml.parsers.DocumentBuilderFactory;
|
||||||
|
@ -57,17 +57,17 @@ public class XmlHelper {
|
||||||
/**
|
/**
|
||||||
* PROP_LINE_SEPARATOR = "line.separator" : the system property to fetch defined line separator
|
* PROP_LINE_SEPARATOR = "line.separator" : the system property to fetch defined line separator
|
||||||
*/
|
*/
|
||||||
public static final String PROP_LINE_SEPARATOR = "line.separator";
|
public static final String PROP_LINE_SEPARATOR = "line.separator"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* UNIX_LINE_SEP = "\n" : mostly we want this line separator, instead of the windows version
|
* UNIX_LINE_SEP = "\n" : mostly we want this line separator, instead of the windows version
|
||||||
*/
|
*/
|
||||||
public static final String UNIX_LINE_SEP = "\n";
|
public static final String UNIX_LINE_SEP = "\n"; //$NON-NLS-1$
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DEFAULT_ENCODING = "utf-8" : defines the default UTF-8 encoding expected of XML files
|
* DEFAULT_ENCODING = "utf-8" : defines the default UTF-8 encoding expected of XML files
|
||||||
*/
|
*/
|
||||||
public static final String DEFAULT_ENCODING = "utf-8";
|
public static final String DEFAULT_ENCODING = "utf-8"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(XmlHelper.class);
|
private static final Logger logger = LoggerFactory.getLogger(XmlHelper.class);
|
||||||
|
|
||||||
|
@ -79,11 +79,16 @@ public class XmlHelper {
|
||||||
*/
|
*/
|
||||||
public static void parseDocument(File xmlFile, DefaultHandler xmlHandler) {
|
public static void parseDocument(File xmlFile, DefaultHandler xmlHandler) {
|
||||||
|
|
||||||
try {
|
try (FileInputStream xmlFileInputStream = new FileInputStream(xmlFile);) {
|
||||||
XmlHelper.logger.info("Parsing XML document " + xmlFile.getAbsolutePath());
|
|
||||||
parseDocument(new FileInputStream(xmlFile), xmlHandler);
|
parseDocument(xmlFileInputStream, xmlHandler);
|
||||||
} catch (FileNotFoundException e) {
|
String msg = "SAX parsed file {0}"; //$NON-NLS-1$
|
||||||
throw new XmlException("The XML file could not be read: " + xmlFile.getAbsolutePath(), e);
|
logger.info(MessageFormat.format(msg, xmlFile.getAbsolutePath()));
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
String msg = "Failed to parse XML file: {0} due to: {1}"; //$NON-NLS-1$
|
||||||
|
msg = MessageFormat.format(msg, xmlFile.getAbsolutePath(), e.getMessage());
|
||||||
|
throw new XmlException(msg, e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,11 +108,11 @@ public class XmlHelper {
|
||||||
sp.parse(xmlFileInputStream, xmlHandler);
|
sp.parse(xmlFileInputStream, xmlHandler);
|
||||||
|
|
||||||
} catch (ParserConfigurationException e) {
|
} catch (ParserConfigurationException e) {
|
||||||
throw new XmlException("Failed to initialize a SAX Parser: " + e.getMessage(), e);
|
throw new XmlException("Failed to initialize a SAX Parser: " + e.getMessage(), e); //$NON-NLS-1$
|
||||||
} catch (SAXException e) {
|
} catch (SAXException e) {
|
||||||
throw new XmlException("The XML stream is not parseable: " + e.getMessage(), e);
|
throw new XmlException("The XML stream is not parseable: " + e.getMessage(), e); //$NON-NLS-1$
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new XmlException("The XML stream not be read: " + e.getMessage(), e);
|
throw new XmlException("The XML stream not be read: " + e.getMessage(), e); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -124,30 +129,33 @@ public class XmlHelper {
|
||||||
*/
|
*/
|
||||||
public static void writeDocument(Document document, File file) throws RuntimeException {
|
public static void writeDocument(Document document, File file) throws RuntimeException {
|
||||||
|
|
||||||
XmlHelper.logger.info("Exporting document element " + document.getNodeName() + " to " + file.getAbsolutePath());
|
String msg = "Exporting document element {0} to {1}"; //$NON-NLS-1$
|
||||||
|
msg = MessageFormat.format(msg, document.getNodeName(), file.getAbsolutePath());
|
||||||
|
XmlHelper.logger.info(msg);
|
||||||
|
|
||||||
String lineSep = System.getProperty(PROP_LINE_SEPARATOR);
|
String lineSep = System.getProperty(PROP_LINE_SEPARATOR);
|
||||||
try {
|
try {
|
||||||
|
|
||||||
String encoding = document.getInputEncoding();
|
String encoding = document.getInputEncoding();
|
||||||
if (encoding == null || encoding.isEmpty()) {
|
if (encoding == null || encoding.isEmpty()) {
|
||||||
XmlHelper.logger.info("No encoding passed. Using default encoding " + XmlHelper.DEFAULT_ENCODING);
|
XmlHelper.logger.info(MessageFormat.format(
|
||||||
|
"No encoding passed. Using default encoding {0}", XmlHelper.DEFAULT_ENCODING)); //$NON-NLS-1$
|
||||||
encoding = XmlHelper.DEFAULT_ENCODING;
|
encoding = XmlHelper.DEFAULT_ENCODING;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!lineSep.equals("\n")) {
|
if (!lineSep.equals("\n")) { //$NON-NLS-1$
|
||||||
XmlHelper.logger.info("Overriding line separator to \\n");
|
XmlHelper.logger.info("Overriding line separator to \\n"); //$NON-NLS-1$
|
||||||
System.setProperty(PROP_LINE_SEPARATOR, UNIX_LINE_SEP);
|
System.setProperty(PROP_LINE_SEPARATOR, UNIX_LINE_SEP);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set up a transformer
|
// Set up a transformer
|
||||||
TransformerFactory transfac = TransformerFactory.newInstance();
|
TransformerFactory transfac = TransformerFactory.newInstance();
|
||||||
Transformer transformer = transfac.newTransformer();
|
Transformer transformer = transfac.newTransformer();
|
||||||
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
|
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); //$NON-NLS-1$
|
||||||
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
|
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); //$NON-NLS-1$
|
||||||
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
|
transformer.setOutputProperty(OutputKeys.METHOD, "xml"); //$NON-NLS-1$
|
||||||
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
|
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
|
||||||
transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "2");
|
transformer.setOutputProperty("{http://xml.apache.org/xalan}indent-amount", "2"); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
// transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", "\t");
|
// transformer.setOutputProperty("{http://xml.apache.org/xalan}line-separator", "\t");
|
||||||
|
|
||||||
// Transform to file
|
// Transform to file
|
||||||
|
@ -157,7 +165,7 @@ public class XmlHelper {
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
||||||
throw new XmlException("Exception while exporting to file: " + e, e);
|
throw new XmlException("Exception while exporting to file: " + e, e); //$NON-NLS-1$
|
||||||
|
|
||||||
} finally {
|
} finally {
|
||||||
|
|
||||||
|
@ -203,9 +211,9 @@ public class XmlHelper {
|
||||||
return document;
|
return document;
|
||||||
|
|
||||||
} catch (DOMException e) {
|
} catch (DOMException e) {
|
||||||
throw new XmlException("Failed to create Document: " + e.getLocalizedMessage(), e);
|
throw new XmlException("Failed to create Document: " + e.getLocalizedMessage(), e); //$NON-NLS-1$
|
||||||
} catch (ParserConfigurationException e) {
|
} catch (ParserConfigurationException e) {
|
||||||
throw new XmlException("Failed to create Document: " + e.getLocalizedMessage(), e);
|
throw new XmlException("Failed to create Document: " + e.getLocalizedMessage(), e); //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue