@Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { return factory.all(Expressions.toValue(e, factory, q)); }
static org.apache.openjpa.kernel.exps.Expression and(ExpressionFactory factory, org.apache.openjpa.kernel.exps.Expression e1, org.apache.openjpa.kernel.exps.Expression e2) { return e1 == null ? e2 : e2 == null ? e1 : factory.and(e1, e2); }
@Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { return factory.any(Expressions.toValue(e, factory, q)); }
/** * Convert this path to a kernel expression. * */ @Override public org.apache.openjpa.kernel.exps.Expression toKernelExpression( ExpressionFactory factory, CriteriaQueryImpl<?> c) { Value path = toValue(factory, c); Value var = factory.newBoundVariable(c.getAlias(this), _entity.meta.getDescribedType()); return factory.bindVariable(var, path); }
return factory.newLiteral("true".equalsIgnoreCase (node.text) ? Boolean.TRUE : Boolean.FALSE, Literal.TYPE_BOOLEAN); : node.text). multiply(new BigDecimal(negative(node))); return factory.newLiteral(new Long(intlit.longValue()), Literal.TYPE_NUMBER); : node.text). multiply(new BigDecimal(negative(node))); return factory.newLiteral(declit, Literal.TYPE_NUMBER); return factory.newLiteral(trimQuotes(node.text), Literal.TYPE_SQ_STRING); return factory.or(getExpression(left(node)), getExpression(right(node))); val2 = getValue(right(node)); setImplicitTypes(val1, val2, null); return factory.equal(val1, val2); val2 = getValue(right(node)); setImplicitTypes(val1, val2, null); return factory.notEqual(val1, val2); val2 = getValue(right(node)); setImplicitTypes(val1, val2, null);
if ((!corrJoins.isEmpty() && corrJoins.contains(_parent)) || (corrJoins.isEmpty() && parent.inSubquery(subquery) && _parent.getCorrelatedPath() != null)) { path = factory.newPath(subQ); correlatedParentPath = _parent.getCorrelatedPath(); bind = false; if (c.isRegistered(_parent)) { Value var = c.getRegisteredVariable(_parent); path = factory.newPath(var); } else { path = factory.newPath(subQ); path = factory.newPath(var); path.setMetaData(meta); path.get(_member.fmd, allowNull); Value var = null; if (bind) { var = factory.newBoundVariable(c.getAlias(this),type); join = factory.bindVariable(var, path); c.registerVariable(this, var, path); join = factory.contains(path, var); if (corrJoins != null && corrJoins.contains(_parent)) { Value var = getVariableForCorrPath(subquery, correlatedParentPath); parentPath = factory.newPath(var); } else { parentPath = (org.apache.openjpa.kernel.exps.Path)correlatedParentPath.toValue(factory, c);
private Expression getSubquery(String alias, Path path, Expression exp) { Value var = getVariable(alias, true); // this bind is for validateMapPath to resolve alias Expression bindVar = factory.bindVariable(var, path); FieldMetaData fmd = path.last(); ClassMetaData candidate = getFieldType(fmd); if (candidate == null && fmd.isElementCollection()) candidate = fmd.getDefiningMetaData(); setCandidate(candidate, alias); Context subContext = ctx(); Subquery subquery = ctx().getSubquery(); if (subquery == null){ subquery = factory.newSubquery(candidate, true, alias); subContext.setSubquery(subquery); } else { subquery.setSubqAlias(alias); } Path subpath = factory.newPath(subquery); subpath.setSchemaAlias(path.getCorrelationVar()); subpath.setMetaData(candidate); subquery.setMetaData(candidate); if (fmd.isElementCollection()) exp = and(exp, bindVar); else exp = and(exp, factory.equal(path, subpath)); return exp; }
@Override org.apache.openjpa.kernel.exps.Expression toKernelExpression(ExpressionFactory factory, CriteriaQueryImpl<?> q) { if (_exps.isEmpty()) { Predicate nil = _op == BooleanOperator.AND ? TRUE() : FALSE(); return ((PredicateImpl)nil).toKernelExpression(factory, q); } if (_exps.size() == 1) { Predicate e0 = _exps.get(0); if (isNegated()) e0 = e0.not(); return ((PredicateImpl)e0).toKernelExpression(factory, q); } ExpressionImpl<?> e1 = (ExpressionImpl<?>)_exps.get(0); ExpressionImpl<?> e2 = (ExpressionImpl<?>)_exps.get(1); org.apache.openjpa.kernel.exps.Expression ke1 = e1.toKernelExpression(factory, q); org.apache.openjpa.kernel.exps.Expression ke2 = e2.toKernelExpression(factory, q); org.apache.openjpa.kernel.exps.Expression result = _op == BooleanOperator.AND ? factory.and(ke1,ke2) : factory.or(ke1, ke2); for (int i = 2; i < _exps.size(); i++) { PredicateImpl p = (PredicateImpl)_exps.get(i); result = _op == BooleanOperator.AND ? factory.and(result, p.toKernelExpression(factory, q)) : factory.or(result, p.toKernelExpression(factory,q)); } return _negated ? factory.not(result) : result; }
Value val1 = Expressions.toValue(e1, factory, q); Expressions.setImplicitTypes(val1, val2, e1.getJavaType(), q); inExpr = factory.contains(val2, val1); return isNegated() ? factory.not(inExpr) : inExpr; } else if (((Literal)val2).getParseType() == Literal.TYPE_COLLECTION) { Collection coll = (Collection)((Literal)val2).getValue(); IsNotNull notNull = new Expressions.IsNotNull(e); return factory.and(inExpr, notNull.toKernelExpression(factory, q));
private Expression addJoin(Path path, JPQLNode aliasNode, Expression exp) { FieldMetaData fmd = path.last(); if (fmd == null) throw parseException(EX_USER, "path-no-meta", new Object[]{ path, null }, null); String alias = aliasNode != null ? aliasNode.text : nextAlias(); Value var = getVariable(alias, true); var.setMetaData(getFieldType(fmd)); Expression join = null; // if the variable is already bound, get the var's value and // do a regular contains with that boolean bound = isBound(var); if (bound) { var = getValue(aliasNode, VAR_PATH); } else { bind(var); join = and(join, factory.bindVariable(var, path)); } if (!fmd.isTypePC()) // multi-valued relation { if (bound) join = and(join, factory.contains(path, var)); setImplicitContainsTypes(path, var, CONTAINS_TYPE_ELEMENT); } return and(exp, join); }
@Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value value= (e2 == null) ? factory.sum(Expressions.toValue(e1, factory, q)) : factory.add( Expressions.toValue(e1, factory, q), Expressions.toValue(e2, factory, q)); value.setImplicitType(getJavaType()); return value; }
/** * Returns an Expression for the given node by eval'ing it. */ private Expression getExpression(JPQLNode node) { Object exp = eval(node); // check for boolean values used as expressions if (!(exp instanceof Expression)) return factory.asExpression((Value) exp); return (Expression) exp; }
@Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value value = factory.abs(Expressions.toValue(e, factory, q)); value.setImplicitType(getJavaType()); return value; }
@Override public org.apache.openjpa.kernel.exps.Expression toKernelExpression( ExpressionFactory factory, CriteriaQueryImpl<?> q) { org.apache.openjpa.kernel.exps.Expression contains = factory.contains( Expressions.toValue(collection, factory, q), Expressions.toValue(element, factory, q)); return contains; }
@Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value value = factory.avg(Expressions.toValue(e, factory, q)); value.setImplicitType(getJavaType()); return value; }
@Override public Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { return factory.concat( Expressions.toValue(e1, factory, q), Expressions.toValue(e2, factory, q)); }
return factory.newLiteral("true".equalsIgnoreCase (node.text) ? Boolean.TRUE : Boolean.FALSE, Literal.TYPE_BOOLEAN); : node.text). multiply(new BigDecimal(negative(node))); return factory.newLiteral(Long.valueOf(intlit.longValue()), Literal.TYPE_NUMBER); : node.text). multiply(new BigDecimal(negative(node))); return factory.newLiteral(declit, Literal.TYPE_NUMBER); return factory.newLiteral(trimQuotes(node.text), Literal.TYPE_SQ_STRING); return factory.newLiteral(trimDoubleQuotes(node.text), Literal.TYPE_SQ_STRING); return factory.or(getExpression(left(node)), getExpression(right(node))); val2 = getValue(right(node)); setImplicitTypes(val1, val2, null); return factory.equal(val1, val2); val2 = getValue(right(node)); setImplicitTypes(val1, val2, null); return factory.notEqual(val1, val2);
if ((!corrJoins.isEmpty() && corrJoins.contains(_parent)) || (corrJoins.isEmpty() && parent.inSubquery(subquery) && _parent.getCorrelatedPath() != null)) { path = factory.newPath(subQ); correlatedParentPath = _parent.getCorrelatedPath(); bind = false; if (c.isRegistered(_parent)) { Value var = c.getRegisteredVariable(_parent); path = factory.newPath(var); } else { path = factory.newPath(subQ); path = factory.newPath(var); path.setMetaData(meta); path.get(_member.fmd, allowNull); Value var = null; if (bind) { var = factory.newBoundVariable(c.getAlias(this),type); join = factory.bindVariable(var, path); c.registerVariable(this, var, path); join = factory.contains(path, var); if (corrJoins != null && corrJoins.contains(_parent)) { Value var = getVariableForCorrPath(subquery, correlatedParentPath); parentPath = factory.newPath(var); } else { parentPath = (org.apache.openjpa.kernel.exps.Path)correlatedParentPath.toValue(factory, c);
private Expression getSubquery(String alias, Path path, Expression exp) { Value var = getVariable(alias, true); // this bind is for validateMapPath to resolve alias Expression bindVar = factory.bindVariable(var, path); FieldMetaData fmd = path.last(); ClassMetaData candidate = getFieldType(fmd); if (candidate == null && fmd.isElementCollection()) candidate = fmd.getDefiningMetaData(); setCandidate(candidate, alias); Context subContext = ctx(); Subquery subquery = ctx().getSubquery(); if (subquery == null){ subquery = factory.newSubquery(candidate, true, alias); subContext.setSubquery(subquery); } else { subquery.setSubqAlias(alias); } Path subpath = factory.newPath(subquery); subpath.setSchemaAlias(path.getCorrelationVar()); subpath.setMetaData(candidate); subquery.setMetaData(candidate); if (fmd.isElementCollection()) exp = and(exp, bindVar); else exp = and(exp, factory.equal(path, subpath)); return exp; }
@Override org.apache.openjpa.kernel.exps.Expression toKernelExpression(ExpressionFactory factory, CriteriaQueryImpl<?> q) { if (_exps.isEmpty()) { Predicate nil = _op == BooleanOperator.AND ? TRUE() : FALSE(); return ((PredicateImpl)nil).toKernelExpression(factory, q); } if (_exps.size() == 1) { Predicate e0 = _exps.get(0); if (isNegated()) e0 = e0.not(); return ((PredicateImpl)e0).toKernelExpression(factory, q); } ExpressionImpl<?> e1 = (ExpressionImpl<?>)_exps.get(0); ExpressionImpl<?> e2 = (ExpressionImpl<?>)_exps.get(1); org.apache.openjpa.kernel.exps.Expression ke1 = e1.toKernelExpression(factory, q); org.apache.openjpa.kernel.exps.Expression ke2 = e2.toKernelExpression(factory, q); org.apache.openjpa.kernel.exps.Expression result = _op == BooleanOperator.AND ? factory.and(ke1,ke2) : factory.or(ke1, ke2); for (int i = 2; i < _exps.size(); i++) { PredicateImpl p = (PredicateImpl)_exps.get(i); result = _op == BooleanOperator.AND ? factory.and(result, p.toKernelExpression(factory, q)) : factory.or(result, p.toKernelExpression(factory,q)); } return _negated ? factory.not(result) : result; }