Date Type Android

import java.io.Serializable;
import java.io.Writer;
/**
 * {@link Writer} implementation that outputs to a {@link StringBuilder}.
 * 


 * NOTE: This implementation, as an alternative to
 * java.io.StringWriter, provides an un-synchronized (i.e.
 * for use in a single thread) implementation for better performance. For safe
 * usage with multiple {@link Thread}s then java.io.StringWriter
 * 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();
  }
}