package com.mysema.rdfbean.rdb;
import java.util.List;
import java.util.Map;
import com.google.common.base.Function;
import com.mysema.commons.lang.CloseableIterator;
import com.mysema.query.sql.SQLQuery;
import com.mysema.query.types.Expression;
import com.mysema.rdfbean.model.NODE;
import com.mysema.rdfbean.model.TupleQuery;
import com.mysema.rdfbean.xsd.ConverterRegistry;
public class TupleQueryImpl implements TupleQuery {
private final SQLQuery query;
private final ConverterRegistry converters;
private final List<String> variables;
private final List<Expression<?>> projection;
private final Function<Long, NODE> function;
public TupleQueryImpl(
SQLQuery query,
ConverterRegistry converters,
List<String> variables,
List<Expression<?>> pr,
Function<Long, NODE> function) {
this.query = query;
this.converters = converters;
this.variables = variables;
this.projection = pr;
this.function = function;
}
@Override
public CloseableIterator<Map<String, NODE>> getTuples() {
return query.iterate(new TupleFactoryExpression(converters, variables, projection, function));
}
@Override
public List<String> getVariables() {
return variables;
}
}