Mega Code Archive

 
Categories / Android / Date Type
 

Writer implementation that outputs to a StringBuilder

import java.io.Serializable; import java.io.Writer; /**  * {@link Writer} implementation that outputs to a {@link StringBuilder}.  * <p>  * <strong>NOTE:</strong> This implementation, as an alternative to  * <code>java.io.StringWriter</code>, provides an <i>un-synchronized</i> (i.e.  * for use in a single thread) implementation for better performance. For safe  * usage with multiple {@link Thread}s then <code>java.io.StringWriter</code>  * should be used.  *   * ***Copied & Pasted from apache commons-io because I dont want to add too many  * 3rd parties library to the app to keep it as small as possible***  *   * @version $Revision$ $Date$  * @since IO 2.0  */ class StringBuilderWriter extends Writer implements Serializable {   /**      *       */   private static final long serialVersionUID = 1L;   private final StringBuilder builder;   /**    * Construct a new {@link StringBuilder} instance with default capacity.    */   public StringBuilderWriter() {     this.builder = new StringBuilder();   }   /**    * Construct a new {@link StringBuilder} instance with the specified    * capacity.    *     * @param capacity    *            The initial capacity of the underlying {@link StringBuilder}    */   public StringBuilderWriter(int capacity) {     this.builder = new StringBuilder(capacity);   }   /**    * Construct a new instance with the specified {@link StringBuilder}.    *     * @param builder    *            The String builder    */   public StringBuilderWriter(StringBuilder builder) {     this.builder = (builder != null ? builder : new StringBuilder());   }   /**    * Append a single character to this Writer.    *     * @param value    *            The character to append    * @return This writer instance    */   @Override   public Writer append(char value) {     builder.append(value);     return this;   }   /**    * Append a character sequence to this Writer.    *     * @param value    *            The character to append    * @return This writer instance    */   @Override   public Writer append(CharSequence value) {     builder.append(value);     return this;   }   /**    * Append a portion of a character sequence to the {@link StringBuilder}.    *     * @param value    *            The character to append    * @param start    *            The index of the first character    * @param end    *            The index of the last character + 1    * @return This writer instance    */   @Override   public Writer append(CharSequence value, int start, int end) {     builder.append(value, start, end);     return this;   }   /**    * Closing this writer has no effect.    */   @Override   public void close() {   }   /**    * Flushing this writer has no effect.    */   @Override   public void flush() {   }   /**    * Write a String to the {@link StringBuilder}.    *     * @param value    *            The value to write    */   @Override   public void write(String value) {     if (value != null) {       builder.append(value);     }   }   /**    * Write a portion of a character array to the {@link StringBuilder}.    *     * @param value    *            The value to write    * @param offset    *            The index of the first character    * @param length    *            The number of characters to write    */   @Override   public void write(char[] value, int offset, int length) {     if (value != null) {       builder.append(value, offset, length);     }   }   /**    * Return the underlying builder.    *     * @return The underlying builder    */   public StringBuilder getBuilder() {     return builder;   }   /**    * Returns {@link StringBuilder#toString()}.    *     * @return The contents of the String builder.    */   @Override   public String toString() {     return builder.toString();   } }