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 2009/04/13 20:49:01 UTC

svn commit: r764555 - in /cayenne/main/trunk: docs/doc/src/main/resources/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/ framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/

Author: aadamchik
Date: Mon Apr 13 18:49:00 2009
New Revision: 764555

URL: http://svn.apache.org/viewvc?rev=764555&view=rev
Log:
CAY-1207 Oracle8 does not like new join syntax

Added:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8JoinStack.java
      - copied, changed from r764550, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java
      - copied, changed from r764550, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java
      - copied, changed from r764550, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
Modified:
    cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java

Modified: cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt?rev=764555&r1=764554&r2=764555&view=diff
==============================================================================
--- cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt (original)
+++ cayenne/main/trunk/docs/doc/src/main/resources/RELEASE-NOTES.txt Mon Apr 13 18:49:00 2009
@@ -52,6 +52,7 @@
 CAY-1194 problems with relationships when using nested contexts and ROP
 CAY-1196 CayenneRuntimeException in modeler due to ClassNotFoundException when java type is invalid and db attribute is null
 CAY-1204 Incorrect relationship syncing in nested CayenneContext's
+CAY-1207 Oracle8 does not like new join syntax
 
 ----------------------------------
 Release: 3.0M5

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java?rev=764555&r1=764554&r2=764555&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java Mon Apr 13 18:49:00 2009
@@ -23,6 +23,8 @@
 
 import org.apache.cayenne.access.trans.JoinStack;
 import org.apache.cayenne.access.trans.JoinTreeNode;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
@@ -31,12 +33,14 @@
  * OpenBase does not support standard JOIN keyword and have strange syntax for defining
  * inner/outer joins
  * 
- * @see http://www.openbase.com/help/KnowledgeBase/400_OpenBaseSQL/401_SelectStatements.html
+ * @see http
+ *      ://www.openbase.com/help/KnowledgeBase/400_OpenBaseSQL/401_SelectStatements.html
+ * @since 3.0
  */
-public class OpenBaseJoinStack extends JoinStack {
+class OpenBaseJoinStack extends JoinStack {
 
-    public OpenBaseJoinStack() {
-        super();
+    protected OpenBaseJoinStack(DbAdapter dbAdapter, DataMap dataMap) {
+        super(dbAdapter, dataMap);
     }
 
     @Override
@@ -60,7 +64,8 @@
     }
 
     @Override
-    protected void appendQualifier(Appendable out, boolean firstQualifierElement) throws IOException {
+    protected void appendQualifier(Appendable out, boolean firstQualifierElement)
+            throws IOException {
         boolean first = firstQualifierElement;
         for (JoinTreeNode node : rootNode.getChildren()) {
             if (!first) {
@@ -100,7 +105,7 @@
                     throw new IllegalArgumentException("Unsupported join type: "
                             + node.getJoinType());
             }
-            
+
             out.append(targetAlias).append('.').append(join.getTargetName());
 
         }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java?rev=764555&r1=764554&r2=764555&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java Mon Apr 13 18:49:00 2009
@@ -29,7 +29,7 @@
 
     @Override
     protected JoinStack createJoinStack() {
-        return new OpenBaseJoinStack();
+        return new OpenBaseJoinStack(getAdapter(), queryMetadata.getDataMap());
     }
 
     @Override

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java?rev=764555&r1=764554&r2=764555&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java Mon Apr 13 18:49:00 2009
@@ -23,6 +23,7 @@
 import org.apache.cayenne.map.EntityResolver;
 import org.apache.cayenne.query.SQLAction;
 import org.apache.cayenne.query.SQLTemplate;
+import org.apache.cayenne.query.SelectQuery;
 
 /**
  * An action builder for Oracle8Adapter.
@@ -39,4 +40,9 @@
     public SQLAction sqlAction(SQLTemplate query) {
         return new Oracle8SQLTemplateAction(query, adapter, getEntityResolver());
     }
+
+    @Override
+    public SQLAction objectSelectAction(SelectQuery query) {
+        return new Oracle8SelectAction(query, getAdapter(), getEntityResolver());
+    }
 }

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8JoinStack.java (from r764550, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8JoinStack.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8JoinStack.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java&r1=764550&r2=764555&rev=764555&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseJoinStack.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8JoinStack.java Mon Apr 13 18:49:00 2009
@@ -16,27 +16,27 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-package org.apache.cayenne.dba.openbase;
+package org.apache.cayenne.dba.oracle;
 
 import java.io.IOException;
 import java.util.List;
 
 import org.apache.cayenne.access.trans.JoinStack;
 import org.apache.cayenne.access.trans.JoinTreeNode;
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.map.DataMap;
 import org.apache.cayenne.map.DbEntity;
 import org.apache.cayenne.map.DbJoin;
 import org.apache.cayenne.map.DbRelationship;
 
 /**
- * OpenBase does not support standard JOIN keyword and have strange syntax for defining
- * inner/outer joins
- * 
- * @see http://www.openbase.com/help/KnowledgeBase/400_OpenBaseSQL/401_SelectStatements.html
+ * @since 3.0
  */
-public class OpenBaseJoinStack extends JoinStack {
+// cloned from OpenBaseJoin stack... need better strategies of reuse...
+class Oracle8JoinStack extends JoinStack {
 
-    public OpenBaseJoinStack() {
-        super();
+    Oracle8JoinStack(DbAdapter dbAdapter, DataMap dataMap) {
+        super(dbAdapter, dataMap);
     }
 
     @Override
@@ -60,7 +60,8 @@
     }
 
     @Override
-    protected void appendQualifier(Appendable out, boolean firstQualifierElement) throws IOException {
+    protected void appendQualifier(Appendable out, boolean firstQualifierElement)
+            throws IOException {
         boolean first = firstQualifierElement;
         for (JoinTreeNode node : rootNode.getChildren()) {
             if (!first) {
@@ -100,16 +101,13 @@
                     throw new IllegalArgumentException("Unsupported join type: "
                             + node.getJoinType());
             }
-            
-            out.append(targetAlias).append('.').append(join.getTargetName());
 
+            out.append(targetAlias).append('.').append(join.getTargetName());
         }
 
         for (JoinTreeNode child : node.getChildren()) {
             out.append(" AND ");
             appendQualifierSubtree(out, child);
         }
-
     }
-
 }

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java (from r764550, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java&r1=764550&r2=764555&rev=764555&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8ActionBuilder.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectAction.java Mon Apr 13 18:49:00 2009
@@ -16,27 +16,32 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-
 package org.apache.cayenne.dba.oracle;
 
-import org.apache.cayenne.dba.JdbcAdapter;
+import java.sql.Connection;
+
+import org.apache.cayenne.access.trans.SelectTranslator;
+import org.apache.cayenne.dba.DbAdapter;
 import org.apache.cayenne.map.EntityResolver;
-import org.apache.cayenne.query.SQLAction;
-import org.apache.cayenne.query.SQLTemplate;
+import org.apache.cayenne.query.SelectQuery;
 
 /**
- * An action builder for Oracle8Adapter.
- * 
- * @since 1.2
+ * @since 3.0
  */
-class Oracle8ActionBuilder extends OracleActionBuilder {
+class Oracle8SelectAction extends OracleSelectAction {
 
-    Oracle8ActionBuilder(JdbcAdapter adapter, EntityResolver resolver) {
-        super(adapter, resolver);
+    Oracle8SelectAction(SelectQuery query, DbAdapter adapter,
+            EntityResolver entityResolver) {
+        super(query, adapter, entityResolver);
     }
 
     @Override
-    public SQLAction sqlAction(SQLTemplate query) {
-        return new Oracle8SQLTemplateAction(query, adapter, getEntityResolver());
+    protected SelectTranslator createTranslator(Connection connection) {
+        SelectTranslator translator = new Oracle8SelectTranslator();
+        translator.setQuery(query);
+        translator.setAdapter(adapter);
+        translator.setEntityResolver(getEntityResolver());
+        translator.setConnection(connection);
+        return translator;
     }
 }

Copied: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java (from r764550, cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java)
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java?p2=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java&p1=cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java&r1=764550&r2=764555&rev=764555&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/openbase/OpenBaseSelectTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/Oracle8SelectTranslator.java Mon Apr 13 18:49:00 2009
@@ -16,28 +16,22 @@
  *  specific language governing permissions and limitations
  *  under the License.
  ****************************************************************/
-
-package org.apache.cayenne.dba.openbase;
+package org.apache.cayenne.dba.oracle;
 
 import org.apache.cayenne.access.trans.JoinStack;
-import org.apache.cayenne.access.trans.SelectTranslator;
 
 /**
- * @since 1.2
+ * @since 3.0
  */
-class OpenBaseSelectTranslator extends SelectTranslator {
+public class Oracle8SelectTranslator extends OracleSelectTranslator {
 
+    /**
+     * Returns an old style joint stack for Oracle8 that does not support explicit join
+     * syntax.
+     */
     @Override
     protected JoinStack createJoinStack() {
-        return new OpenBaseJoinStack();
-    }
-
-    @Override
-    protected void appendLimitAndOffsetClauses(StringBuilder buffer) {
-        int limit = queryMetadata.getFetchLimit();
-        if (limit > 0) {
-            buffer.append(" RETURN RESULTS ").append(limit);
-        }
+        return new Oracle8JoinStack(getAdapter(), queryMetadata.getDataMap());
     }
 
 }