You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2009/10/20 08:10:11 UTC
svn commit: r826969 - in /commons/proper/lang/trunk/src:
java/org/apache/commons/lang/text/StrBuilder.java
test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java
Author: bayard
Date: Tue Oct 20 06:10:10 2009
New Revision: 826969
URL: http://svn.apache.org/viewvc?rev=826969&view=rev
Log:
Applying Robert Scholte's patch from LANG-422, adding a appendSeparator with an alternative default separator if the StrBuilder is currently empty
Modified:
commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java
Modified: commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java?rev=826969&r1=826968&r2=826969&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java (original)
+++ commons/proper/lang/trunk/src/java/org/apache/commons/lang/text/StrBuilder.java Tue Oct 20 06:10:10 2009
@@ -68,6 +68,7 @@
* the interface.
*
* @author Stephen Colebourne
+ * @author Robert Scholte
* @since 2.2
* @version $Id$
*/
@@ -1096,8 +1097,40 @@
* @since 2.3
*/
public StrBuilder appendSeparator(String separator) {
- if (separator != null && size() > 0) {
- append(separator);
+ return appendSeparator(separator, null);
+ }
+
+ /**
+ * Appends one of both separators to the StrBuilder.
+ * If the builder is currently empty it will append the defaultIfEmpty-separator
+ * Otherwise it will append the standard-separator
+ *
+ * Appending a null separator will have no effect.
+ * The separator is appended using {@link #append(String)}.
+ * <p>
+ * This method is for example useful for constructing queries
+ * <pre>
+ * StrBuilder whereClause = new StrBuilder();
+ * if(searchCommand.getPriority() != null) {
+ * whereClause.appendSeparator(" and", " where");
+ * whereClause.append(" priority = ?")
+ * }
+ * if(searchCommand.getComponent() != null) {
+ * whereClause.appendSeparator(" and", " where");
+ * whereClause.append(" component = ?")
+ * }
+ * selectClause.append(whereClause)
+ * </pre>
+ *
+ * @param standard the separator if builder is not empty, null means no separator
+ * @param defaultIfEmpty the separator if builder is empty, null means no separator
+ * @return this, to enable chaining
+ * @since 3.0
+ */
+ public StrBuilder appendSeparator(String standard, String defaultIfEmpty) {
+ String str = isEmpty() ? defaultIfEmpty : standard;
+ if (str != null) {
+ append(str);
}
return this;
}
@@ -1129,6 +1162,26 @@
}
/**
+ * Append one of both separators to the builder
+ * If the builder is currently empty it will append the defaultIfEmpty-separator
+ * Otherwise it will append the standard-separator
+ *
+ * The separator is appended using {@link #append(char)}.
+ * @param standard the separator if builder is not empty
+ * @param defaultIfEmpty the separator if builder is empty
+ * @return this, to enable chaining
+ * @since 3.0
+ */
+ public StrBuilder appendSeparator(char standard, char defaultIfEmpty) {
+ if (size() > 0) {
+ append(standard);
+ }
+ else {
+ append(defaultIfEmpty);
+ }
+ return this;
+ }
+ /**
* Appends a separator to the builder if the loop index is greater than zero.
* Appending a null separator will have no effect.
* The separator is appended using {@link #append(String)}.
Modified: commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java?rev=826969&r1=826968&r2=826969&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java (original)
+++ commons/proper/lang/trunk/src/test/org/apache/commons/lang/text/StrBuilderAppendInsertTest.java Tue Oct 20 06:10:10 2009
@@ -993,6 +993,28 @@
sb.appendSeparator(",");
assertEquals("foo,", sb.toString());
}
+
+ //-----------------------------------------------------------------------
+ public void testAppendSeparator_String_String() {
+ StrBuilder sb = new StrBuilder();
+ final String startSeparator = "order by ";
+ final String standardSeparator = ",";
+ final String foo = "foo";
+ sb.appendSeparator(null, null);
+ assertEquals("", sb.toString());
+ sb.appendSeparator(standardSeparator, null);
+ assertEquals("", sb.toString());
+ sb.appendSeparator(standardSeparator, startSeparator);
+ assertEquals(startSeparator, sb.toString());
+ sb.appendSeparator(null, null);
+ assertEquals(startSeparator, sb.toString());
+ sb.appendSeparator(null, startSeparator);
+ assertEquals(startSeparator, sb.toString());
+ sb.append(foo);
+ assertEquals(startSeparator + foo, sb.toString());
+ sb.appendSeparator(standardSeparator, startSeparator);
+ assertEquals(startSeparator + foo + standardSeparator, sb.toString());
+ }
//-----------------------------------------------------------------------
public void testAppendSeparator_char() {
@@ -1004,6 +1026,18 @@
sb.appendSeparator(',');
assertEquals("foo,", sb.toString());
}
+ public void testAppendSeparator_char_char() {
+ StrBuilder sb = new StrBuilder();
+ final char startSeparator = ':';
+ final char standardSeparator = ',';
+ final String foo = "foo";
+ sb.appendSeparator(standardSeparator, startSeparator); // no effect
+ assertEquals(String.valueOf(startSeparator), sb.toString());
+ sb.append(foo);
+ assertEquals(String.valueOf(startSeparator) + foo, sb.toString());
+ sb.appendSeparator(standardSeparator, startSeparator);
+ assertEquals(String.valueOf(startSeparator) + foo + standardSeparator, sb.toString());
+ }
//-----------------------------------------------------------------------
public void testAppendSeparator_String_int() {
@@ -1356,5 +1390,4 @@
sb.insert(0, (char[]) null, 0, 0);
assertEquals("nullnullfoonullbarbaz", sb.toString());
}
-
}