Store and load props as properties files.
authorMathieu Baudier <mbaudier@argeo.org>
Tue, 9 Aug 2016 16:02:00 +0000 (16:02 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Tue, 9 Aug 2016 16:02:00 +0000 (16:02 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@9073 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

org.argeo.util/src/org/argeo/util/LangUtils.java

index c94db9d3044655540e0991fd4fa6393c8dc499f5..3b29e868c13291b05751869174ce39e67ffc26a3 100644 (file)
@@ -1,8 +1,15 @@
 package org.argeo.util;
 
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.Map;
+import java.util.Properties;
 
 public class LangUtils {
        /*
@@ -24,7 +31,7 @@ public class LangUtils {
         */
 
        /**
-        * Creates a new {@link Dictionary} with one key-value pair (neith key not
+        * Creates a new {@link Dictionary} with one key-value pair (neither key not
         * value should be null)
         */
        public static Dictionary<String, Object> init(String key, Object value) {
@@ -72,6 +79,30 @@ public class LangUtils {
                return sb.toString();
        }
 
+       public static void storeAsProperties(Dictionary<String, Object> props, Path path) throws IOException {
+               if (props == null)
+                       throw new IllegalArgumentException("Props cannot be null");
+               Properties toStore = new Properties();
+               for (Enumeration<String> keys = props.keys(); keys.hasMoreElements();) {
+                       String key = keys.nextElement();
+                       toStore.setProperty(key, props.get(key).toString());
+               }
+               try (OutputStream out = Files.newOutputStream(path)) {
+                       toStore.store(out, null);
+               }
+       }
+
+       public static Dictionary<String, Object> loadFromProperties(Path path) throws IOException {
+               Properties toLoad = new Properties();
+               try (InputStream in = Files.newInputStream(path)) {
+                       toLoad.load(in);
+               }
+               Dictionary<String, Object> res = new Hashtable<String, Object>();
+               for (Object key : toLoad.keySet())
+                       res.put(key.toString(), toLoad.get(key));
+               return res;
+       }
+
        /** Singleton constructor. */
        private LangUtils() {