/** * Returns whether two nodes are equal (using {@link #equalsDeep(SqlNode,boolean)}) or are both * null. * * @param node1 First expression * @param node2 Second expression * @param fail Whether to throw {@link AssertionError} if expressions are not equal */ public static boolean equalDeep(SqlNode node1, SqlNode node2, boolean fail) { if (node1 == null) { return node2 == null; } else if (node2 == null) { return false; } else { return node1.equalsDeep(node2, fail); } }
public boolean equalsDeep(SqlNode node, boolean fail) { if (!(node instanceof SqlNodeList)) { assert !fail : this + "!=" + node; return false; } SqlNodeList that = (SqlNodeList) node; if (this.size() != that.size()) { assert !fail : this + "!=" + node; return false; } for (int i = 0; i < list.size(); i++) { SqlNode thisChild = list.get(i); final SqlNode thatChild = that.list.get(i); if (!thisChild.equalsDeep(thatChild, fail)) { return false; } } return true; }