This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new 75a02e2c EMPIREDB-410 StringUtils.arrayToString: parameter 
"ignoreEmpty" added
75a02e2c is described below

commit 75a02e2c184e0d65e9040912ed5fef270791e0b0
Author: Rainer Döbele <[email protected]>
AuthorDate: Wed May 1 14:23:39 2024 +0200

    EMPIREDB-410
    StringUtils.arrayToString: parameter "ignoreEmpty" added
---
 .../org/apache/empire/jsf2/app/FacesUtils.java     | 10 ++-
 .../org/apache/empire/commons/StringUtils.java     | 77 ++++++++++++++++------
 .../org/apache/empire/commons/StringUtilsTest.java | 25 ++++---
 3 files changed, 84 insertions(+), 28 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java
index bf544468..b3f27d8e 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/app/FacesUtils.java
@@ -20,6 +20,7 @@ package org.apache.empire.jsf2.app;
 
 import java.io.File;
 import java.io.IOException;
+import java.text.MessageFormat;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
@@ -407,6 +408,13 @@ public class FacesUtils
         return getMessage(getContext(), messageKey);
     }
 
+    public static String formatMessage(String msgKey, Object... params)
+    {
+        TextResolver tr = getTextResolver(FacesContext.getCurrentInstance());
+        String pattern = tr.resolveKey(msgKey);
+        return MessageFormat.format(pattern, params);
+    }
+
     /*
     public static void addInfoMessage(FacesContext fc, String clientId, String 
msg)
     {
@@ -480,7 +488,7 @@ public class FacesUtils
         // redirect to target page
         FacesMessage facesMsg = getFacesErrorMessage(fc, t);
         ExternalContext ec = fc.getExternalContext();
-        ec.getSessionMap().put("PAGE_SESSION_MESSAGE", facesMsg);
+        ec.getSessionMap().put(Page.SESSION_MESSAGE, facesMsg);
         // redirect
         FacesUtils.redirectDirectly(fc, pageTarget);
     }
diff --git a/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java 
b/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java
index fe47caa9..09528dc5 100644
--- a/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java
+++ b/empire-db/src/main/java/org/apache/empire/commons/StringUtils.java
@@ -192,14 +192,13 @@ public class StringUtils
      * @param array array of objects
      * @param template the list template or item separator
      * @param defItemValue the default item value
+     * @param ignoreEmpty check value for emptiness
      * @return returns a String or null if the array is null or empty
      */
-    public static String arrayToString(Object[] array, String template, String 
defItemValue)
+    public static String arrayToString(Object[] array, String template, String 
defItemValue, boolean ignoreEmpty)
     {
-        if (array == null)
+        if (array==null || array.length==0)
             return null;
-        if (array.length < 1)
-            return EMPTY;
         // check 
         int tbeg = (template!=null ? template.indexOf(TEMPLATE_SEP_CHAR) : -1);
         if (array.length>1 || tbeg>0)
@@ -209,18 +208,39 @@ public class StringUtils
             StringBuilder buf = new StringBuilder();
             if (tend>0)
                 buf.append(template.substring(0, tbeg));
+            boolean hasValue = false;
             for (int i = 0; i < array.length; i++)
-            {   // append item
-                if (i>0 && separator!=null)
+            {   // append separator
+                if (hasValue && separator!=null)
                     buf.append(separator);
-                buf.append(toString(array[i], template, defItemValue));
+                // append value
+                String value = toString(array[i], template, defItemValue);
+                hasValue = !(ignoreEmpty && StringUtils.isEmpty(value));
+                if (hasValue && value!=null)
+                    buf.append(value);
             }
             if (tend>0)
                 buf.append(template.substring(tend+1));
             return buf.toString();
         }
         // Only one member
-        return toString(array[0], template, defItemValue);
+        String value = toString(array[0], template, defItemValue);
+        if (ignoreEmpty && StringUtils.isEmpty(value))
+            return defItemValue;
+        return value;
+    }
+    
+    /**
+     * Converts an array of objects to a string.
+     * 
+     * @param array array of objects
+     * @param template the list template or item separator
+     * @param defItemValue the default item value
+     * @return returns a String or null if the array is null or empty
+     */
+    public static String arrayToString(Object[] array, String template, String 
defItemValue)
+    {
+        return arrayToString(array, template, defItemValue, 
SPACE.equals(template));
     }
 
     /**
@@ -232,7 +252,7 @@ public class StringUtils
      */
     public static String arrayToString(Object[] array, String separator)
     {
-        return arrayToString(array, separator, NULL);
+        return arrayToString(array, separator, EMPTY);
     }
     
     /**
@@ -241,36 +261,55 @@ public class StringUtils
      * @param list the collection of objects
      * @param template the list template or item separator
      * @param defItemValue the default item value
+     * @param ignoreEmpty check value for emptiness
      * @return returns a String or null if the list is null
      */
-    public static String listToString(Collection<?> list, String template, 
String defItemValue)
+    public static String listToString(Collection<?> list, String template, 
String defItemValue, boolean ignoreEmpty)
     {
-        if (list == null)
+        if (list==null || list.isEmpty())
             return null;
-        if (list.isEmpty())
-            return EMPTY;
         // check 
         int tbeg = (template!=null ? template.indexOf(TEMPLATE_SEP_CHAR) : -1);
         if (list.size()>1 || tbeg>0)
         {   // build the list
-            int count=0;
             int tend =(tbeg>=0 ? template.lastIndexOf(TEMPLATE_SEP_CHAR) : -1);
             String separator = ((tbeg>0) ? (tend>tbeg ? 
template.substring(tbeg+1, tend) : DEFAULT_ITEM_SEPARATOR) : template);
             StringBuilder buf = new StringBuilder();
             if (tend>0)
                 buf.append(template.substring(0, tbeg));
+            boolean hasValue = false;
             for (Object item : list)
-            {   // append item
-                if (count++>0 && separator!=null)
+            {   // append separator
+                if (hasValue && separator!=null)
                     buf.append(separator);
-                buf.append(toString(item, template, defItemValue));
+                // append value
+                String value = toString(item, template, defItemValue);
+                hasValue = !(ignoreEmpty && StringUtils.isEmpty(value));
+                if (hasValue && value!=null)
+                    buf.append(value);
             }
             if (tend>0)
                 buf.append(template.substring(tend+1));
             return buf.toString();
         }
         // Only one member
-        return toString(list.iterator().next(), template, defItemValue);
+        String value = toString(list.iterator().next(), template, 
defItemValue);
+        if (ignoreEmpty && StringUtils.isEmpty(value))
+            return defItemValue;
+        return value;
+    }
+    
+    /**
+     * Converts a list (Collection) of objects to a string.
+     * 
+     * @param list the collection of objects
+     * @param template the list template or item separator
+     * @param defItemValue the default item value
+     * @return returns a String or null if the list is null
+     */
+    public static String listToString(Collection<?> list, String template, 
String defItemValue)
+    {
+        return listToString(list, template, defItemValue, 
SPACE.equals(template));
     }
     
     /**
@@ -282,7 +321,7 @@ public class StringUtils
      */
     public static String listToString(Collection<?> list, String separator)
     {
-        return listToString(list, separator, NULL);
+        return listToString(list, separator, EMPTY);
     }
 
     /**
diff --git 
a/empire-db/src/test/java/org/apache/empire/commons/StringUtilsTest.java 
b/empire-db/src/test/java/org/apache/empire/commons/StringUtilsTest.java
index 005dfe9b..ac4bcc52 100644
--- a/empire-db/src/test/java/org/apache/empire/commons/StringUtilsTest.java
+++ b/empire-db/src/test/java/org/apache/empire/commons/StringUtilsTest.java
@@ -49,11 +49,11 @@ public class StringUtilsTest
        public void testToStringObjectArrayString()
        {
                assertEquals(null,StringUtils.toString((Object[])null));
-        assertEquals("",StringUtils.toString(new Number[]{}));
+        assertEquals(null,StringUtils.toString(new Number[]{}));
         assertEquals("",StringUtils.toString(new Number[]{null}));
         assertEquals("null",StringUtils.toString(new Number[]{null}, 
StringUtils.NULL));
                assertEquals("default",StringUtils.toString((Object[])null, 
"default"));
-               assertEquals("",StringUtils.toString(new Number[]{}, 
"default"));
+               assertEquals("default",StringUtils.toString(new Number[]{}, 
"default"));
         assertEquals("default",StringUtils.toString(new Number[]{null}, 
"default"));
         assertEquals("123",StringUtils.toString(new 
Number[]{Integer.valueOf("123")}, "default"));
                assertEquals("123|12.3",StringUtils.toString(new 
Number[]{Integer.valueOf("123"), Double.valueOf("12.3")}, "default"));
@@ -74,7 +74,7 @@ public class StringUtilsTest
     public void testToStringCollections()
     {
         ArrayList<String> array = new ArrayList<String>();
-        assertEquals("", StringUtils.toString(array, null));
+        assertEquals(null, StringUtils.toString(array, null));
         array.add(null);
         assertEquals("", StringUtils.toString(array, null));
         assertEquals("null", StringUtils.toString(array, StringUtils.NULL));
@@ -88,13 +88,18 @@ public class StringUtilsTest
         array.add("end");
         assertEquals("one|default|end",StringUtils.toString(array, "default"));
         assertEquals("one||end",StringUtils.listToString(array, "|", 
StringUtils.EMPTY));
+        // Special case with SPACE
+        assertEquals("one end",StringUtils.listToString(array, 
StringUtils.SPACE, StringUtils.EMPTY));
+        array.clear();
+        array.add("   ");
+        assertEquals("null",StringUtils.listToString(array, StringUtils.SPACE, 
StringUtils.NULL));
     }
 
        @Test
        public void testToStringObjectArray()
        {
                assertEquals(null,StringUtils.toString((Object[])null));
-               assertEquals("",StringUtils.toString(new Number[]{}));
+               assertEquals(null,StringUtils.toString(new Number[]{}));
                assertEquals("123|12.3",StringUtils.toString(new 
Number[]{Integer.valueOf("123"), Double.valueOf("12.3")}));
        }
 
@@ -140,14 +145,18 @@ public class StringUtilsTest
        {
                assertEquals(null, StringUtils.arrayToString(null , null));
                assertEquals(null, StringUtils.arrayToString(null , "/"));
-               assertEquals("", StringUtils.arrayToString(new String[]{} , 
StringUtils.NULL));
-        assertEquals("null", StringUtils.arrayToString(new String[]{null} , 
StringUtils.NULL));
+               assertEquals(null, StringUtils.arrayToString(new String[]{} , 
StringUtils.NULL));
+        assertEquals("null", StringUtils.arrayToString(new String[]{null}, 
",", StringUtils.NULL));
                assertEquals("test", StringUtils.arrayToString(new 
String[]{"test"} , "|"));
                assertEquals("12312.3", StringUtils.arrayToString(new 
Number[]{Integer.valueOf("123"), Double.valueOf("12.3")} , ""));
                assertEquals("firstsecondthird", StringUtils.arrayToString(new 
String[]{"first", "second", "third"} , null));
                assertEquals(" first \t second \t third ", 
StringUtils.arrayToString(new String[]{" first ", " second ", " third "} , 
"\t"));
-               assertEquals("null/null", StringUtils.arrayToString(new 
String[]{null, null} , "/"));
-               assertEquals("null", StringUtils.arrayToString(new 
String[]{null} , "/"));
+        assertEquals("/", StringUtils.arrayToString(new String[]{null, null} , 
"/"));
+        assertEquals("null/null", StringUtils.arrayToString(new String[]{null, 
null} , "/", StringUtils.NULL));
+               assertEquals("null", StringUtils.arrayToString(new 
String[]{null} , "/", StringUtils.NULL));
+        // Special case with SPACE
+        assertEquals("Hello World", StringUtils.arrayToString(new 
Object[]{"Hello","",null," ","World"}, StringUtils.SPACE));
+        assertEquals("Hello World", StringUtils.toString(new 
Object[]{"Hello","",null," ","World"}, StringUtils.SPACE, null));
        }
 
        @Test

Reply via email to