changeset 557:5e487570d855

Merge
author gernotbelger
date Wed, 27 Jun 2018 14:41:15 +0200
parents 408fd2cb7bb5 (current diff) ba31ca213c88 (diff)
children 609ced80bcf0
files
diffstat 1 files changed, 119 insertions(+), 85 deletions(-) [+]
line wrap: on
line diff
--- a/artifacts-common/src/main/java/org/dive4elements/artifacts/common/utils/Config.java	Thu Jun 14 15:30:53 2018 +0200
+++ b/artifacts-common/src/main/java/org/dive4elements/artifacts/common/utils/Config.java	Wed Jun 27 14:41:15 2018 +0200
@@ -10,20 +10,20 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Properties;
 
 import javax.xml.namespace.QName;
-
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
-
 import javax.xml.xpath.XPathConstants;
 
 import org.apache.log4j.Logger;
-
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
-
 import org.xml.sax.SAXException;
 
 /**
@@ -33,8 +33,7 @@
  *
  * @author <a href="mailto:sascha.teichmann@intevation.de">Sascha L. Teichmann</a>
  */
-public final class Config
-{
+public final class Config {
     private static Logger logger = Logger.getLogger(Config.class);
 
     /**
@@ -46,22 +45,19 @@
      * Default path to the configuration directory if none
      * was specified by the CONFIG_DIR system property.
      */
-    public static final File CONFIG_DIR_DEFAULT =
-        new File(new File(System.getProperty("user.home",
-            System.getProperty("user.dir", "."))), ".artifactdb");
+    public static final File CONFIG_DIR_DEFAULT = new File(new File(System.getProperty("user.home", System.getProperty("user.dir", "."))), ".artifactdb");
 
     /**
      * Name of the central configuration XML file.
      */
-    public static final String CONFIG_FILE  = "conf.xml";
+    public static final String CONFIG_FILE = "conf.xml";
 
     /**
      * Name of the configuration filename alias to be use
      * within the configuration. This alias is replaced by
      * the real path.
      */
-    public static final String CONFIG_DIR_PLACEHOLDER =
-        "${artifacts.config.dir}";
+    public static final String CONFIG_DIR_PLACEHOLDER = "${artifacts.config.dir}";
 
     private static Document config;
 
@@ -70,6 +66,7 @@
 
     /**
      * Singleton access to the central XML configuration document.
+     *
      * @return The central XML configuration document.
      */
     public static synchronized final Document getConfig() {
@@ -79,18 +76,34 @@
         return config;
     }
 
+    public static Properties loadProperties(final String CONFIG_FILE_LOCAL) {
+        final File configDir = getConfigDirectory();
+        final File configFile = new File(configDir, CONFIG_FILE_LOCAL);
+
+        final Properties properties = new Properties();
+        InputStreamReader reader;
+        try {
+            reader = new InputStreamReader(Files.newInputStream(configFile.toPath()), StandardCharsets.ISO_8859_1);
+            properties.load(reader);
+        }
+        catch (final IOException e) {
+            e.printStackTrace();
+        }
+
+        return properties;
+    }
+
     /**
      * Returns the path to the configuartion directory. If a path
      * was specified via the CONFIG_DIR system property this one
      * is used. Else it falls back to default configuration path.
+     *
      * @return The path to the configuartion directory.
      */
     public static File getConfigDirectory() {
-        String configDirString = System.getProperty(CONFIG_DIR);
+        final String configDirString = System.getProperty(CONFIG_DIR);
 
-        File configDir = configDirString != null
-            ? new File(configDirString)
-            : CONFIG_DIR_DEFAULT;
+        File configDir = configDirString != null ? new File(configDirString) : CONFIG_DIR_DEFAULT;
 
         if (!configDir.isDirectory()) {
             logger.warn("'" + configDir + "' is not a directory.");
@@ -103,40 +116,40 @@
     /**
      * Replaces the CONFIG_DIR_PLACEHOLDER alias with the real path
      * of the configuration directory.
-     * @param path The path containing the CONFIG_DIR_PLACEHOLDER placeholder.
+     *
+     * @param path
+     *            The path containing the CONFIG_DIR_PLACEHOLDER placeholder.
      * @return The path where the CONFIG_DIR_PLACEHOLDER placeholders are
-     * replaced by the real path name.
+     *         replaced by the real path name.
      */
-    public static String replaceConfigDir(String path) {
-        String configDir = getConfigDirectory().getAbsolutePath();
+    public static String replaceConfigDir(final String path) {
+        final String configDir = getConfigDirectory().getAbsolutePath();
         return path.replace(CONFIG_DIR_PLACEHOLDER, configDir);
     }
 
     private static Document loadConfig() {
 
-        File configDir = getConfigDirectory();
+        final File configDir = getConfigDirectory();
 
-        File file = new File(configDir, CONFIG_FILE);
+        final File file = new File(configDir, CONFIG_FILE);
 
         if (!file.canRead() && !file.isFile()) {
-            logger.error("Cannot read config file '"
-                + file + "'.");
+            logger.error("Cannot read config file '" + file + "'.");
             return null;
         }
 
         try {
-            DocumentBuilderFactory factory =
-                DocumentBuilderFactory.newInstance();
+            final DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
             factory.setValidating(false); // XXX: This may change in future.
             return factory.newDocumentBuilder().parse(file);
         }
-        catch (SAXException se) {
+        catch (final SAXException se) {
             logger.error(se.getLocalizedMessage(), se);
         }
-        catch (ParserConfigurationException pce) {
+        catch (final ParserConfigurationException pce) {
             logger.error(pce.getLocalizedMessage(), pce);
         }
-        catch (IOException ioe) {
+        catch (final IOException ioe) {
             logger.error(ioe.getLocalizedMessage());
         }
 
@@ -146,131 +159,152 @@
     /**
      * Convenience method to search within a given document tree via XPath.
      * See {@link XMLUtils#xpath(Object, String, QName) } for details.
-     * @param root The object which is used as the root of the tree to
-     * be searched in.
-     * @param query The XPath query.
-     * @param returnType The type of the result.
+     *
+     * @param root
+     *            The object which is used as the root of the tree to
+     *            be searched in.
+     * @param query
+     *            The XPath query.
+     * @param returnType
+     *            The type of the result.
      * @return The result of type 'returnTyp' or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final Object getXPath(
-        Object root, String query, QName returnType
-    ) {
+    public static final Object getXPath(final Object root, final String query, final QName returnType) {
         return XMLUtils.xpath(root, query, returnType);
     }
 
     /**
      * Convenience method to search within the central configuration via XPath.
      * See {@link XMLUtils#xpath(Object, String, QName) } for details.
-     * @param query The XPath query.
-     * @param returnType The type of the result.
+     *
+     * @param query
+     *            The XPath query.
+     * @param returnType
+     *            The type of the result.
      * @return The result of type 'returnTyp' or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final Object getXPath(String query, QName returnType) {
+    public static final Object getXPath(final String query, final QName returnType) {
         return XMLUtils.xpath(getConfig(), query, returnType);
     }
 
     /**
      * Convenience method to search for a node list within the central
      * configuation document via XPath.
-     * @param query The XPath query.
+     *
+     * @param query
+     *            The XPath query.
      * @return The queried node list or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final NodeList getNodeSetXPath(String query) {
-        return (NodeList)getXPath(query, XPathConstants.NODESET);
+    public static final NodeList getNodeSetXPath(final String query) {
+        return (NodeList) getXPath(query, XPathConstants.NODESET);
     }
 
     /**
      * Convenience method to search for a node within the central
      * configuation document via XPath.
-     * @param query The XPath query.
+     *
+     * @param query
+     *            The XPath query.
      * @return The queried node or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final Node getNodeXPath(String query) {
-        return (Node)getXPath(query, XPathConstants.NODE);
+    public static final Node getNodeXPath(final String query) {
+        return (Node) getXPath(query, XPathConstants.NODE);
     }
 
     /**
      * Convenience method to search for a string within the central
      * configuation document via XPath.
-     * @param xpath The XPath query.
+     *
+     * @param xpath
+     *            The XPath query.
      * @return The queried string or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final String getStringXPath(String xpath) {
+    public static final String getStringXPath(final String xpath) {
         return getStringXPath(xpath, null);
     }
 
     /**
      * Convenience method to search for a string within the central
      * configuation document via XPath.
-     * @param query The XPath query.
-     * @param def The string to be returned if the search has no results.
+     *
+     * @param query
+     *            The XPath query.
+     * @param def
+     *            The string to be returned if the search has no results.
      * @return The queried string or the default value if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final String getStringXPath(String query, String def) {
-        String s = (String)getXPath(query, XPathConstants.STRING);
-        return s == null || s.length() == 0
-            ? def
-            : s;
+    public static final String getStringXPath(final String query, final String def) {
+        final String s = (String) getXPath(query, XPathConstants.STRING);
+        return s == null || s.length() == 0 ? def : s;
     }
 
     /**
      * Convenience method to search for a node list within a given tree
      * via XPath.
-     * @param root The root of the tree to be searched in.
-     * @param query The XPath query.
+     *
+     * @param root
+     *            The root of the tree to be searched in.
+     * @param query
+     *            The XPath query.
      * @return The queried node list or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final NodeList getNodeSetXPath(Object root, String query) {
-        return (NodeList)getXPath(root, query, XPathConstants.NODESET);
+    public static final NodeList getNodeSetXPath(final Object root, final String query) {
+        return (NodeList) getXPath(root, query, XPathConstants.NODESET);
     }
 
     /**
      * Convenience method to search for a node within a given tree
      * via XPath.
-     * @param root The root of the tree to be searched in.
-     * @param query The XPath query.
+     *
+     * @param root
+     *            The root of the tree to be searched in.
+     * @param query
+     *            The XPath query.
      * @return The queried node or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final Node getNodeXPath(Object root, String query) {
-        return (Node)getXPath(root, query, XPathConstants.NODE);
+    public static final Node getNodeXPath(final Object root, final String query) {
+        return (Node) getXPath(root, query, XPathConstants.NODE);
     }
 
     /**
      * Convenience method to search for a string within a given tree
      * via XPath.
-     * @param root The root of the tree to be searched in.
-     * @param xpath The XPath query.
+     *
+     * @param root
+     *            The root of the tree to be searched in.
+     * @param xpath
+     *            The XPath query.
      * @return The queried string or null if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final String getStringXPath(Object root, String xpath) {
+    public static final String getStringXPath(final Object root, final String xpath) {
         return getStringXPath(root, xpath, null);
     }
 
     /**
      * Convenience method to search for a string within a given tree
      * via XPath.
-     * @param root The root of the tree to be searched in.
-     * @param query xpath The XPath query.
-     * @param def The string to be returned if the search has no results.
+     *
+     * @param root
+     *            The root of the tree to be searched in.
+     * @param query
+     *            xpath The XPath query.
+     * @param def
+     *            The string to be returned if the search has no results.
      * @return The queried string or the default value if something went
-     * wrong during XPath evaluation.
+     *         wrong during XPath evaluation.
      */
-    public static final String getStringXPath(
-        Object root, String query, String def
-    ) {
-        String s = (String)getXPath(root, query, XPathConstants.STRING);
-        return s == null || s.length() == 0
-            ? def
-            : s;
+    public static final String getStringXPath(final Object root, final String query, final String def) {
+        final String s = (String) getXPath(root, query, XPathConstants.STRING);
+        return s == null || s.length() == 0 ? def : s;
     }
 }
 // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org