package com.mysema.rdfbean.jena; import java.util.HashMap; import java.util.Map; import com.hp.hpl.jena.query.QuerySolution; import com.hp.hpl.jena.query.ResultSet; import com.hp.hpl.jena.rdf.model.RDFNode; import com.mysema.commons.lang.CloseableIterator; import com.mysema.rdfbean.model.NODE; /** * @author tiwe * */ public class TupleResultIterator implements CloseableIterator<Map<String, NODE>> { private final ResultSet resultSet; private final JenaDialect dialect; public TupleResultIterator(ResultSet resultSet, JenaDialect dialect) { this.resultSet = resultSet; this.dialect = dialect; } @Override public void close() { // ?!? } @Override public boolean hasNext() { return resultSet.hasNext(); } @Override public Map<String, NODE> next() { QuerySolution solution = resultSet.next(); Map<String, NODE> row = new HashMap<String, NODE>(resultSet.getResultVars().size()); for (String var : resultSet.getResultVars()) { RDFNode node = solution.get(var); if (node != null) { row.put(var, dialect.getNODE(node.asNode())); } } return row; } @Override public void remove() { resultSet.remove(); } }