package net.sf.jasperreports.engine.fill;

import java.util.HashSet;
import java.util.Set;

class DistinctCountHolder {
  private Set distinctValues = null;
  
  private Object lastValue = null;
  
  public DistinctCountHolder() {
    this.distinctValues = new HashSet();
  }
  
  public DistinctCountHolder(Set distinctValues) {
    this.distinctValues = distinctValues;
  }
  
  public DistinctCountHolder(DistinctCountHolder holder, Object lastValue) {
    this.distinctValues = holder.getDistinctValues();
    this.lastValue = lastValue;
  }
  
  public void init() {
    this.distinctValues = new HashSet();
  }
  
  public Set getDistinctValues() {
    return this.distinctValues;
  }
  
  public Object getLastValue() {
    return this.lastValue;
  }
  
  public void addLastValue() {
    if (this.lastValue != null)
      this.distinctValues.add(this.lastValue); 
    this.lastValue = null;
  }
  
  public long getCount() {
    return (this.distinctValues.size() + ((this.lastValue == null || this.distinctValues.contains(this.lastValue)) ? 0 : 1));
  }
}
