@Override public ParseNode visitLeave(CaseParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.caseWhen(children); } }); }
@Override public ParseNode visitLeave(NotParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.not(children.get(0)); } }); }
@Override public ParseNode visitLeave(ArrayAnyComparisonNode node, final List<ParseNode> nodes) throws SQLException { ParseNode normNode = leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.arrayAny(nodes.get(0), (ComparisonParseNode) nodes.get(1)); } }); return normNode; }
@Override public ParseNode visitLeave(ArrayElemRefNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.elementRef(children); } }); } }
@Override protected ParseNode leaveCompoundNode(CompoundParseNode node, List<ParseNode> children, ParseNodeRewriter.CompoundNodeFactory factory) { if (topNode == node) { topNode = null; } return super.leaveCompoundNode(node, children, factory); }
@Override public ParseNode visitLeave(SubtractParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.subtract(children); } }); }
@Override public ParseNode visitLeave(MultiplyParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.multiply(children); } }); }
@Override public ParseNode visitLeave(ModulusParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.modulus(children); } }); }
@Override public ParseNode visitLeave(final LikeParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.like(children.get(0),children.get(1),node.isNegate(), node.getLikeType()); } }); }
@Override public ParseNode visitLeave(final InListParseNode node, List<ParseNode> nodes) throws SQLException { ParseNode normNode = leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.inList(children, node.isNegate()); } }); return normNode; }
@Override public ParseNode visitLeave(final ComparisonParseNode node, List<ParseNode> nodes) throws SQLException { ParseNode normNode = leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.comparison(node.getFilterOp(), children.get(0), children.get(1)); } }); return normNode; }
@Override public ParseNode visitLeave(DivideParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.divide(children); } }); }
@Override public ParseNode visitLeave(StringConcatParseNode node, List<ParseNode> l) throws SQLException { return leaveCompoundNode(node, l, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.concat(children); } }); }
@Override public ParseNode visitLeave(ArrayAllComparisonNode node, final List<ParseNode> nodes) throws SQLException { ParseNode normNode = leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.arrayAll(nodes.get(0), (ComparisonParseNode) nodes.get(1)); } }); return normNode; }
@Override public ParseNode visitLeave(AndParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.and(children); } }); }
@Override public ParseNode visitLeave(final CastParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.cast(children.get(0), node.getDataType(), node.getMaxLength(), node.getScale()); } }); }
@Override public ParseNode visitLeave(final InParseNode node, List<ParseNode> nodes) throws SQLException { ParseNode normNode = leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.in(children.get(0), children.get(1), node.isNegate(), node.isSubqueryDistinct()); } }); return normNode; }
@Override public ParseNode visitLeave(ArrayConstructorNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.upsertStmtArrayNode(children); } }); }
@Override public ParseNode visitLeave(OrParseNode node, List<ParseNode> nodes) throws SQLException { return leaveCompoundNode(node, nodes, new CompoundNodeFactory() { @Override public ParseNode createNode(List<ParseNode> children) { return NODE_FACTORY.or(children); } }); }
@Override protected ParseNode leaveCompoundNode(CompoundParseNode node, List<ParseNode> children, CompoundNodeFactory factory) { return indexedParseNodeToColumnParseNodeMap.containsKey(node) ? indexedParseNodeToColumnParseNodeMap.get(node) : super.leaveCompoundNode(node, children, factory); }