LP#1646166 Hatch properties file
authorBill Erickson <berickxx@gmail.com>
Mon, 23 Jan 2017 17:43:53 +0000 (12:43 -0500)
committerBill Erickson <berickxx@gmail.com>
Thu, 16 Feb 2017 20:27:01 +0000 (15:27 -0500)
Adds ability to pass configuration data to Hatch via a new
hatch.properties file.  Adds (for now) one new property "data.directory"
which overrides the default data storage directory.

Signed-off-by: Bill Erickson <berickxx@gmail.com>
hatch.properties [new file with mode: 0644]
src/org/evergreen_ils/hatch/Hatch.java
src/org/evergreen_ils/hatch/RequestHandler.java

diff --git a/hatch.properties b/hatch.properties
new file mode 100644 (file)
index 0000000..25f2215
--- /dev/null
@@ -0,0 +1,7 @@
+# Hatch Properties File
+
+# Full path to the data storage directory.  Defaults to the $HOME/.evergreen/
+# If you change this you may also want to change the 
+# java.util.logging.FileHandler.pattern property in logging.properties.
+#data.directory=/tmp/foo
+
index 8773fc6..3a4ea3f 100644 (file)
 package org.evergreen_ils.hatch;
 
 import java.util.Map;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
 import java.util.logging.*;
 import org.json.*;
 
@@ -79,6 +83,8 @@ public class Hatch extends Application {
         printRequestQueue = new LinkedBlockingQueue<JSONObject>();
 
     static final Logger logger = Logger.getLogger("org.evergreen_ils.hatch");
+
+    private static Properties configProps;
     
     /**
      * Printable region containing a browser.
@@ -170,6 +176,34 @@ public class Hatch extends Application {
         }
     }
 
+    /**
+     * Read the configuration properties file.
+     */
+    private static void readProps() {
+        if (configProps != null) return; // already loaded.
+        configProps = new Properties();
+        InputStream input = null;
+
+        try {
+            input = new FileInputStream("hatch.properties");
+            configProps.load(input);
+        } catch (IOException e) {
+            logger.warning("Unable to open Hatch properties file: " + e);
+        } finally {
+            if (input != null) {
+                try { input.close(); } catch (Exception e2) {}
+            }
+        }
+    }
+
+    /**
+     * Get values for configurable properties
+     */
+    public static String getProp(String name) {
+        readProps();
+        return configProps.getProperty(name);
+    }
+
 
     /**
      * Hatch main.
index f399a1a..400e02c 100644 (file)
@@ -38,12 +38,23 @@ public class RequestHandler extends Thread {
         // Find the profile directory.
         // The profile directory + origin string represent the base 
         // directory for all file I/O for this session.
-        if (profileDirectory == null) { // TODO: make configurable
-            String home = System.getProperty("user.home");
-            profileDirectory = new File(home, ".evergreen").getPath();
+        if (profileDirectory == null) {
+
+            // first see if a value is set in the properties file.
+            profileDirectory = Hatch.getProp("data.directory");
+
             if (profileDirectory == null) {
-                logger.warning("Unable to set profile directory");
+                // otherwise set the directory to the users's home
+                // directory + .evergreen
+                String home = System.getProperty("user.home");
+                profileDirectory = new File(home, ".evergreen").getPath();
+
+                if (profileDirectory == null) {
+                    logger.warning("Unable to set profile directory");
+                }
             }
+
+            logger.info("Using data directory: " + profileDirectory);
         }
     }