package tr.gov.ulakbim.jDenetX.streams;
import tr.gov.ulakbim.jDenetX.core.InstancesHeader;
import tr.gov.ulakbim.jDenetX.core.ObjectRepository;
import tr.gov.ulakbim.jDenetX.core.VotedInstance;
import tr.gov.ulakbim.jDenetX.core.VotedInstancePool;
import tr.gov.ulakbim.jDenetX.options.AbstractOptionHandler;
import tr.gov.ulakbim.jDenetX.tasks.TaskMonitor;
import weka.core.Instance;
import weka.core.Instances;
import java.util.Iterator;
public class CotrainInstanceStream extends AbstractOptionHandler implements InstanceStream {
private static final long serialVersionUID = 1L;
protected Instances instances;
private VotedInstancePool VotedInstances = new VotedInstancePool();
protected Instance lastInstanceRead;
protected int numInstancesRead;
protected static boolean hitEndOfTree = false;
protected long sizeOfTree;
protected static Iterator<VotedInstance> vitIterator;
public CotrainInstanceStream(VotedInstancePool votedInstancePool) {
this.VotedInstances = votedInstancePool;
sizeOfTree = VotedInstances.getSize();
numInstancesRead = 0;
vitIterator = VotedInstances.iterator();
restart();
}
@Override
protected void prepareForUseImpl(TaskMonitor monitor,
ObjectRepository repository) {
restart();
}
@Override
public long estimatedRemainingInstances() {
return (long) (this.sizeOfTree - this.numInstancesRead);
}
@Override
public InstancesHeader getHeader() {
return new InstancesHeader(this.instances);
}
@Override
public boolean hasMoreInstances() {
return vitIterator.hasNext();
}
@Override
public boolean isRestartable() {
return true;
}
@Override
public Instance nextInstance() {
numInstancesRead++;
return vitIterator.next().getInstance();
}
public long getStreamSize() {
return this.sizeOfTree;
}
@Override
public void restart() {
sizeOfTree = VotedInstances.getSize();
numInstancesRead = 0;
vitIterator = VotedInstances.iterator();
}
@Override
public void getDescription(StringBuilder sb, int indent) {
}
}