PropertyNode(Expression pathExp) { this.pathExp = pathExp; this.propertyPath = (String) pathExp.getOperand(0); }
private ASTObjPath findChildPath(Expression exp) { if (exp instanceof ASTObjPath) { return (ASTObjPath) exp; } int len = exp.getOperandCount(); for (int i = 0; i < len; i++) { Object operand = exp.getOperand(i); if (!(operand instanceof Expression)) { continue; } ASTObjPath path = findChildPath((Expression) operand); if (path != null) { return path; } } return null; } }
public boolean equals(Object object) { if (!(object instanceof Expression)) { return false; } Expression e = (Expression) object; if (e.getType() != getType() || e.getOperandCount() != getOperandCount()) { return false; } // compare operands int len = e.getOperandCount(); for (int i = 0; i < len; i++) { if (!Util.nullSafeEquals(e.getOperand(i), getOperand(i))) { return false; } } return true; }
public Iterator iterator() { return new PathComponentIterator(ObjEntity.this, (String) pathExp.getOperand(0), aliasMap); } };
@Override public boolean equals(Object object) { if (!(object instanceof Expression)) { return false; } Expression e = (Expression) object; if (e.getType() != getType() || e.getOperandCount() != getOperandCount()) { return false; } // compare operands int len = e.getOperandCount(); for (int i = 0; i < len; i++) { if (!Util.nullSafeEquals(e.getOperand(i), getOperand(i))) { return false; } } return true; }
public Iterator iterator() { return new PathComponentIterator(DbEntity.this, (String) pathExp.getOperand(0), aliasMap); } };
private void resolveAutoAliases(Expression expression) { Map<String, String> aliases = expression.getPathAliases(); if (!aliases.isEmpty()) { if (pathSplitAliases == null) { pathSplitAliases = new HashMap<>(); } pathSplitAliases.putAll(aliases); } int len = expression.getOperandCount(); for (int i = 0; i < len; i++) { Object operand = expression.getOperand(i); if (operand instanceof Expression) { resolveAutoAliases((Expression) operand); } } }
public Expression trimmedInExpression(Expression exp, int maxInSize) { Expression list = (Expression) exp.getOperand(1); Object[] objects = (Object[]) list.evaluate(null); if (objects.length <= maxInSize) { return exp; } Expression trimmed = trimmedInExpression((ASTPath) exp.getOperand(0), objects, maxInSize); if (exp instanceof ASTNotIn) { return trimmed.notExp(); } return trimmed; }
@Override public int hashCode() { HashCodeBuilder builder = new HashCodeBuilder().append(getType()); int opCount = getOperandCount(); for(int i=0; i<opCount; i++) { builder.append(getOperand(i)); } return builder.toHashCode(); }
/** Appends column name of a column in a root entity. */ protected void processColumn(StringBuffer buf, Expression nameExp) { if (queryAssembler.supportsTableAliases()) { String alias = queryAssembler.aliasForTable(getDbEntity()); buf.append(alias).append('.'); } buf.append(nameExp.getOperand(0)); }
/** * Traverses itself and child expressions, notifying visitor via callback methods as * it goes. * * @since 1.1 */ protected void traverse(Expression parentExp, TraversalHandler visitor) { visitor.startNode(this, parentExp); // recursively traverse each child int count = getOperandCount(); for (int i = 0; i < count; i++) { Object child = getOperand(i); if (child instanceof Expression) { Expression childExp = (Expression) child; childExp.traverse(this, visitor); } else { visitor.objectNode(child, this); } visitor.finishedChild(this, i, i < count - 1); } visitor.endNode(this, parentExp); }
@Override public void finishedChild(Expression parentNode, int childIndex, boolean hasMoreChildren) { Object childNode = parentNode.getOperand(childIndex); if (childNode instanceof ASTObjPath) { // validate and replace if needed ... note that we can only // replace non-root nodes during the traversal. Root node is // validated and replaced explicitly by the caller. ASTPath replacement = pathCache.getPathDescriptor(entity, (ASTObjPath) childNode).getPathExp(); if (replacement != childNode) { parentNode.setOperand(childIndex, replacement); } } }
@Override public Iterator<CayenneMapEntry> resolvePathComponents(Expression pathExp) throws ExpressionException { if (pathExp.getType() != Expression.DB_PATH) { throw new ExpressionException("Invalid expression type: '" + pathExp.expName() + "', DB_PATH is expected."); } return new PathIterator((String) pathExp.getOperand(0)); }
public Iterator resolvePathComponents(Expression pathExp) throws ExpressionException { if (pathExp.getType() != Expression.DB_PATH) { throw new ExpressionException("Invalid expression type: '" + pathExp.expName() + "', DB_PATH is expected."); } return new PathIterator((String) pathExp.getOperand(0)); }
public Object transform(Object input) { if (!(input instanceof Expression)) { return input; } Expression expression = (Expression) input; if (expression.getType() != Expression.DB_PATH) { return input; } String path = (String) expression.getOperand(0); String converted = translatePath(path); Expression transformed = ExpressionFactory.expressionOfType(Expression.DB_PATH); transformed.setOperand(0, converted); return transformed; }
public Object transform(Object input) { if (!(input instanceof Expression)) { return input; } Expression expression = (Expression) input; if (expression.getType() != Expression.OBJ_PATH) { return input; } // convert obj_path to db_path String converted = toDbPath(createPathIterator((String) expression.getOperand(0))); Expression exp = ExpressionFactory.expressionOfType(Expression.DB_PATH); exp.setOperand(0, converted); return exp; } }
public Object transform(Object input) { if (!(input instanceof Expression)) { return input; } Expression expression = (Expression) input; if (expression.getType() != Expression.DB_PATH) { return input; } String path = (String) expression.getOperand(0); String converted = translatePath(path); Expression transformed = ExpressionFactory .expressionOfType(Expression.DB_PATH); transformed.setOperand(0, converted); return transformed; }
@Override public void finishedChild(Expression node, int childIndex, boolean hasMoreChildren) { Object child = node.getOperand(childIndex); if (child instanceof ExpressionParameter) { node.setOperand(childIndex, nextValue(((ExpressionParameter) child).getName())); } // normally Object[] is an ASTList child else if (child instanceof Object[]) { Object[] array = (Object[]) child; for (int i = 0; i < array.length; i++) { if (array[i] instanceof ExpressionParameter) { array[i] = nextValue(((ExpressionParameter) array[i]).getName()); } } } }
@Override public Iterator<CayenneMapEntry> resolvePathComponents(Expression pathExp) throws ExpressionException { // resolve DB_PATH if we can if (pathExp.getType() == Expression.DB_PATH) { if (getDbEntity() == null) { throw new ExpressionException("Can't resolve DB_PATH '" + pathExp + "', DbEntity is not set."); } return getDbEntity().resolvePathComponents(pathExp); } if (pathExp.getType() == Expression.OBJ_PATH) { return new PathIterator((String) pathExp.getOperand(0)); } throw new ExpressionException("Invalid expression type: '" + pathExp.expName() + "', OBJ_PATH is expected."); }
public Iterator resolvePathComponents(Expression pathExp) throws ExpressionException { // resolve DB_PATH if we can if (pathExp.getType() == Expression.DB_PATH) { if (getDbEntity() == null) { throw new ExpressionException("Can't resolve DB_PATH '" + pathExp + "', DbEntity is not set."); } return getDbEntity().resolvePathComponents(pathExp); } if (pathExp.getType() == Expression.OBJ_PATH) { return new PathIterator((String) pathExp.getOperand(0)); } throw new ExpressionException("Invalid expression type: '" + pathExp.expName() + "', OBJ_PATH is expected."); }