ValueIdLookupOptimizer.java :  » RSS-RDF » sesame » org » openrdf » sail » rdbms » optimizers » Java Open Source

Java Open Source » RSS RDF » sesame 
sesame » org » openrdf » sail » rdbms » optimizers » ValueIdLookupOptimizer.java
/*
 * Copyright Aduna (http://www.aduna-software.com/) (c) 2008.
 *
 * Licensed under the Aduna BSD-style license.
 */
package org.openrdf.sail.rdbms.optimizers;

import org.openrdf.query.BindingSet;
import org.openrdf.query.Dataset;
import org.openrdf.query.algebra.TupleExpr;
import org.openrdf.query.algebra.Var;
import org.openrdf.query.algebra.evaluation.QueryOptimizer;
import org.openrdf.query.algebra.helpers.QueryModelVisitorBase;
import org.openrdf.sail.rdbms.RdbmsValueFactory;

/**
 * Iterates through the query and converting the values into RDBMS values.
 * 
 * @author James Leigh
 * 
 */
public class ValueIdLookupOptimizer implements QueryOptimizer {
  RdbmsValueFactory vf;

  public ValueIdLookupOptimizer(RdbmsValueFactory vf) {
    super();
    this.vf = vf;
  }

  public void optimize(TupleExpr tupleExpr, Dataset dataset,
      BindingSet bindings) {
    tupleExpr.visit(new VarVisitor());
  }

  protected class VarVisitor extends QueryModelVisitorBase<RuntimeException> {

    @Override
    public void meet(Var var) {
      if (var.hasValue()) {
        var.setValue(vf.asRdbmsValue(var.getValue()));
      }
    }
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.