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/08/14 14:44:40 UTC
svn commit: r804197 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/dba/db2/
main/java/org/apache/cayenne/dba/oracle/ test/java/org/apache/cayenne/
test/java/org/apache/cayenne/access/trans/
Author: aadamchik
Date: Fri Aug 14 12:44:39 2009
New Revision: 804197
URL: http://svn.apache.org/viewvc?rev=804197&view=rev
Log:
CAY-1258 Fix some failures in tests (on DB: Oracle, Db2, postgres, Sqlserver, H2, derby)
patch by Olga Tkachova
Added:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2MergerFactory.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleMergerFactory.java
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java?rev=804197&r1=804196&r2=804197&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2Adapter.java Fri Aug 14 12:44:39 2009
@@ -35,6 +35,7 @@
import org.apache.cayenne.dba.TypesMapping;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.merge.MergerFactory;
/**
@@ -205,5 +206,8 @@
}
}
}
-
+ @Override
+ public MergerFactory mergerFactory() {
+ return new DB2MergerFactory();
+ }
}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2MergerFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2MergerFactory.java?rev=804197&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2MergerFactory.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/db2/DB2MergerFactory.java Fri Aug 14 12:44:39 2009
@@ -0,0 +1,49 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.dba.db2;
+
+import org.apache.cayenne.dba.QuotingStrategy;
+import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.merge.MergerFactory;
+import org.apache.cayenne.merge.MergerToken;
+import org.apache.cayenne.merge.SetColumnTypeToDb;
+
+
+public class DB2MergerFactory extends MergerFactory {
+
+ @Override
+ public MergerToken createSetColumnTypeToDb(
+ final DbEntity entity,
+ DbAttribute columnOriginal,
+ final DbAttribute columnNew) {
+
+ return new SetColumnTypeToDb(entity, columnOriginal, columnNew) {
+
+ @Override
+ protected void appendPrefix(StringBuffer sqlBuffer, QuotingStrategy context) {
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(context.quoteFullyQualifiedName(entity));
+ sqlBuffer.append(" ALTER COLUMN ");
+ sqlBuffer.append(context.quoteString(columnNew.getName()));
+ sqlBuffer.append(" SET DATA TYPE ");
+ }
+ };
+ }
+}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java?rev=804197&r1=804196&r2=804197&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleAdapter.java Fri Aug 14 12:44:39 2009
@@ -48,6 +48,7 @@
import org.apache.cayenne.dba.PkGenerator;
import org.apache.cayenne.map.DbAttribute;
import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.merge.MergerFactory;
import org.apache.cayenne.query.BatchQuery;
import org.apache.cayenne.query.InsertBatchQuery;
import org.apache.cayenne.query.Query;
@@ -446,4 +447,9 @@
return (st.wasNull()) ? null : i == 0 ? Boolean.FALSE : Boolean.TRUE;
}
}
+
+ @Override
+ public MergerFactory mergerFactory() {
+ return new OracleMergerFactory();
+ }
}
Added: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleMergerFactory.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleMergerFactory.java?rev=804197&view=auto
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleMergerFactory.java (added)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/dba/oracle/OracleMergerFactory.java Fri Aug 14 12:44:39 2009
@@ -0,0 +1,119 @@
+/*****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ ****************************************************************/
+package org.apache.cayenne.dba.oracle;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.apache.cayenne.dba.DbAdapter;
+import org.apache.cayenne.dba.QuotingStrategy;
+import org.apache.cayenne.map.DbAttribute;
+import org.apache.cayenne.map.DbEntity;
+import org.apache.cayenne.merge.AddColumnToDb;
+import org.apache.cayenne.merge.MergerFactory;
+import org.apache.cayenne.merge.MergerToken;
+import org.apache.cayenne.merge.SetAllowNullToDb;
+import org.apache.cayenne.merge.SetColumnTypeToDb;
+import org.apache.cayenne.merge.SetNotNullToDb;
+
+
+public class OracleMergerFactory extends MergerFactory {
+
+ @Override
+ public MergerToken createAddColumnToDb(final DbEntity entity, final DbAttribute column) {
+ return new AddColumnToDb(entity, column) {
+
+ @Override
+ protected void appendPrefix(StringBuffer sqlBuffer, QuotingStrategy context) {
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(context.quoteFullyQualifiedName(entity));
+ sqlBuffer.append(" ADD ");
+ sqlBuffer.append(context.quoteString(column.getName()));
+ sqlBuffer.append(" ");
+ }
+ };
+ }
+
+ @Override
+ public MergerToken createSetColumnTypeToDb(
+ final DbEntity entity,
+ DbAttribute columnOriginal,
+ final DbAttribute columnNew) {
+
+ return new SetColumnTypeToDb(entity, columnOriginal, columnNew) {
+
+ @Override
+ protected void appendPrefix(StringBuffer sqlBuffer, QuotingStrategy context) {
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(context.quoteFullyQualifiedName(entity));
+ sqlBuffer.append(" MODIFY ");
+ sqlBuffer.append(context.quoteString(columnNew.getName()));
+ sqlBuffer.append(" ");
+ }
+ };
+ }
+
+ @Override
+ public MergerToken createSetAllowNullToDb(DbEntity entity, final DbAttribute column) {
+ return new SetAllowNullToDb(entity, column) {
+
+ @Override
+ public List<String> createSql(DbAdapter adapter) {
+ StringBuffer sqlBuffer = new StringBuffer();
+
+ QuotingStrategy context = adapter.getQuotingStrategy(getEntity()
+ .getDataMap()
+ .isQuotingSQLIdentifiers());
+
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(context.quoteFullyQualifiedName(getEntity()));
+ sqlBuffer.append(" MODIFY ");
+
+ adapter.createTableAppendColumn(sqlBuffer, column);
+
+ return Collections.singletonList(sqlBuffer.toString());
+ }
+
+ };
+ }
+
+ @Override
+ public MergerToken createSetNotNullToDb(DbEntity entity, final DbAttribute column) {
+
+ return new SetNotNullToDb(entity, column) {
+
+ @Override
+ public List<String> createSql(DbAdapter adapter) {
+ StringBuffer sqlBuffer = new StringBuffer();
+ QuotingStrategy context = adapter.getQuotingStrategy(getEntity()
+ .getDataMap()
+ .isQuotingSQLIdentifiers());
+ sqlBuffer.append("ALTER TABLE ");
+ sqlBuffer.append(context.quoteFullyQualifiedName(getEntity()));
+ sqlBuffer.append(" MODIFY ");
+
+ OracleAdapter oradapter = (OracleAdapter) adapter;
+ oradapter.createTableAppendColumn(sqlBuffer, column);
+
+ return Collections.singletonList(sqlBuffer.toString());
+ }
+
+ };
+ }
+}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java?rev=804197&r1=804196&r2=804197&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/CayenneContextInheritanceTest.java Fri Aug 14 12:44:39 2009
@@ -70,7 +70,7 @@
SQLTemplate query = new SQLTemplate(MtTable1.class, "SELECT * FROM MT_TABLE1");
query.setColumnNamesCapitalization(CapsStrategy.UPPER);
query.setFetchingDataRows(true);
-
+
List<DataRow> rows = checkContext.performQuery(query);
assertEquals(1, rows.size());
assertEquals("sub1", rows.get(0).get("GLOBAL_ATTRIBUTE1"));
@@ -125,9 +125,23 @@
List<ClientMtTable1> objects = context.performQuery(query);
assertEquals(3, objects.size());
- assertEquals("a", objects.get(0).getGlobalAttribute1());
- assertEquals("sa1", ((ClientMtTable1Subclass) objects.get(1))
- .getSubclassAttribute1());
+
+ int checkedFields = 0;
+ for (int i = 0; i < objects.size(); i++) {
+ Integer id = (Integer) objects.get(i).getObjectId().getIdSnapshot().get(
+ "TABLE1_ID");
+ if (id == 1) {
+ assertEquals("a", objects.get(i).getGlobalAttribute1());
+ checkedFields++;
+ }
+ else if (id == 2) {
+ assertEquals("sa1", ((ClientMtTable1Subclass) objects.get(i))
+ .getSubclassAttribute1());
+ checkedFields++;
+ }
+
+ }
+ assertEquals(2, checkedFields);
}
public void testPerformQueryWithQualifierInheritanceSuper() {
@@ -155,9 +169,23 @@
List<ClientMtTable1> objects = context.performQuery(query);
assertEquals(2, objects.size());
- assertEquals("a", objects.get(0).getGlobalAttribute1());
- assertEquals("sa1", ((ClientMtTable1Subclass) objects.get(1))
- .getSubclassAttribute1());
+
+ int checkedFields = 0;
+ for (int i = 0; i < objects.size(); i++) {
+ Integer id = (Integer) objects.get(i).getObjectId().getIdSnapshot().get(
+ "TABLE1_ID");
+ if (id == 1) {
+ assertEquals("a", objects.get(i).getGlobalAttribute1());
+ checkedFields++;
+ }
+ else if (id == 2) {
+ assertEquals("sa1", ((ClientMtTable1Subclass) objects.get(i))
+ .getSubclassAttribute1());
+ checkedFields++;
+ }
+
+ }
+ assertEquals(2, checkedFields);
}
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java?rev=804197&r1=804196&r2=804197&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/access/trans/SelectTranslatorTest.java Fri Aug 14 12:44:39 2009
@@ -96,8 +96,12 @@
assertNotNull(generatedSql);
assertTrue(generatedSql.startsWith("SELECT "));
assertTrue(generatedSql.indexOf(" FROM ") > 0);
- assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
- System.out.println(generatedSql);
+ if (generatedSql.contains("RTRIM")) {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME) = ") > generatedSql.indexOf("RTRIM("));
+ }
+ else {
+ assertTrue(generatedSql.indexOf("ARTIST_NAME = ") > 0);
+ }
}
};