package org.aksw.sparqlify.database;
import org.aksw.jena_sparql_api.restriction.RestrictionManagerImpl;
import org.apache.jena.atlas.io.IndentedWriter;
import org.apache.jena.sparql.algebra.Op;
import org.apache.jena.sparql.algebra.op.OpExt;
import org.apache.jena.sparql.algebra.op.OpFilter;
import org.apache.jena.sparql.engine.ExecutionContext;
import org.apache.jena.sparql.engine.QueryIterator;
import org.apache.jena.sparql.serializer.SerializationContext;
import org.apache.jena.sparql.sse.writers.WriterOp;
import org.apache.jena.sparql.util.NodeIsomorphismMap;
public class OpExtFilterIndexed
extends OpExt
{
protected Op subOp;
protected RestrictionManagerImpl restrictions;
public Op getSubOp() {
return subOp;
}
public RestrictionManagerImpl getRestrictions() {
return restrictions;
}
public OpExtFilterIndexed(Op subOp, RestrictionManagerImpl restrictions) {
super("OpExtFilterIndexed");
this.subOp = subOp;
this.restrictions = restrictions;
}
@Override
public Op effectiveOp() {
return OpFilter.filter(restrictions.getExprs(), subOp);
}
@Override
public QueryIterator eval(QueryIterator input, ExecutionContext execCxt) {
return null;
}
@Override
public void outputArgs(IndentedWriter out, SerializationContext sCxt) {
int line = out.getRow() ;
out.println("[Restrictions: " + restrictions + "]");
WriterOp.output(out, this.subOp, sCxt) ;
if (line != out.getRow()) {
out.ensureStartOfLine();
}
}
@Override
public int hashCode() {
// TODO Auto-generated method stub
return 0;
}
@Override
public boolean equalTo(Op other, NodeIsomorphismMap labelMap) {
if ( ! (other instanceof OpExtFilterIndexed) ) return false ;
OpExtFilterIndexed opFilter = (OpExtFilterIndexed)other ;
if ( ! restrictions.equals(opFilter.restrictions) )
return false ;
return getSubOp().equalTo(opFilter.getSubOp(), labelMap) ;
}
}