package com.revolsys.util.count; import java.util.Iterator; import javax.annotation.PostConstruct; import org.springframework.beans.factory.BeanNameAware; import com.revolsys.record.Record; public class LabalCountIterable implements Iterable<Record>, BeanNameAware { private Iterable<Record> iterable; private LabelCountMap labelCountMap; private String statsName; public LabalCountIterable() { } public LabalCountIterable(final Iterable<Record> iterable) { setIterable(iterable); } public Iterable<Record> getIterable() { return this.iterable; } /** * @return the stats */ public LabelCountMap getStatistics() { return this.labelCountMap; } public String getStatsName() { return this.statsName; } @PostConstruct public void init() { if (this.labelCountMap == null) { setStatistics(new LabelCountMap("Read " + this.statsName + " " + this.iterable.toString())); } } @Override public Iterator<Record> iterator() { if (this.labelCountMap == null) { setStatistics(new LabelCountMap("Read " + this.statsName + " " + this.iterable.toString())); } return new LabelCountIterator(this.iterable.iterator(), this.labelCountMap); } @Override public void setBeanName(final String beanName) { if (this.statsName == null) { this.statsName = beanName.replaceAll("Stats", ""); } } public void setIterable(final Iterable<Record> iterable) { this.iterable = iterable; } /** * @param stats the stats to set */ public void setStatistics(final LabelCountMap labelCountMap) { this.labelCountMap = labelCountMap; } public void setStatsName(final String statsName) { this.statsName = statsName; } @Override public String toString() { return this.iterable.toString(); } }