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