@Override public QueryNode cloneTree() throws CloneNotSupportedException { QueryNodeImpl clone = (QueryNodeImpl) super.clone(); clone.isLeaf = this.isLeaf; // Reset all tags clone.tags = new Hashtable<>(); // copy children if (this.clauses != null) { List<QueryNode> localClauses = new ArrayList<>(); for (QueryNode clause : this.clauses) { localClauses.add(clause.cloneTree()); } clone.clauses = localClauses; } return clone; }
@Override public QueryNode cloneTree() throws CloneNotSupportedException { QueryNodeImpl clone = (QueryNodeImpl) super.clone(); clone.isLeaf = this.isLeaf; // Reset all tags clone.tags = new Hashtable<>(); // copy children if (this.clauses != null) { List<QueryNode> localClauses = new ArrayList<>(); for (QueryNode clause : this.clauses) { localClauses.add(clause.cloneTree()); } clone.clauses = localClauses; } return clone; }
case NONE: List<QueryNode> children = new ArrayList<>(); children.add(q1.cloneTree()); children.add(q2.cloneTree()); result = new AndQueryNode(children); return result; case Q1: result = q1.cloneTree(); result.add(q2.cloneTree()); return result; case Q2: result = q2.cloneTree(); result.add(q1.cloneTree()); return result; case BOTH: result = q1.cloneTree(); result.add(q2.cloneTree().getChildren()); return result;
case NONE: List<QueryNode> children = new ArrayList<>(); children.add(q1.cloneTree()); children.add(q2.cloneTree()); result = new AndQueryNode(children); return result; case Q1: result = q1.cloneTree(); result.add(q2.cloneTree()); return result; case Q2: result = q2.cloneTree(); result.add(q1.cloneTree()); return result; case BOTH: result = q1.cloneTree(); result.add(q2.cloneTree().getChildren()); return result;