]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - org.argeo.util/src/org/argeo/util/LangUtils.java
Store and load props as properties files.
[lgpl/argeo-commons.git] / 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() {