use of org.openrdf.query.algebra.Var in project backstage by zepheira.
the class ListFacet method update.
@Override
public void update(TupleQueryBuilder queryBuilder, Var itemVar, BackChannel backChannel) throws ExpressionException {
_builder = queryBuilder;
_itemVar = itemVar;
ExpressionResult result = _expression.computeOutputOnItem(_context.getDatabase(), _builder, _itemVar);
if (!(result.valueExpr instanceof Var)) {
throw new ExpressionException("Facet expression does not evaluate to a Var");
}
_valueVar = (Var) result.valueExpr;
_valueType = result.valueType;
_countVar = _builder.makeVar("count");
backChannel.addComponentChangingState(this);
}
use of org.openrdf.query.algebra.Var in project backstage by zepheira.
the class ListFacet method restrict.
@Override
public void restrict(TupleQueryBuilder builder, Var itemVar) throws ExpressionException {
if (!hasRestrictions()) {
return;
}
ExpressionResult result = _expression.computeOutputOnItem(_context.getDatabase(), builder, itemVar);
if (!(result.valueExpr instanceof Var)) {
throw new ExpressionException("Facet expression does not evaluate to a Var");
}
ValueExpr input = result.valueExpr;
ValueExpr condition = null;
if (_selectMissing) {
// what do we do???
}
for (String v : _selection) {
condition = createRestrictionClause(builder, v, result.valueType, input, condition);
}
builder.addCondition(condition);
}
use of org.openrdf.query.algebra.Var in project backstage by zepheira.
the class Collection method getRestrictedItems.
public Var getRestrictedItems(TupleQueryBuilder builder, Var defaultVar) {
Var itemVar = getAllItems(builder, defaultVar);
computeRestrictedItems(builder, itemVar, null);
return itemVar;
}
use of org.openrdf.query.algebra.Var in project backstage by zepheira.
the class Expression method computeOutputOnValue.
public ExpressionQueryResult computeOutputOnValue(Value value, Database database, SailRepositoryConnection connection) throws ExpressionException {
TupleQueryBuilder builder = new TupleQueryBuilder();
Var valueVar = builder.makeVar("value", value);
ExpressionResult expressionResult = computeOutputOnItem(database, builder, valueVar);
if (expressionResult.valueExpr instanceof Var) {
Var resultVar = (Var) expressionResult.valueExpr;
ProjectionElemList projectionElements = new ProjectionElemList();
projectionElements.addElement(new ProjectionElem(resultVar.getName()));
TupleExpr t = builder.makeFilterTupleExpr();
if (t == null) {
// TODO[dfhuynh]: This happens if the expression is just "value". I'm not sure what to do here.
return null;
}
Projection projection = new Projection(t, projectionElements);
TupleQuery query = new MyTupleQuery(new ParsedTupleQuery(projection), connection);
return new ExpressionQueryResult(query, expressionResult.valueType, resultVar);
}
return null;
}
Aggregations