@Override public final C visit(QueryPart part) { if (part != null) { // Issue start clause events // ----------------------------------------------------------------- Clause[] clauses = visitListeners.length > 0 ? clause(part) : null; if (clauses != null) for (int i = 0; i < clauses.length; i++) start(clauses[i]); // Perform the actual visiting, or recurse into the replacement // ----------------------------------------------------------------- QueryPart original = part; QueryPart replacement = start(part); if (original == replacement) visit0(original); else visit0(replacement); end(replacement); // Issue end clause events // ----------------------------------------------------------------- if (clauses != null) for (int i = clauses.length - 1; i >= 0; i--) end(clauses[i]); } return (C) this; }
@Override public final C visit(QueryPart part) { if (part != null) { // Issue start clause events // ----------------------------------------------------------------- Clause[] clauses = Tools.isNotEmpty(visitListeners) ? clause(part) : null; if (clauses != null) for (int i = 0; i < clauses.length; i++) start(clauses[i]); // Perform the actual visiting, or recurse into the replacement // ----------------------------------------------------------------- QueryPart original = part; QueryPart replacement = start(part); if (original == replacement) visit0(original); else visit0(replacement); end(replacement); // Issue end clause events // ----------------------------------------------------------------- if (clauses != null) for (int i = clauses.length - 1; i >= 0; i--) end(clauses[i]); } return (C) this; }
private final C visit0(QueryPart part) { if (part != null) { QueryPartInternal internal = (QueryPartInternal) part; // If this is supposed to be a declaration section and the part isn't // able to declare anything, then disable declaration temporarily // We're declaring fields, but "part" does not declare fields if (declareFields() && !internal.declaresFields()) { declareFields(false); visit0(internal); declareFields(true); } // We're declaring tables, but "part" does not declare tables else if (declareTables() && !internal.declaresTables()) { declareTables(false); visit0(internal); declareTables(true); } // We're declaring windows, but "part" does not declare windows else if (declareWindows() && !internal.declaresWindows()) { declareWindows(false); visit0(internal); declareWindows(true); } // We're not declaring, or "part" can declare else { visit0(internal); } } return (C) this; }
boolean aliases = declareAliases(); declareFields(false); visit0(internal); declareFields(true); declareAliases(aliases); boolean aliases = declareAliases(); declareTables(false); visit0(internal); declareTables(true); declareAliases(aliases); visit0(internal); declareWindows(true); visit0(internal); declareCTE(true); visit0(internal); castMode(previous); visit0(internal);