From a5a926fd94e961df2c64ca7d4d9dd441ef1491bc Mon Sep 17 00:00:00 2001 From: Redkale <8730487+redkale@users.noreply.github.com> Date: Thu, 18 Oct 2018 14:47:07 +0800 Subject: [PATCH] =?UTF-8?q?FilterNode=E3=80=81FilterJoinNode=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0copy=E6=96=B9=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/org/redkale/source/FilterJoinNode.java | 12 ++++++++++++ src/org/redkale/source/FilterNode.java | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/src/org/redkale/source/FilterJoinNode.java b/src/org/redkale/source/FilterJoinNode.java index 6d8e4cc90..16ad0dce8 100644 --- a/src/org/redkale/source/FilterJoinNode.java +++ b/src/org/redkale/source/FilterJoinNode.java @@ -82,6 +82,18 @@ public class FilterJoinNode extends FilterNode { return new FilterJoinNode(joinClass, joinColumns, column, express, itemand, value); } + @Override + public FilterJoinNode copy() { + FilterJoinNode node = (FilterJoinNode) copy(new FilterJoinNode()); + node.joinClass = this.joinClass; + node.joinEntity = this.joinEntity; + if (this.joinColumns != null) { + node.joinColumns = new String[this.joinColumns.length]; + System.arraycopy(this.joinColumns, 0, node.joinColumns, 0, this.joinColumns.length); + } + return node; + } + @Override protected FilterNode any(final FilterNode node0, boolean signor) { Objects.requireNonNull(node0); diff --git a/src/org/redkale/source/FilterNode.java b/src/org/redkale/source/FilterNode.java index 94060d626..33c231c7a 100644 --- a/src/org/redkale/source/FilterNode.java +++ b/src/org/redkale/source/FilterNode.java @@ -82,6 +82,26 @@ public class FilterNode { //FilterNode 不能实现Serializable接口, 否则 this.value = val; } + public FilterNode copy() { + return copy(new FilterNode()); + } + + protected FilterNode copy(FilterNode node) { + node.readOnly = this.readOnly; + node.column = this.column; + node.express = this.express; + node.value = this.value; + node.itemand = this.itemand; + node.or = this.or; + if (this.nodes != null) { + node.nodes = new FilterNode[this.nodes.length]; + for (int i = 0; i < node.nodes.length; i++) { + node.nodes[i] = this.nodes[i] == null ? null : this.nodes[i].copy(); + } + } + return node; + } + public FilterNode asReadOnly() { this.readOnly = true; return this;