private static List<String> tryParseParts(Expression base, String fieldName) { if (base instanceof Identifier) { return ImmutableList.of(((Identifier) base).getValue(), fieldName); } else if (base instanceof DereferenceExpression) { QualifiedName baseQualifiedName = getQualifiedName((DereferenceExpression) base); if (baseQualifiedName != null) { List<String> newList = new ArrayList<>(baseQualifiedName.getParts()); newList.add(fieldName); return newList; } } return null; }
/** * If this DereferenceExpression looks like a QualifiedName, return QualifiedName. * Otherwise return null */ public static QualifiedName getQualifiedName(DereferenceExpression expression) { List<Identifier> parts = null; if (expression.base instanceof Identifier) { parts = ImmutableList.of((Identifier) expression.base, expression.field); } else if (expression.base instanceof DereferenceExpression) { QualifiedName baseQualifiedName = getQualifiedName((DereferenceExpression) expression.base); if (baseQualifiedName != null) { ImmutableList.Builder<Identifier> builder = ImmutableList.builder(); builder.addAll(baseQualifiedName.getOriginalParts()); builder.add(expression.field); parts = builder.build(); } } return parts == null ? null : QualifiedName.of(parts); }
@Override protected Void visitDereferenceExpression(DereferenceExpression node, ImmutableSet.Builder<QualifiedName> builder) { if (columnReferences.contains(NodeRef.<Expression>of(node))) { builder.add(DereferenceExpression.getQualifiedName(node)); } else { process(node.getBase(), builder); } return null; }
private static QualifiedName asQualifiedName(Expression expression) { QualifiedName name = null; if (expression instanceof Identifier) { name = QualifiedName.of(((Identifier) expression).getValue()); } else if (expression instanceof DereferenceExpression) { name = DereferenceExpression.getQualifiedName((DereferenceExpression) expression); } return name; }
private static QualifiedName asQualifiedName(Expression expression) { QualifiedName name = null; if (expression instanceof Identifier) { name = QualifiedName.of(((Identifier) expression).getValue()); } else if (expression instanceof DereferenceExpression) { name = DereferenceExpression.getQualifiedName((DereferenceExpression) expression); } return name; }
@Override protected Void visitDereferenceExpression(DereferenceExpression node, ImmutableSet.Builder<QualifiedName> builder) { if (columnReferences.contains(NodeRef.<Expression>of(node))) { builder.add(DereferenceExpression.getQualifiedName(node)); } else { process(node.getBase(), builder); } return null; }
name = DereferenceExpression.getQualifiedName((DereferenceExpression) expression);
name = DereferenceExpression.getQualifiedName((DereferenceExpression) expression);
@Override protected Type visitDereferenceExpression(DereferenceExpression node, StackableAstVisitorContext<Context> context) QualifiedName qualifiedName = DereferenceExpression.getQualifiedName(node);
@Override protected Type visitDereferenceExpression(DereferenceExpression node, StackableAstVisitorContext<Context> context) QualifiedName qualifiedName = DereferenceExpression.getQualifiedName(node);