/** * Given a list of expressions in a.b.c format return a list of expressions that are only field names, 'c' in this example. * @param exprs - expressions to convert * @return - returns an array of expressions that only contain the field name */ private Expression[] toShortNameExpressions(Expression[] exprs) { if (exprs == null || exprs.length == 0) return exprs; Expression[] shortNameExpr = new Expression[exprs.length]; for (int i = 0; i < exprs.length; i++) { if (exprs[i] instanceof PrimaryExpression) { List<String> t = ((PrimaryExpression) exprs[i]).getTuples(); shortNameExpr[i] = new PrimaryExpression(Arrays.asList(t.get(t.size() - 1))); } else { shortNameExpr[i] = exprs[i]; } } return shortNameExpr; }
/** * Given a list of expressions in a.b.c format return a list of expressions that are only field names, 'c' in this example. * @param exprs - expressions to convert * @return - returns an array of expressions that only contain the field name */ private Expression[] toShortNameExpressions(Expression[] exprs) { if (exprs == null || exprs.length == 0) return exprs; Expression[] shortNameExpr = new Expression[exprs.length]; for (int i = 0; i < exprs.length; i++) { if (exprs[i] instanceof PrimaryExpression) { List<String> t = ((PrimaryExpression) exprs[i]).getTuples(); shortNameExpr[i] = new PrimaryExpression(Arrays.asList(t.get(t.size() - 1))); } else { shortNameExpr[i] = exprs[i]; } } return shortNameExpr; }
/** * Constructor, extending a parent, and accessing a member of that parent. * @param parent The parent expression (or null, if candidate) * @param name Name of the member to access */ public ExpressionImpl(PersistableExpression parent, String name) { List<String> tuples = new ArrayList<String>(); if (parent != null) { org.datanucleus.query.expression.Expression parentQueryExpr = ((ExpressionImpl)parent).getQueryExpression(); if (parentQueryExpr instanceof PrimaryExpression) { tuples.addAll(((PrimaryExpression) parentQueryExpr).getTuples()); tuples.add(name); queryExpr = new PrimaryExpression(tuples); } else { tuples.add(name); queryExpr = new PrimaryExpression(parentQueryExpr, tuples); } } else { tuples.add(name); queryExpr = new PrimaryExpression(tuples); } }
private void getFieldNameList(SObject[] sObjects, boolean createFieldNameExpressions, List<String> fieldNameList, List<Expression> fieldNameExprs) { Iterator<XmlObject> fieldIter = sObjects[0].getChildren(); /** * Skip the first two items. First item is "type" and second is "id". * If we have selected id then it will show up again in the list. */ for (int i = 0; fieldIter.hasNext(); i++) { XmlObject xo = fieldIter.next(); String name = xo.getName().getLocalPart(); if (i < 2) continue; fieldNameList.add(name); if (createFieldNameExpressions) { fieldNameExprs.add(new PrimaryExpression(Arrays.asList(name))); } } }
private void getFieldNameList(SObject[] sObjects, boolean createFieldNameExpressions, List<String> fieldNameList, List<Expression> fieldNameExprs) { Iterator<XmlObject> fieldIter = sObjects[0].getChildren(); /** * Skip the first two items. First item is "type" and second is "id". * If we have selected id then it will show up again in the list. */ for (int i = 0; fieldIter.hasNext(); i++) { XmlObject xo = fieldIter.next(); String name = xo.getName().getLocalPart(); if (i < 2) continue; fieldNameList.add(name); if (createFieldNameExpressions) { fieldNameExprs.add(new PrimaryExpression(Arrays.asList(name))); } } }
private OrderExpression createJoinOrderExpression(PrimaryExpression expression) { PrimaryExpression primaryOrderExpr = new PrimaryExpression(expression.getTuples()); return new OrderExpression(primaryOrderExpr); }
queryExpr = new PrimaryExpression(null, tuples);
private void appendContainsExpression(ExpressionBuilderHelper h, InvokeExpression expr, boolean not) { PrimaryExpression pe = (PrimaryExpression) expr.getLeft(); TupleName fieldName = new TupleName(pe.getTuples()); AbstractMemberMetaData ammd = h.acmd.getMetaDataForMember(fieldName.getShortName()); if (ammd != null && (ammd.getMap() != null || ammd.getCollection() != null)) { processJoinExpression(pe, null, h, h.compilation, false, false, not); if (expr.getArguments().size() > 0) { String name = hints != null ? (String) hints.get(QueryHints.MEMBER_OF_FIELD) : null; h.sb.append(" where "); appendExpression(h, new PrimaryExpression(new TupleName(name != null ? name : "name").getTuple()), ec); h.sb.append(" = "); appendExpression(h, expr.getArguments().get(0), ec); } h.sb.append(")"); } else { // This is simply picklist values appendExpression(h, expr.getLeft(), ec); if (expr.getArguments().size() > 0) { h.sb.append(not ? " excludes(" : " includes("); Literal l = (Literal) expr.getArguments().get(0); h.sb.append(new MultiPicklistFormatter(l.getLiteral().toString()).getFormattedString()); h.sb.append(")"); } else { h.sb.append(not ? " = " : " != ").append("null"); } } }
PrimaryExpression primExpr = new PrimaryExpression(new ArrayList(tuples)); JoinExpression joinExpr = new JoinExpression(primExpr, join.getAlias(), jt); if (currentExpr instanceof ClassExpression) PrimaryExpression primExpr = new PrimaryExpression(new ArrayList(tuples)); JoinExpression joinExpr = new JoinExpression(primExpr, null, jt); if (currentExpr instanceof ClassExpression) return new PrimaryExpression(tuples);
private void appendContainsExpression(ExpressionBuilderHelper h, InvokeExpression expr, boolean not) { PrimaryExpression pe = (PrimaryExpression) expr.getLeft(); TupleName fieldName = new TupleName(pe.getTuples()); AbstractMemberMetaData ammd = h.acmd.getMetaDataForMember(fieldName.getShortName()); if (ammd != null && (ammd.getMap() != null || ammd.getCollection() != null)) { processJoinExpression(pe, null, h, h.compilation, false, false, not); if (expr.getArguments().size() > 0) { String name = hints != null ? (String) hints.get(QueryHints.MEMBER_OF_FIELD) : null; h.sb.append(" where "); appendExpression(h, new PrimaryExpression(new TupleName(name != null ? name : "name").getTuple()), ec); h.sb.append(" = "); appendExpression(h, expr.getArguments().get(0), ec); } h.sb.append(")"); } else { // This is simply picklist values appendExpression(h, expr.getLeft(), ec); if (expr.getArguments().size() > 0) { h.sb.append(not ? " excludes(" : " includes("); Literal l = (Literal) expr.getArguments().get(0); h.sb.append(new MultiPicklistFormatter(l.getLiteral().toString()).getFormattedString()); h.sb.append(")"); } else { h.sb.append(not ? " = " : " != ").append("null"); } } }
tuples.add(token); PrimaryExpression collPrimExpr = new PrimaryExpression(tuples); processPrimaryExpression(collPrimExpr); SQLExpression collSqlExpr = stack.pop();