Add string list util.
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 27 Nov 2020 10:58:38 +0000 (11:58 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 27 Nov 2020 10:58:38 +0000 (11:58 +0100)
org.argeo.enterprise/src/org/argeo/util/LangUtils.java

index 7824d12de41945c37a6ea9eeb1962db4f390428d..5a5b4b7d856568cc353f88556bc10d137656bf35 100644 (file)
@@ -10,10 +10,12 @@ import java.nio.file.StandardOpenOption;
 import java.time.ZonedDateTime;
 import java.time.temporal.ChronoUnit;
 import java.time.temporal.Temporal;
+import java.util.ArrayList;
 import java.util.Dictionary;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.Hashtable;
+import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
@@ -201,6 +203,35 @@ public class LangUtils {
                return res;
        }
 
+       /*
+        * COLLECTIONS
+        */
+       /**
+        * Convert a comma-separated or carrirer-return sperated {@link String} or a
+        * {@link String} array to a {@link List} of {@link String}, trimming them.
+        * Useful to quickly interpret OSGi services properties.
+        * 
+        * @return a {@link List} containing the trimmed {@link String}s, or an empty
+        *         {@link List} if the argument was <code>null</code>.
+        */
+       public static List<String> toStringList(Object value) {
+               List<String> values = new ArrayList<>();
+               if (value == null)
+                       return values;
+               String[] arr;
+               if (value instanceof String) {
+                       arr = ((String) value).split(",\n");
+               } else if (value instanceof String[]) {
+                       arr = (String[]) value;
+               } else {
+                       throw new IllegalArgumentException("Unsupported value type " + value.getClass());
+               }
+               for (String str : arr) {
+                       values.add(str.trim());
+               }
+               return values;
+       }
+
        /*
         * EXCEPTIONS
         */