/**
  * 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);
   }
 }
Esempio n. 2
0
 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;
 }