@Override public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value v = Expressions.toValue(e, factory, q); ClassMetaData meta = ((PathImpl<?,?>)e)._member.fmd.getElement().getTypeMetaData(); v.setMetaData(meta); return factory.index(v); }
@Override public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value v = Expressions.toValue(e, factory, q); ClassMetaData meta = ((PathImpl<?,?>)e)._member.fmd.getElement().getTypeMetaData(); v.setMetaData(meta); return factory.index(v); }
@Override public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value v = Expressions.toValue(e, factory, q); ClassMetaData meta = ((PathImpl<?,?>)e)._member.fmd.getElement().getTypeMetaData(); v.setMetaData(meta); return factory.index(v); }
@Override public org.apache.openjpa.kernel.exps.Value toValue(ExpressionFactory factory, CriteriaQueryImpl<?> q) { Value v = Expressions.toValue(e, factory, q); ClassMetaData meta = ((PathImpl<?,?>)e)._member.fmd.getElement().getTypeMetaData(); v.setMetaData(meta); return factory.index(v); }
public void addToContext(ExpressionFactory factory, MetamodelImpl model, CriteriaQueryImpl<?> q) { String alias = q.getAlias(this); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(_entity.meta); Context currContext = q.ctx(); currContext.addSchema(alias, _entity.meta); currContext.addVariable(alias, var); if (currContext.schemaAlias == null) currContext.schemaAlias = alias; }
public void addToContext(ExpressionFactory factory, MetamodelImpl model, CriteriaQueryImpl<?> q) { String alias = q.getAlias(this); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(_entity.meta); Context currContext = q.ctx(); currContext.addSchema(alias, _entity.meta); currContext.addVariable(alias, var); if (currContext.schemaAlias == null) currContext.schemaAlias = alias; }
public void addToContext(ExpressionFactory factory, MetamodelImpl model, CriteriaQueryImpl<?> q) { String alias = q.getAlias(this); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(_entity.meta); Context currContext = q.ctx(); currContext.addSchema(alias, _entity.meta); currContext.addVariable(alias, var); if (currContext.schemaAlias == null) currContext.schemaAlias = alias; }
public void addToContext(ExpressionFactory factory, MetamodelImpl model, CriteriaQueryImpl<?> q) { String alias = q.getAlias(this); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(_entity.meta); Context currContext = q.ctx(); currContext.addSchema(alias, _entity.meta); currContext.addVariable(alias, var); if (currContext.schemaAlias == null) currContext.schemaAlias = alias; }
protected void evalCrossJoinRoots(QueryExpressions exps, ExpressionFactory factory, CriteriaQueryImpl<?> q) { Set<Root<?>> roots = q.getRoots(); SubqueryImpl<?> subQuery = q.getDelegator(); if (subQuery == null || subQuery.getCorrelatedJoins().isEmpty()) { q.assertRoot(); if (roots.size() > 1) { // cross join for (Root<?> root : roots) { String alias = q.getAlias(root); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(((AbstractManagedType<?>)root.getModel()).meta); q.registerRoot(root, var); } } } }
protected void evalCrossJoinRoots(QueryExpressions exps, ExpressionFactory factory, CriteriaQueryImpl<?> q) { Set<Root<?>> roots = q.getRoots(); SubqueryImpl<?> subQuery = q.getDelegator(); if (subQuery == null || subQuery.getCorrelatedJoins().isEmpty()) { q.assertRoot(); if (roots.size() > 1) { // cross join for (Root<?> root : roots) { String alias = q.getAlias(root); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(((AbstractManagedType<?>)root.getModel()).meta); q.registerRoot(root, var); } } } }
private Value getIdentifier(JPQLNode node) { final String name = node.text; final Value val = getVariable(name, false); ClassMetaData cmd = getMetaDataForAlias(name); if (cmd != null) { // handle the case where the class name is the alias // for the candidate (we don't use variables for this) Value thiz = factory.getThis(); thiz.setMetaData(cmd); return thiz; } else if (val instanceof Path) { return (Path) val; } else if (val instanceof Value) { return (Value) val; } throw parseException(EX_USER, "unknown-identifier", new Object[]{ name }, null); }
protected void evalCrossJoinRoots(QueryExpressions exps, ExpressionFactory factory, CriteriaQueryImpl<?> q) { Set<Root<?>> roots = q.getRoots(); SubqueryImpl<?> subQuery = q.getDelegator(); if (subQuery == null || subQuery.getCorrelatedJoins().isEmpty()) { q.assertRoot(); if (roots.size() > 1) { // cross join for (Root<?> root : roots) { String alias = q.getAlias(root); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(((AbstractManagedType<?>)root.getModel()).meta); q.registerRoot(root, var); } } } }
protected void evalCrossJoinRoots(QueryExpressions exps, ExpressionFactory factory, CriteriaQueryImpl<?> q) { Set<Root<?>> roots = q.getRoots(); SubqueryImpl<?> subQuery = q.getDelegator(); if (subQuery == null || subQuery.getCorrelatedJoins().isEmpty()) { q.assertRoot(); if (roots.size() > 1) { // cross join for (Root<?> root : roots) { String alias = q.getAlias(root); Value var = factory.newBoundVariable(alias, AbstractExpressionBuilder.TYPE_OBJECT); var.setMetaData(((AbstractManagedType<?>)root.getModel()).meta); q.registerRoot(root, var); } } } }
protected Value createVariable(String id, boolean bind) { // create and cache var Class<?> type = getDeclaredVariableType(id); // add this type to the set of classes in the filter's access path ClassMetaData meta = null; if (type == null) type = TYPE_OBJECT; else meta = getMetaData(type, false); if (meta != null) { addAccessPath(meta); addSchemaToContext(id, meta); } Value var = null; if (bind) var = factory.newBoundVariable(id, type); else var = factory.newUnboundVariable(id, type); var.setMetaData(meta); if (_seenVars == null) _seenVars = new HashMap<String,Value>(); _seenVars.put(id, var); addVariableToContext(id, var); return var; }
protected Value createVariable(String id, boolean bind) { // create and cache var Class<?> type = getDeclaredVariableType(id); // add this type to the set of classes in the filter's access path ClassMetaData meta = null; if (type == null) type = TYPE_OBJECT; else meta = getMetaData(type, false); if (meta != null) { addAccessPath(meta); addSchemaToContext(id, meta); } Value var = null; if (bind) var = factory.newBoundVariable(id, type); else var = factory.newUnboundVariable(id, type); var.setMetaData(meta); if (_seenVars == null) _seenVars = new HashMap<String,Value>(); _seenVars.put(id, var); addVariableToContext(id, var); return var; }
private Value getTypeLiteral(JPQLNode node) { JPQLNode type = onlyChild(node); final String name = type.text; final Value val = getVariable(name, false); if (val instanceof Value && val.isVariable()) { Class<?> c = resolver.classForName(name, null); if (c != null) { Value typeLit = factory.newTypeLiteral(c, Literal.TYPE_CLASS); typeLit.setMetaData(getClassMetaData(name, false)); return typeLit; } } throw parseException(EX_USER, "not-type-literal", new Object[]{ name }, null); }
private Value getTypeLiteral(JPQLNode node) { JPQLNode type = onlyChild(node); final String name = type.text; final Value val = getVariable(name, false); if (val instanceof Value && val.isVariable()) { Class<?> c = resolver.classForName(name, null); if (c != null) { Value typeLit = factory.newTypeLiteral(c, Literal.TYPE_CLASS); typeLit.setMetaData(getClassMetaData(name, false)); return typeLit; } } throw parseException(EX_USER, "not-type-literal", new Object[]{ name }, null); }
private Value getTypeLiteral(JPQLNode node) { JPQLNode type = onlyChild(node); final String name = type.text; final Value val = getVariable(name, false); if (val instanceof Value && val.isVariable()) { Class<?> c = resolver.classForName(name, null); if (c != null) { Value typeLit = factory.newTypeLiteral(c, Literal.TYPE_CLASS); typeLit.setMetaData(getClassMetaData(name, false)); return typeLit; } } throw parseException(EX_USER, "not-type-literal", new Object[]{ name }, null); }
private Value getTypeLiteral(JPQLNode node) { JPQLNode type = onlyChild(node); final String name = type.text; final Value val = getVariable(name, false); if (val instanceof Value && val.isVariable()) { Class<?> c = resolver.classForName(name, null); if (c != null) { Value typeLit = factory.newTypeLiteral(c, Literal.TYPE_CLASS); typeLit.setMetaData(getClassMetaData(name, false)); return typeLit; } } throw parseException(EX_USER, "not-type-literal", new Object[]{ name }, null); }
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); }