package com.revolsys.util.count; import java.util.Iterator; import com.revolsys.record.Record; public class LabelCountIterator implements Iterator<Record> { private final Iterator<Record> iterator; private LabelCountMap labelCountMap; public LabelCountIterator(final Iterator<Record> iterator, final LabelCountMap labelCountMap) { this.iterator = iterator; setStatistics(labelCountMap); } /** * @return the stats */ public LabelCountMap getStatistics() { return this.labelCountMap; } @Override public boolean hasNext() { final boolean hasNext = this.iterator.hasNext(); if (!hasNext) { this.labelCountMap.disconnect(); } return hasNext; } @Override public Record next() { final Record object = this.iterator.next(); if (object != null) { this.labelCountMap.addCount(object); } return object; } @Override public void remove() { this.iterator.remove(); } /** * @param stats the stats to set */ public void setStatistics(final LabelCountMap labelCountMap) { this.labelCountMap = labelCountMap; labelCountMap.connect(); } }