package com.revolsys.util.count;
import javax.annotation.PostConstruct;
import com.revolsys.io.AbstractRecordWriter;
import com.revolsys.io.Writer;
import com.revolsys.record.Record;
public class LabelCountWriter extends AbstractRecordWriter {
private LabelCountMap labelCountMap;
private Writer<Record> writer;
public LabelCountWriter() {
}
public LabelCountWriter(final Writer<Record> writer) {
setWriter(writer);
}
@Override
public void close() {
this.writer.close();
this.labelCountMap.disconnect();
}
@Override
public void flush() {
this.writer.flush();
}
/**
* @return the labelCountMap
*/
public LabelCountMap getLabelCountMap() {
return this.labelCountMap;
}
public Writer<Record> getWriter() {
return this.writer;
}
@PostConstruct
public void init() {
if (this.labelCountMap == null) {
setLabelCountMap(new LabelCountMap("Write " + this.writer));
}
this.labelCountMap.connect();
}
/**
* @param labelCountMap the labelCountMap to set
*/
public void setLabelCountMap(final LabelCountMap labelCountMap) {
this.labelCountMap = labelCountMap;
}
public void setWriter(final Writer<Record> writer) {
this.writer = writer;
}
@Override
public String toString() {
return this.writer.toString();
}
@Override
public void write(final Record object) {
if (object != null) {
this.writer.write(object);
this.labelCountMap.addCount(object);
}
}
}