package org.aksw.sparqlify.csv;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.aksw.commons.collections.SinglePrefetchIterator;
import org.apache.jena.graph.Triple;
import org.apache.jena.sparql.core.Var;
public class TripleIteratorTracking
extends SinglePrefetchIterator<Triple>
{
private Iterator<Triple> it;
private int totalTripleCount = 0;
private int tripleGenCount = 0;
private Map<Var, Integer> varCountMap = new HashMap<Var, Integer>();
public TripleIteratorTracking(Iterator<Triple> it) {
this.it = it;
}
@Override
protected Triple prefetch()
throws Exception
{
while(it.hasNext()) {
++totalTripleCount;
Triple t = it.next();
CsvMapperCliMain.countVariable(t.getSubject(), varCountMap);
CsvMapperCliMain.countVariable(t.getPredicate(), varCountMap);
CsvMapperCliMain.countVariable(t.getObject(), varCountMap);
//logger.trace("Triple: " + t);
if(CsvMapperCliMain.containsNullOrVar(t)) {
// logger.warn("Omitting null statement, triple was: " + t);
continue;
}
++tripleGenCount;
return t;
}
return finish();
}
public TripleIteratorState getState() {
TripleIteratorState result = new TripleIteratorState(totalTripleCount, tripleGenCount, varCountMap);
return result;
}
}