You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2008/05/06 14:17:05 UTC

svn commit: r653758 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans: JoinProcessor.java JoinTreeNode.java

Author: aadamchik
Date: Tue May  6 05:17:03 2008
New Revision: 653758

URL: http://svn.apache.org/viewvc?rev=653758&view=rev
Log:
CAY-802  Split Expressions
(standalone class for merging expressions into joins)

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinProcessor.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinTreeNode.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinProcessor.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinProcessor.java?rev=653758&r1=653757&r2=653758&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinProcessor.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinProcessor.java Tue May  6 05:17:03 2008
@@ -48,10 +48,22 @@
     }
 
     /**
+     * Returns the number of configured joins.
+     */
+    int size() {
+        // do not count root as a join
+        return root.size() - 1;
+    }
+
+    /**
      * Appends all configured joins to the provided output object.
      */
     void appendJoins(Appendable out) throws IOException {
-        appendJoinSubtree(out, root);
+
+        // skip root, recursively append its children
+        for (JoinTreeNode child : root.getChildren()) {
+            appendJoinSubtree(out, child);
+        }
     }
 
     private void appendJoinSubtree(Appendable out, JoinTreeNode node) throws IOException {
@@ -97,6 +109,10 @@
         }
 
         out.append(')');
+
+        for (JoinTreeNode child : node.getChildren()) {
+            appendJoinSubtree(out, child);
+        }
     }
 
     /**

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinTreeNode.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinTreeNode.java?rev=653758&r1=653757&r2=653758&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinTreeNode.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/JoinTreeNode.java Tue May  6 05:17:03 2008
@@ -53,6 +53,18 @@
         this.joinType = joinType;
     }
 
+    int size() {
+        int i = 1;
+
+        if (children != null) {
+            for (JoinTreeNode child : children) {
+                i += child.size();
+            }
+        }
+
+        return i;
+    }
+
     Collection<JoinTreeNode> getChildren() {
         return children != null ? children : Collections.<JoinTreeNode> emptyList();
     }