import java.util.ArrayList;
import java.util.List;

import com.gemstone.gemfire.internal.cache.CachedDeserializable;

public class ValueBatch {

  private static final int DEFAULT_MAX_SIZE = 100;
  
  private final int maxSize;
  
  private final List values;
  
  public ValueBatch() {
    this(DEFAULT_MAX_SIZE);
  }
  
  public ValueBatch(int maxSize) {
    this.maxSize = maxSize;
    this.values = new ArrayList();
  }
  
  public void addValue(Object value) {
    this.values.add(value);
  }
  
  public List getValues() {
    return this.values;
  }
  
  public int size() {
    return this.values.size();
  }
  
  public void clear() {
    this.values.clear();
  }
  
  public boolean isFull() {
    return this.values.size() >= this.maxSize;
  }
    
  protected void process() {
    /*
    System.out.println(Thread.currentThread().getName() + ": Processing batch containing the following " + size() + " values:");
    for (Object value : getValues()) {
      CachedDeserializable cd = (CachedDeserializable) value;
      System.out.println("\t" + cd.getDeserializedForReading());
    }
    */
  }

  public String toString() {
    return new StringBuilder()
    	.append(getClass().getName())
    	.append("[")
    	.append("numValues=")
    	.append(size())
    	.append("]")
    	.toString();
  }
}