package org.aksw.sparqlify.core.algorithms;
import java.util.HashSet;
import java.util.Set;
import org.aksw.jena_sparql_api.restriction.RestrictionManagerImpl;
import org.aksw.jena_sparql_api.views.VarsMentioned;
import org.aksw.sparqlify.core.domain.input.Mapping;
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.core.Var;
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.util.NodeIsomorphismMap;
public class OpMapping
extends OpExt
implements VarsMentioned
{
private Mapping mapping;
private RestrictionManagerImpl restrictions;
public OpMapping(Mapping mapping, RestrictionManagerImpl restrictions) {
super("mapping");
this.mapping = mapping;
this.restrictions = restrictions;
}
public Mapping getMapping() {
return mapping;
}
public RestrictionManagerImpl getRestrictions() {
return restrictions;
}
@Override
public Op effectiveOp() {
throw new RuntimeException("Do not call");
}
@Override
public QueryIterator eval(QueryIterator input, ExecutionContext execCxt) {
throw new RuntimeException("Do not call"); }
@Override
public void outputArgs(IndentedWriter out, SerializationContext sCxt) {
out.print(mapping + " " + restrictions);
//out.print(join.getViewNames() + " " + join.getRestrictions());
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((mapping == null) ? 0 : mapping.hashCode());
result = prime * result
+ ((restrictions == null) ? 0 : restrictions.hashCode());
return result;
}
@Override
public boolean equalTo(Op obj, NodeIsomorphismMap labelMap) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
OpMapping other = (OpMapping) obj;
if (mapping == null) {
if (other.mapping != null)
return false;
} else if (!mapping.equals(other.mapping))
return false;
if (restrictions == null) {
if (other.restrictions != null)
return false;
} else if (!restrictions.equals(other.restrictions))
return false;
return true;
}
@Override
public Set<Var> varsMentioned() {
Set<Var> result = new HashSet<Var>(getMapping().getVarDefinition().getMap().keySet());
return result;
}
}