You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2011/06/25 20:43:58 UTC
svn commit: r1139590 [1/2] - in /db/torque/torque4/trunk/torque-test: ./
src/main/schema/ src/test/java/org/apache/torque/
src/test/java/org/apache/torque/generated/
src/test/java/org/apache/torque/generated/peer/
Author: tfischer
Date: Sat Jun 25 18:43:58 2011
New Revision: 1139590
URL: http://svn.apache.org/viewvc?rev=1139590&view=rev
Log:
TORQUE-161:
Test case for methods for related objects
Move delete tests into extra test class
Added:
db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/FillerTest.java
Modified:
db/torque/torque4/trunk/torque-test/pom.xml
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseRuntimeTestCase.java
db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/DataTest.java
Modified: db/torque/torque4/trunk/torque-test/pom.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/pom.xml?rev=1139590&r1=1139589&r2=1139590&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/pom.xml (original)
+++ db/torque/torque4/trunk/torque-test/pom.xml Sat Jun 25 18:43:58 2011
@@ -160,6 +160,8 @@
<torque.database>${torque.targetDatabase}</torque.database>
<torque.om.useManagers>${torque.useManagers}</torque.om.useManagers>
<torque.om.generateBeans>${torque.generateBeans}</torque.om.generateBeans>
+ <torque.om.complexObjectModel.generateFillers>true</torque.om.complexObjectModel.generateFillers>
+ <torque.om.generateMapInit>true</torque.om.generateMapInit>
</options>
</configuration>
</execution>
@@ -393,6 +395,7 @@
<include>**/*Test.java</include>
<include>**/*TestCase.java</include>
<include>**/*Tools.java</include>
+ <include>**/ForeignKeySchemaData.java</include>
<include>**/${torque.test.include.beans}</include>
<include>**/${torque.test.include.managers}</include>
</testIncludes>
Added: db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml?rev=1139590&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml (added)
+++ db/torque/torque4/trunk/torque-test/src/main/schema/foreign-key-schema.xml Sat Jun 25 18:43:58 2011
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
+<!--
+ 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.
+-->
+
+<!-- This schema contains tables for testing foreign key relationships -->
+<!-- $Id: $ -->
+
+<database name="@DATABASE_DEFAULT@"
+ defaultIdMethod="@DATABASE_ID_METHOD@"
+ package="org.apache.torque.test"
+ xmlns="http://db.apache.org/torque/4.0/templates/database"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://db.apache.org/torque/4.0/templates/database
+ http://db.apache.org/torque/4.0/templates/database.xsd">
+
+ <table name="P_INTEGER_PK"
+ description="table with a primitive int pk">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="primitive"/>
+ <column name="INTEGER_COLUMN" type="INTEGER" javaType="primitive"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ </table>
+
+ <table name="NULLABLE_P_INTEGER_FK"
+ description="table with a nullable integer primitive foreign key
+ which references a primary key column in the foreign table">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="primitive"/>
+ <column name="FK" type="INTEGER" javaType="primitive"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="P_INTEGER_PK">
+ <reference local="FK" foreign="ID"/>
+ </foreign-key>
+ </table>
+
+ <table name="REQUIRED_P_INTEGER_FK"
+ description="table with a non-nullable integer object foreign key
+ which references a primary key column in the foreign table">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="primitive"/>
+ <column name="FK" required="true" type="INTEGER" javaType="primitive"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="P_INTEGER_PK">
+ <reference local="FK" foreign="ID"/>
+ </foreign-key>
+ </table>
+
+ <table name="NON_PK_P_INTEGER_FK"
+ description="table with a non-nullable integer primitive foreign key
+ which references a non-primary-key column in the foreign table">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="primitive"/>
+ <column name="FK" required="true" type="INTEGER" javaType="primitive"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="P_INTEGER_PK">
+ <reference local="FK" foreign="INTEGER_COLUMN"/>
+ </foreign-key>
+ </table>
+
+ <table name="O_INTEGER_PK"
+ description="table with a object integer pk">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="INTEGER_COLUMN" type="INTEGER" javaType="object"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ </table>
+
+ <table name="NULLABLE_O_INTEGER_FK"
+ description="table with a nullable integer object foreign key
+ which references a primary key column in the foreign table">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="FK" type="INTEGER" javaType="object"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="O_INTEGER_PK">
+ <reference local="FK" foreign="ID"/>
+ </foreign-key>
+ </table>
+
+ <table name="REQUIRED_O_INTEGER_FK"
+ description="table with a non-nullable integer object foreign key
+ which references a primary key column in the foreign table">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="FK" required="true" type="INTEGER" javaType="object"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="O_INTEGER_PK">
+ <reference local="FK" foreign="ID"/>
+ </foreign-key>
+ </table>
+
+ <table name="NON_PK_O_INTEGER_FK"
+ description="table with a nullable integer object foreign key
+ which references a non-primary-key column in the foreign table">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="FK" type="INTEGER" javaType="object"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="O_INTEGER_PK">
+ <reference local="FK" foreign="INTEGER_COLUMN"/>
+ </foreign-key>
+ </table>
+
+ <table name="COMPOSITE_INTEGER_VARCHAR_PK" idMethod="none">
+ <column name="ID1" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="ID2" primaryKey="true" type="VARCHAR" size="50"/>
+ <column name="INTEGER_COLUMN" type="INTEGER" javaType="object"/>
+ <column name="VARCHAR_COLUMN" type="VARCHAR" size="50"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ </table>
+
+ <table name="COMPOSITE_INTEGER_VARCHAR_FK">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="FK1" type="INTEGER" javaType="object"/>
+ <column name="FK2" type="VARCHAR" size="50"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="COMPOSITE_INTEGER_VARCHAR_PK">
+ <reference local="FK1" foreign="ID1"/>
+ <reference local="FK2" foreign="ID2"/>
+ </foreign-key>
+ </table>
+
+ <table name="COMPOSITE_NONPK_FK">
+ <column name="ID" primaryKey="true" type="INTEGER" javaType="object"/>
+ <column name="FK1" type="INTEGER" javaType="object"/>
+ <column name="FK2" type="VARCHAR" size="50"/>
+ <column name="NAME" type="VARCHAR" size="100"/>
+ <foreign-key foreignTable="COMPOSITE_INTEGER_VARCHAR_PK">
+ <reference local="FK1" foreign="INTEGER_COLUMN"/>
+ <reference local="FK2" foreign="VARCHAR_COLUMN"/>
+ </foreign-key>
+ </table>
+
+</database>
Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseRuntimeTestCase.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseRuntimeTestCase.java?rev=1139590&r1=1139589&r2=1139590&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseRuntimeTestCase.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/BaseRuntimeTestCase.java Sat Jun 25 18:43:58 2011
@@ -27,7 +27,10 @@ import org.apache.torque.adapter.DB;
import org.apache.torque.adapter.DBMM;
import org.apache.torque.map.TableMap;
import org.apache.torque.om.mapper.StringMapper;
+import org.apache.torque.test.AuthorPeer;
+import org.apache.torque.test.BookPeer;
import org.apache.torque.util.BasePeer;
+import org.apache.torque.util.Criteria;
/**
* Base functionality to be extended by all Torque test cases. Test
@@ -120,4 +123,18 @@ public abstract class BaseRuntimeTestCas
completeVersion.lastIndexOf('.'));
return Integer.parseInt(minorVersion);
}
+
+ /**
+ * Deletes all authors and books in the bookstore tables.
+ *
+ * @throws TorqueException if the bookstore could not be cleaned
+ */
+ protected void cleanBookstore() throws TorqueException
+ {
+ Criteria criteria = new Criteria();
+ BookPeer.doDelete(criteria);
+
+ criteria.clear();
+ AuthorPeer.doDelete(criteria);
+ }
}
Modified: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/DataTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/DataTest.java?rev=1139590&r1=1139589&r2=1139590&view=diff
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/DataTest.java (original)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/DataTest.java Sat Jun 25 18:43:58 2011
@@ -83,6 +83,10 @@ import org.apache.torque.test.IfcTablePe
import org.apache.torque.test.InheritanceChildB;
import org.apache.torque.test.InheritanceChildC;
import org.apache.torque.test.InheritanceChildD;
+import org.apache.torque.test.InheritanceClassnameTest;
+import org.apache.torque.test.InheritanceClassnameTestChild1;
+import org.apache.torque.test.InheritanceClassnameTestChild2;
+import org.apache.torque.test.InheritanceClassnameTestPeer;
import org.apache.torque.test.InheritanceTest;
import org.apache.torque.test.InheritanceTestPeer;
import org.apache.torque.test.IntegerObjectPk;
@@ -726,104 +730,6 @@ public class DataTest extends BaseRuntim
}
/**
- * test whether delete works as expected
- * @throws Exception if the test fails
- */
- public void testDelete() throws Exception
- {
- cleanBookstore();
-
- Author author = new Author();
- author.setName("Name");
- author.save();
-
- Book book = new Book();
- book.setTitle("title");
- book.setAuthor(author);
- book.setIsbn("ISBN");
- book.save();
-
- // delete without matching data
- Criteria criteria = new Criteria();
- criteria.add(
- AuthorPeer.AUTHOR_ID,
- author.getAuthorId(),
- Criteria.NOT_EQUAL);
- AuthorPeer.doDelete(criteria);
- List authorResult = AuthorPeer.doSelect(new Criteria());
- assertTrue("deleted too many records", authorResult.size() == 1);
-
- BookPeer.doDelete(book);
- List bookResult = BookPeer.doSelect(new Criteria());
- authorResult = AuthorPeer.doSelect(new Criteria());
- // check that the book has disappeared
- assertTrue("delete by object failed",
- bookResult.size() == 0);
- // check that the underlying author has not been deleted
- assertTrue("delete by object deleted in cascade",
- authorResult.size() == 1);
-
- // delete with matching data
- criteria.clear();
- criteria.add(AuthorPeer.AUTHOR_ID, author.getAuthorId());
- AuthorPeer.doDelete(criteria);
- authorResult = AuthorPeer.doSelect(new Criteria());
- assertTrue("deleted not enough records",
- authorResult.size() == 0);
-
- // re-create data and check that a delete with join does not delete
- // data in the joined table as well.
- author = new Author();
- author.setName("Name");
- author.save();
-
- book = new Book();
- book.setTitle("title");
- book.setAuthor(author);
- book.setIsbn("ISBN");
- book.save();
-
-// criteria.clear();
-// criteria.add(BookPeer.AUTHOR_ID, author.getAuthorId());
-// criteria.addJoin(
-// AuthorPeer.AUTHOR_ID,
-// BookPeer.AUTHOR_ID,
-// SqlEnum.INNER_JOIN);
-// // The following where clause is not necessary from a sql point of view.
-// // However, it adds a second table to the where clauses of the
-// // criteria, so that it cannot be determined from the criteria alone
-// // which table should be deleted from. So this may cause data to
-// // disappear from both tables (TORQUE-93)
-// criteria.add(AuthorPeer.AUTHOR_ID, book.getAuthorId());
-// BookPeer.doDelete(criteria);
-// authorResult = AuthorPeer.doSelect(new Criteria());
-// bookResult = BookPeer.doSelect(new Criteria());
-// assertTrue("deleted not enough records",
-// bookResult.size() == 0);
-// assertTrue("delete also deleted objects in joined table",
-// authorResult.size() == 1);
-//
-// // recreate book, test whether deletes using joins work
-// book = new Book();
-// book.setTitle("title");
-// book.setAuthor(author);
-// book.setIsbn("ISBN");
-// book.save();
-//
-// criteria.clear();
-// criteria.addJoin(BookPeer.AUTHOR_ID, AuthorPeer.AUTHOR_ID);
-// criteria.add(AuthorPeer.NAME, author.getName());
-// BookPeer.doDelete(criteria);
-//
-// authorResult = AuthorPeer.doSelect(new Criteria());
-// bookResult = BookPeer.doSelect(new Criteria());
-// assertTrue("deleted not enough records",
-// bookResult.size() == 0);
-// assertTrue("delete also deleted objects in joined table",
-// authorResult.size() == 1);
- }
-
- /**
* Test whether an update works and whether it only affects the
* specified record.
* @throws Exception if anything in the test goes wrong.
@@ -1746,9 +1652,18 @@ public class DataTest extends BaseRuntim
*/
public void testCurrentDate() throws TorqueException
{
+ DB adapter = Torque.getDatabase(Torque.getDefaultDB()).getAdapter();
+ if (adapter instanceof DBMSSQL)
+ {
+ log.warn("testCurrentDate(): "
+ + Criteria.CURRENT_DATE
+ + " and "
+ + Criteria.CURRENT_TIME
+ + "are not supported by MSSQL");
+ return;
+ }
Criteria c = new Criteria();
c.add(DateTestPeer.DATE_VALUE, Criteria.CURRENT_DATE);
- DB adapter = Torque.getDatabase(Torque.getDefaultDB()).getAdapter();
if (adapter instanceof DBOracle)
{
log.warn("testCurrentDate(): "
@@ -2403,7 +2318,7 @@ public class DataTest extends BaseRuntim
}
}
- public void testInheritance() throws Exception
+ public void testInheritanceWithKeys() throws Exception
{
// make sure that the InheritanceTest table is empty before the test
Criteria criteria = new Criteria();
@@ -2464,6 +2379,63 @@ public class DataTest extends BaseRuntim
inheritanceObjects.get(3).getClass());
}
+ public void testInheritanceWithClassname() throws Exception
+ {
+ // make sure that the InheritanceTest table is empty before the test
+ Criteria criteria = new Criteria();
+ InheritanceClassnameTestPeer.doDelete(criteria);
+ criteria = new Criteria();
+ criteria.add(
+ InheritanceClassnameTestPeer.INHERITANCE_TEST,
+ (Object) null,
+ Criteria.ISNOTNULL);
+ assertEquals(0,
+ new CountHelper().count(criteria));
+
+ // create & save test data
+ InheritanceClassnameTest inheritanceClassnameTest
+ = new InheritanceClassnameTest();
+ inheritanceClassnameTest.setPayload("0 parent");
+ inheritanceClassnameTest.save();
+ InheritanceClassnameTestChild1 inheritanceClassnameChild1
+ = new InheritanceClassnameTestChild1();
+ inheritanceClassnameChild1.setPayload("1 child");
+ inheritanceClassnameChild1.save();
+ InheritanceClassnameTestChild2 inheritanceClassnameChild2
+ = new InheritanceClassnameTestChild2();
+ inheritanceClassnameChild2.setPayload("2 child");
+ inheritanceClassnameChild2.save();
+
+ // Check that all objects are saved into the InheritanceTest table
+ criteria = new Criteria();
+ criteria.add(
+ InheritanceClassnameTestPeer.INHERITANCE_TEST,
+ (Object) null,
+ Criteria.ISNOTNULL);
+ assertEquals("InheritanceClassnameTest table should contain 3 rows",
+ 3,
+ new CountHelper().count(criteria));
+ criteria = new Criteria();
+ criteria.addAscendingOrderByColumn(
+ InheritanceClassnameTestPeer.PAYLOAD);
+
+ // Check that the class of the object is retained when loading
+ List<InheritanceClassnameTest> inheritanceObjects
+ = InheritanceClassnameTestPeer.doSelect(criteria);
+ assertEquals(
+ InheritanceClassnameTest.class,
+ inheritanceObjects.get(0).getClass());
+ assertEquals("0 parent", inheritanceObjects.get(0).getPayload());
+ assertEquals(
+ InheritanceClassnameTestChild1.class,
+ inheritanceObjects.get(1).getClass());
+ assertEquals("1 child", inheritanceObjects.get(1).getPayload());
+ assertEquals(
+ InheritanceClassnameTestChild2.class,
+ inheritanceObjects.get(2).getClass());
+ assertEquals("2 child", inheritanceObjects.get(2).getPayload());
+ }
+
/**
* Checks whether selects with unqualified column names work.
*
@@ -2638,19 +2610,6 @@ public class DataTest extends BaseRuntim
}
/**
- * Deletes all authors and books in the bookstore tables
- * @throws Exception if the bookstore could not be cleaned
- */
- protected void cleanBookstore() throws Exception
- {
- Criteria criteria = new Criteria();
- BookPeer.doDelete(criteria);
-
- criteria.clear();
- AuthorPeer.doDelete(criteria);
- }
-
- /**
* Deletes all As, Bs, Cs and RAs
* @throws Exception if the cleanup fails
*/
Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java?rev=1139590&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/ForeignKeySchemaData.java Sat Jun 25 18:43:58 2011
@@ -0,0 +1,610 @@
+package org.apache.torque;
+
+/*
+ * 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.
+ */
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.torque.test.CompositeIntegerVarcharFk;
+import org.apache.torque.test.CompositeIntegerVarcharFkPeer;
+import org.apache.torque.test.CompositeIntegerVarcharPk;
+import org.apache.torque.test.CompositeIntegerVarcharPkPeer;
+import org.apache.torque.test.CompositeNonpkFk;
+import org.apache.torque.test.CompositeNonpkFkPeer;
+import org.apache.torque.test.NonPkOIntegerFk;
+import org.apache.torque.test.NonPkOIntegerFkPeer;
+import org.apache.torque.test.NonPkPIntegerFk;
+import org.apache.torque.test.NonPkPIntegerFkPeer;
+import org.apache.torque.test.NullableOIntegerFk;
+import org.apache.torque.test.NullableOIntegerFkPeer;
+import org.apache.torque.test.NullablePIntegerFk;
+import org.apache.torque.test.NullablePIntegerFkPeer;
+import org.apache.torque.test.OIntegerPk;
+import org.apache.torque.test.OIntegerPkPeer;
+import org.apache.torque.test.PIntegerPk;
+import org.apache.torque.test.PIntegerPkPeer;
+import org.apache.torque.test.RequiredOIntegerFk;
+import org.apache.torque.test.RequiredOIntegerFkPeer;
+import org.apache.torque.test.RequiredPIntegerFk;
+import org.apache.torque.test.RequiredPIntegerFkPeer;
+import org.apache.torque.util.Criteria;
+
+/**
+ * Contains data (i.e. table records) for the tables in the foreign key schema.
+ *
+ * @version $Id: $
+ */
+public class ForeignKeySchemaData
+{
+ private List<PIntegerPk> pIntegerPkList
+ = new ArrayList<PIntegerPk>();
+
+ private List<NullablePIntegerFk> nullablePIntegerFkList
+ = new ArrayList<NullablePIntegerFk>();
+
+ private List<RequiredPIntegerFk> requiredPIntegerFkList
+ = new ArrayList<RequiredPIntegerFk>();
+
+ private List<NonPkPIntegerFk> nonPkPIntegerFkList
+ = new ArrayList<NonPkPIntegerFk>();
+
+ private List<OIntegerPk> oIntegerPkList
+ = new ArrayList<OIntegerPk>();
+
+ private List<NullableOIntegerFk> nullableOIntegerFkList
+ = new ArrayList<NullableOIntegerFk>();
+
+ private List<RequiredOIntegerFk> requiredOIntegerFkList
+ = new ArrayList<RequiredOIntegerFk>();
+
+ private List<NonPkOIntegerFk> nonPkOIntegerFkList
+ = new ArrayList<NonPkOIntegerFk>();
+
+ private List<CompositeIntegerVarcharPk> compositeIntegerVarcharPkList
+ = new ArrayList<CompositeIntegerVarcharPk>();
+
+ private List<CompositeIntegerVarcharFk> compositeIntegerVarcharFkList
+ = new ArrayList<CompositeIntegerVarcharFk>();
+
+ private List<CompositeNonpkFk> compositeNonpkFkList
+ = new ArrayList<CompositeNonpkFk>();
+
+ /**
+ * Creates the default Test data for the foreign key schema.
+ * The test data is filled as follows (p=primitive, o=object):
+ *
+ * pIntegerPk1
+ * - nonPkPIntegerFk1a
+ * - nonPkPIntegerFk1b
+ *
+ * pIntegerPk2
+ * - nonPkPIntegerFk2
+ * - nullablePIntegerFk2
+ * - requiredPIntegerFk2
+ *
+ * PIntegerPk3
+ * - nullablePIntegerFk3a
+ * - nullablePIntegerFk3b
+ * - requiredPIntegerFk3a
+ * - requiredPIntegerFk3b
+ *
+ * oIntegerPk1
+ * - nonPkOIntegerFk1a
+ * - nonPkOIntegerFk1b
+ *
+ * oIntegerPk2
+ * - nullableOIntegerFk2
+ * - requiredOIntegerFk2
+ * - nonPkOIntegerFk2
+ *
+ * oIntegerPk3
+ * - nullableOIntegerFk3a
+ * - nullableOIntegerFk3b
+ * - requiredOIntegerFk3a
+ * - requiredOIntegerFk3b
+ *
+ * null
+ * - nullableOIntegerFk4
+ *
+ * compositeIntegerVarcharPk1
+ * - compositeNonpkFk1a
+ * - compositeNonpkFk1b
+ *
+ * compositeIntegerVarcharPk2
+ * - compositeIntegerVarcharPk2
+ * - compositeNonpkFk2
+ *
+ * compositeIntegerVarcharPk3
+ * - compositeIntegerVarcharPk3a
+ * - compositeIntegerVarcharPk3b
+ *
+ * @return a new instance filled with the default test data.
+ *
+ * @throws TorqueException should not occur.
+ */
+ public static ForeignKeySchemaData getDefaultTestData()
+ throws TorqueException
+ {
+ ForeignKeySchemaData result = new ForeignKeySchemaData();
+
+ fillPIntegerPks(result);
+ fillNullablePIntegerPks(result);
+ fillRequiredPIntegerFks(result);
+ fillNonPkIntegerFks(result);
+
+ fillOIntegerPks(result);
+ fillNullableOIntegerFks(result);
+ fillRequiredOIntegerFks(result);
+ fillNonPkOIntegerFks(result);
+
+ fillCompositeIntegerVarcharPks(result);
+ fillCompositeIntegerVarcharFks(result);
+ fillCompositeNonpkFks(result);
+
+ return result;
+ }
+
+ private static void fillPIntegerPks(ForeignKeySchemaData result)
+ {
+ PIntegerPk pIntegerPk1 = new PIntegerPk();
+ pIntegerPk1.setName("pIntegerPk1");
+ pIntegerPk1.setIntegerColumn(3);
+ result.getPIntegerPkList().add(pIntegerPk1);
+
+ PIntegerPk pIntegerPk2 = new PIntegerPk();
+ pIntegerPk2.setName("pIntegerPk2");
+ pIntegerPk2.setIntegerColumn(2);
+ result.getPIntegerPkList().add(pIntegerPk2);
+
+ PIntegerPk pIntegerPk3 = new PIntegerPk();
+ pIntegerPk3.setName("pIntegerPk3");
+ pIntegerPk3.setIntegerColumn(1);
+ result.getPIntegerPkList().add(pIntegerPk3);
+ }
+
+ private static void fillNullablePIntegerPks(ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ NullablePIntegerFk nullablePIntegerFk2
+ = new NullablePIntegerFk();
+ nullablePIntegerFk2.setName(
+ "nullablePIntegerFk2");
+ result.getPIntegerPkList().get(1).addNullablePIntegerFk(
+ nullablePIntegerFk2);
+ result.getNullablePIntegerFkList().add(
+ nullablePIntegerFk2);
+
+ NullablePIntegerFk nullablePIntegerFk3a
+ = new NullablePIntegerFk();
+ nullablePIntegerFk3a.setName(
+ "nullablePIntegerFk3a");
+ result.getPIntegerPkList().get(2).addNullablePIntegerFk(
+ nullablePIntegerFk3a);
+ result.getNullablePIntegerFkList().add(
+ nullablePIntegerFk3a);
+
+ NullablePIntegerFk nullablePIntegerFk3b
+ = new NullablePIntegerFk();
+ nullablePIntegerFk3b.setName(
+ "nullablePIntegerFk3b");
+ result.getPIntegerPkList().get(2).addNullablePIntegerFk(
+ nullablePIntegerFk3b);
+ result.getNullablePIntegerFkList().add(
+ nullablePIntegerFk3b);
+ }
+
+ private static void fillRequiredPIntegerFks(ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ RequiredPIntegerFk requiredPIntegerFk2
+ = new RequiredPIntegerFk();
+ requiredPIntegerFk2.setName(
+ "requiredPIntegerFk2");
+ result.getPIntegerPkList().get(1).addRequiredPIntegerFk(
+ requiredPIntegerFk2);
+ result.getRequiredPIntegerFkList().add(
+ requiredPIntegerFk2);
+
+ RequiredPIntegerFk requiredPIntegerFk3a
+ = new RequiredPIntegerFk();
+ requiredPIntegerFk3a.setName(
+ "requiredPIntegerFk3a");
+ result.getPIntegerPkList().get(2).addRequiredPIntegerFk(
+ requiredPIntegerFk3a);
+ result.getRequiredPIntegerFkList().add(
+ requiredPIntegerFk3a);
+
+ RequiredPIntegerFk requiredPIntegerFk3b
+ = new RequiredPIntegerFk();
+ requiredPIntegerFk3b.setName(
+ "requiredPIntegerFk3b");
+ result.getPIntegerPkList().get(2).addRequiredPIntegerFk(
+ requiredPIntegerFk3b);
+ result.getRequiredPIntegerFkList().add(
+ requiredPIntegerFk3b);
+ }
+
+ private static void fillNonPkIntegerFks(ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ NonPkPIntegerFk nonPkPIntegerFk1a
+ = new NonPkPIntegerFk();
+ nonPkPIntegerFk1a.setName(
+ "nonPkPIntegerFk1a");
+ result.getPIntegerPkList().get(0).addNonPkPIntegerFk(
+ nonPkPIntegerFk1a);
+ result.getNonPkPIntegerFkList().add(
+ nonPkPIntegerFk1a);
+
+ NonPkPIntegerFk nonPkPIntegerFk1b
+ = new NonPkPIntegerFk();
+ nonPkPIntegerFk1b.setName(
+ "nonPkPIntegerFk1b");
+ result.getPIntegerPkList().get(0).addNonPkPIntegerFk(
+ nonPkPIntegerFk1b);
+ result.getNonPkPIntegerFkList().add(
+ nonPkPIntegerFk1b);
+
+ NonPkPIntegerFk nonPkPIntegerFk2
+ = new NonPkPIntegerFk();
+ nonPkPIntegerFk2.setName(
+ "nonPkPIntegerFk2");
+ result.getPIntegerPkList().get(1).addNonPkPIntegerFk(
+ nonPkPIntegerFk2);
+ result.getNonPkPIntegerFkList().add(
+ nonPkPIntegerFk2);
+ }
+
+ private static void fillOIntegerPks(ForeignKeySchemaData result)
+ {
+ OIntegerPk oIntegerPk1 = new OIntegerPk();
+ oIntegerPk1.setName("oIntegerPk1");
+ oIntegerPk1.setIntegerColumn(3);
+ result.getOIntegerPkList().add(oIntegerPk1);
+
+ OIntegerPk oIntegerPk2 = new OIntegerPk();
+ oIntegerPk2.setName("oIntegerPk2");
+ oIntegerPk2.setIntegerColumn(2);
+ result.getOIntegerPkList().add(oIntegerPk2);
+
+ OIntegerPk oIntegerPk3 = new OIntegerPk();
+ oIntegerPk3.setName("oIntegerPk3");
+ oIntegerPk3.setIntegerColumn(1);
+ result.getOIntegerPkList().add(oIntegerPk3);
+ }
+
+ private static void fillNullableOIntegerFks(ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ NullableOIntegerFk nullableOIntegerFk2
+ = new NullableOIntegerFk();
+ nullableOIntegerFk2.setName(
+ "nullableOIntegerFk2");
+ result.getOIntegerPkList().get(1).addNullableOIntegerFk(
+ nullableOIntegerFk2);
+ result.getNullableOIntegerFkList().add(
+ nullableOIntegerFk2);
+
+ NullableOIntegerFk nullableOIntegerFk3a
+ = new NullableOIntegerFk();
+ nullableOIntegerFk3a.setName(
+ "nullableOIntegerFk3a");
+ result.getOIntegerPkList().get(2).addNullableOIntegerFk(
+ nullableOIntegerFk3a);
+ result.getNullableOIntegerFkList().add(
+ nullableOIntegerFk3a);
+
+ NullableOIntegerFk nullableOIntegerFk3b
+ = new NullableOIntegerFk();
+ nullableOIntegerFk3b.setName(
+ "nullableOIntegerFk3b");
+ result.getOIntegerPkList().get(2).addNullableOIntegerFk(
+ nullableOIntegerFk3b);
+ result.getNullableOIntegerFkList().add(
+ nullableOIntegerFk3b);
+
+ NullableOIntegerFk nullableOIntegerFk4
+ = new NullableOIntegerFk();
+ nullableOIntegerFk4.setName(
+ "nullableOIntegerFk4");
+ result.getNullableOIntegerFkList().add(
+ nullableOIntegerFk4);
+ }
+
+ private static void fillRequiredOIntegerFks(ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ RequiredOIntegerFk requiredOIntegerFk2
+ = new RequiredOIntegerFk();
+ requiredOIntegerFk2.setName(
+ "requiredOIntegerFk2");
+ result.getOIntegerPkList().get(1).addRequiredOIntegerFk(
+ requiredOIntegerFk2);
+ result.getRequiredOIntegerFkList().add(
+ requiredOIntegerFk2);
+
+ RequiredOIntegerFk requiredOIntegerFk3a
+ = new RequiredOIntegerFk();
+ requiredOIntegerFk3a.setName(
+ "requiredOIntegerFk3a");
+ result.getOIntegerPkList().get(2).addRequiredOIntegerFk(
+ requiredOIntegerFk3a);
+ result.getRequiredOIntegerFkList().add(
+ requiredOIntegerFk3a);
+
+ RequiredOIntegerFk requiredOIntegerFk3b
+ = new RequiredOIntegerFk();
+ requiredOIntegerFk3b.setName(
+ "requiredOIntegerFk3b");
+ result.getOIntegerPkList().get(2).addRequiredOIntegerFk(
+ requiredOIntegerFk3b);
+ result.getRequiredOIntegerFkList().add(
+ requiredOIntegerFk3b);
+ }
+
+ private static void fillNonPkOIntegerFks(ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ NonPkOIntegerFk nonPkOIntegerFk1a
+ = new NonPkOIntegerFk();
+ nonPkOIntegerFk1a.setName(
+ "nonPkOIntegerFk1a");
+ result.getOIntegerPkList().get(0).addNonPkOIntegerFk(
+ nonPkOIntegerFk1a);
+ result.getNonPkOIntegerFkList().add(
+ nonPkOIntegerFk1a);
+
+ NonPkOIntegerFk nonPkOIntegerFk1b
+ = new NonPkOIntegerFk();
+ nonPkOIntegerFk1b.setName(
+ "nonPkOIntegerFk1b");
+ result.getOIntegerPkList().get(0).addNonPkOIntegerFk(
+ nonPkOIntegerFk1b);
+ result.getNonPkOIntegerFkList().add(
+ nonPkOIntegerFk1b);
+
+ NonPkOIntegerFk nonPkOIntegerFk2
+ = new NonPkOIntegerFk();
+ nonPkOIntegerFk2.setName(
+ "nonPkOIntegerFk2");
+ result.getOIntegerPkList().get(1).addNonPkOIntegerFk(
+ nonPkOIntegerFk2);
+ result.getNonPkOIntegerFkList().add(
+ nonPkOIntegerFk2);
+ }
+
+ private static void fillCompositeIntegerVarcharPks(
+ ForeignKeySchemaData result)
+ {
+ CompositeIntegerVarcharPk compositeIntegerVarcharPk1
+ = new CompositeIntegerVarcharPk();
+ compositeIntegerVarcharPk1.setName("compositeIntegerVarcharPk1");
+ compositeIntegerVarcharPk1.setId1(10);
+ compositeIntegerVarcharPk1.setId2("x");
+ compositeIntegerVarcharPk1.setIntegerColumn(100);
+ compositeIntegerVarcharPk1.setVarcharColumn("a");
+ result.getCompositeIntegerVarcharPkList().add(
+ compositeIntegerVarcharPk1);
+
+ CompositeIntegerVarcharPk compositeIntegerVarcharPk2
+ = new CompositeIntegerVarcharPk();
+ compositeIntegerVarcharPk2.setName("compositeIntegerVarcharPk2");
+ compositeIntegerVarcharPk2.setId1(10);
+ compositeIntegerVarcharPk2.setId2("y");
+ compositeIntegerVarcharPk2.setIntegerColumn(100);
+ compositeIntegerVarcharPk2.setVarcharColumn("b");
+ result.getCompositeIntegerVarcharPkList().add(
+ compositeIntegerVarcharPk2);
+
+ CompositeIntegerVarcharPk compositeIntegerVarcharPk3
+ = new CompositeIntegerVarcharPk();
+ compositeIntegerVarcharPk3.setName("compositeIntegerVarcharPk3");
+ compositeIntegerVarcharPk3.setId1(11);
+ compositeIntegerVarcharPk3.setId2("x");
+ compositeIntegerVarcharPk3.setIntegerColumn(200);
+ compositeIntegerVarcharPk3.setVarcharColumn("a");
+ result.getCompositeIntegerVarcharPkList().add(
+ compositeIntegerVarcharPk3);
+ }
+
+ private static void fillCompositeIntegerVarcharFks(
+ ForeignKeySchemaData result)
+ throws TorqueException
+ {
+ CompositeIntegerVarcharFk compositeIntegerVarcharFk2
+ = new CompositeIntegerVarcharFk();
+ compositeIntegerVarcharFk2.setName(
+ "compositeIntegerVarcharFk2");
+ result.getCompositeIntegerVarcharPkList().get(1)
+ .addCompositeIntegerVarcharFk(
+ compositeIntegerVarcharFk2);
+ result.getCompositeIntegerVarcharFkList().add(
+ compositeIntegerVarcharFk2);
+
+ CompositeIntegerVarcharFk compositeIntegerVarcharFk3a
+ = new CompositeIntegerVarcharFk();
+ compositeIntegerVarcharFk3a.setName(
+ "compositeIntegerVarcharFk3a");
+ result.getCompositeIntegerVarcharPkList().get(2)
+ .addCompositeIntegerVarcharFk(
+ compositeIntegerVarcharFk3a);
+ result.getCompositeIntegerVarcharFkList().add(
+ compositeIntegerVarcharFk3a);
+
+ CompositeIntegerVarcharFk compositeIntegerVarcharFk3b
+ = new CompositeIntegerVarcharFk();
+ compositeIntegerVarcharFk3b.setName(
+ "compositeIntegerVarcharFk3b");
+ result.getCompositeIntegerVarcharPkList().get(2)
+ .addCompositeIntegerVarcharFk(
+ compositeIntegerVarcharFk3b);
+ result.getCompositeIntegerVarcharFkList().add(
+ compositeIntegerVarcharFk3b);
+ }
+
+ private static void fillCompositeNonpkFks(
+ ForeignKeySchemaData result)
+ throws TorqueException
+{
+ CompositeNonpkFk compositeNonpkFk1a
+ = new CompositeNonpkFk();
+ compositeNonpkFk1a.setName(
+ "compositeNonpkFk1a");
+ result.getCompositeIntegerVarcharPkList().get(0)
+ .addCompositeNonpkFk(compositeNonpkFk1a);
+ result.getCompositeNonpkFkList().add(compositeNonpkFk1a);
+
+ CompositeNonpkFk compositeNonpkFk1b
+ = new CompositeNonpkFk();
+ compositeNonpkFk1b.setName(
+ "compositeNonpkFk1b");
+ result.getCompositeIntegerVarcharPkList().get(0)
+ .addCompositeNonpkFk(compositeNonpkFk1b);
+ result.getCompositeNonpkFkList().add(compositeNonpkFk1b);
+
+ CompositeNonpkFk compositeNonpkFk2
+ = new CompositeNonpkFk();
+ compositeNonpkFk2.setName(
+ "compositeNonpkFk2");
+ result.getCompositeIntegerVarcharPkList().get(1)
+ .addCompositeNonpkFk(compositeNonpkFk2);
+ result.getCompositeNonpkFkList().add(compositeNonpkFk2);
+}
+
+ public List<PIntegerPk> getPIntegerPkList()
+ {
+ return pIntegerPkList;
+ }
+
+ public List<NullablePIntegerFk> getNullablePIntegerFkList()
+ {
+ return nullablePIntegerFkList;
+ }
+
+ public List<RequiredPIntegerFk> getRequiredPIntegerFkList()
+ {
+ return requiredPIntegerFkList;
+ }
+
+
+ public List<NonPkPIntegerFk> getNonPkPIntegerFkList()
+ {
+ return nonPkPIntegerFkList;
+ }
+
+ public List<OIntegerPk> getOIntegerPkList()
+ {
+ return oIntegerPkList;
+ }
+
+ public List<NullableOIntegerFk> getNullableOIntegerFkList()
+ {
+ return nullableOIntegerFkList;
+ }
+
+ public List<RequiredOIntegerFk> getRequiredOIntegerFkList()
+ {
+ return requiredOIntegerFkList;
+ }
+
+ public List<NonPkOIntegerFk> getNonPkOIntegerFkList()
+ {
+ return nonPkOIntegerFkList;
+ }
+
+ public List<CompositeIntegerVarcharPk> getCompositeIntegerVarcharPkList()
+ {
+ return compositeIntegerVarcharPkList;
+ }
+
+ public List<CompositeIntegerVarcharFk> getCompositeIntegerVarcharFkList()
+ {
+ return compositeIntegerVarcharFkList;
+ }
+
+ public List<CompositeNonpkFk> getCompositeNonpkFkList()
+ {
+ return compositeNonpkFkList;
+ }
+
+ /**
+ * Saves all contained data if the data is new or was changed
+ * after the last save.
+ *
+ * @throws TorqueException If saving
+ */
+ public void save() throws TorqueException
+ {
+ for (PIntegerPk pIntegerPk : pIntegerPkList)
+ {
+ pIntegerPk.save();
+ }
+ for (OIntegerPk oIntegerPk : oIntegerPkList)
+ {
+ oIntegerPk.save();
+ }
+ for (CompositeIntegerVarcharPk compositeIntegerVarcharPk
+ : compositeIntegerVarcharPkList)
+ {
+ compositeIntegerVarcharPk.save();
+ }
+ }
+
+ /**
+ * Deletes all records in the foreign-key-schema's tables.
+ *
+ * @throws TorqueException if the tables could not be cleaned
+ */
+ public static void clearTablesInDatabase() throws TorqueException
+ {
+ Criteria criteria = new Criteria();
+ NullablePIntegerFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ RequiredPIntegerFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ NonPkPIntegerFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ NullableOIntegerFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ RequiredOIntegerFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ NonPkOIntegerFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ PIntegerPkPeer.doDelete(criteria);
+
+ criteria.clear();
+ OIntegerPkPeer.doDelete(criteria);
+
+ criteria.clear();
+ CompositeIntegerVarcharFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ CompositeNonpkFkPeer.doDelete(criteria);
+
+ criteria.clear();
+ CompositeIntegerVarcharPkPeer.doDelete(criteria);
+ }
+}
Added: db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java
URL: http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java?rev=1139590&view=auto
==============================================================================
--- db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java (added)
+++ db/torque/torque4/trunk/torque-test/src/test/java/org/apache/torque/generated/peer/DeleteTest.java Sat Jun 25 18:43:58 2011
@@ -0,0 +1,392 @@
+package org.apache.torque.generated.peer;
+
+/*
+ * 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.
+ */
+
+import java.math.BigDecimal;
+import java.util.List;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.torque.BaseRuntimeTestCase;
+import org.apache.torque.ForeignKeySchemaData;
+import org.apache.torque.TorqueException;
+import org.apache.torque.om.NumberKey;
+import org.apache.torque.om.ObjectKey;
+import org.apache.torque.test.NullableOIntegerFk;
+import org.apache.torque.test.NullableOIntegerFkPeer;
+import org.apache.torque.test.OIntegerPk;
+import org.apache.torque.test.OIntegerPkPeer;
+import org.apache.torque.util.Criteria;
+import org.apache.torque.util.SqlEnum;
+
+/**
+ * Tests the delete methods in the generated Peer classes.
+ *
+ * @version $Id: DataTest.java 1103512 2011-05-15 19:37:41Z tfischer $
+ */
+public class DeleteTest extends BaseRuntimeTestCase
+{
+ private static Log log = LogFactory.getLog(DeleteTest.class);
+
+ /**
+ * Creates a new instance.
+ */
+ public DeleteTest(String name)
+ {
+ super(name);
+ }
+
+ /**
+ * Tests the delete(DatabaseObject) method.
+ *
+ * @throws Exception if a database error occurs.
+ */
+ public void testDeleteByObject() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ NullableOIntegerFk toDelete
+ = testData.getNullableOIntegerFkList().get(0);
+ int preDeleteId = toDelete.getId();
+
+ // check that three entries are in the NullableOIntegerFk table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ assertTrue(nullableOIntegerFkList.contains(toDelete));
+
+ // call delete method and check result.
+ int deleted = NullableOIntegerFkPeer.doDelete(toDelete);
+ assertEquals(1, deleted);
+ assertEquals(preDeleteId, toDelete.getId().intValue());
+
+ // check that there are two entries remaining in the database
+ // and the toDelete object was deleted
+ nullableOIntegerFkList = getNullableOIntegerFkList();
+ assertEquals(2, nullableOIntegerFkList.size());
+ assertFalse(nullableOIntegerFkList.contains(toDelete));
+
+ // check that no associated object has been deleted
+ List<OIntegerPk> oIntegerPkList
+ = OIntegerPkPeer.doSelect(new Criteria());
+ assertEquals(3, oIntegerPkList.size());
+
+ }
+
+ /**
+ * Tests the delete(DatabaseObject) method if the object to delete
+ * does not exist in the database.
+ *
+ * @throws Exception if a database error occurs.
+ */
+ public void testDeleteByObjectNoMatch() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ NullableOIntegerFk toDelete
+ = testData.getNullableOIntegerFkList().get(0);
+ toDelete.setId(toDelete.getId() - 1);
+ int preDeleteId = toDelete.getId();
+
+ // check that three entries are in the NullableOIntegerFk table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ assertFalse(nullableOIntegerFkList.contains(toDelete));
+
+ // call delete method and check result.
+ int deleted = NullableOIntegerFkPeer.doDelete(toDelete);
+ assertEquals(0, deleted);
+ assertEquals(preDeleteId, toDelete.getId().intValue());
+
+ // check that all entries remain in the database
+ nullableOIntegerFkList = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ }
+
+ /**
+ * Tests the delete(ObjectKey) method.
+ *
+ * @throws Exception if a database error occurs.
+ */
+ public void testDeleteByPrimaryKey() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ NullableOIntegerFk toDelete
+ = testData.getNullableOIntegerFkList().get(0);
+ int preDeleteId = toDelete.getId();
+
+ // check that three entries are in the NullableOIntegerFk table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ assertTrue(nullableOIntegerFkList.contains(toDelete));
+
+ // calculate and check primary key
+ ObjectKey primaryKey = toDelete.getPrimaryKey();
+ assertTrue(primaryKey instanceof NumberKey);
+ assertEquals(new BigDecimal(preDeleteId), primaryKey.getValue());
+
+ // call delete method and check result.
+ int deleted = NullableOIntegerFkPeer.doDelete(primaryKey);
+ assertEquals(1, deleted);
+ assertEquals(preDeleteId, toDelete.getId().intValue());
+
+ // check that there are two entries remaining in the database
+ // and the toDelete object was deleted
+ nullableOIntegerFkList = getNullableOIntegerFkList();
+ assertEquals(2, nullableOIntegerFkList.size());
+ assertFalse(nullableOIntegerFkList.contains(toDelete));
+
+ // check that no associated object has been deleted
+ List<OIntegerPk> oIntegerPkList
+ = OIntegerPkPeer.doSelect(new Criteria());
+ assertEquals(3, oIntegerPkList.size());
+
+ }
+
+ /**
+ * Tests the delete(ObjectKey) method if the object to delete
+ * does not exist in the database.
+ *
+ * @throws Exception if a database error occurs.
+ */
+ public void testDeleteByPrimaryKeyNoMatch() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ NullableOIntegerFk toDelete
+ = testData.getNullableOIntegerFkList().get(0);
+ toDelete.setId(toDelete.getId() - 1);
+ int preDeleteId = toDelete.getId();
+
+ // check that three entries are in the NullableOIntegerFk table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ assertFalse(nullableOIntegerFkList.contains(toDelete));
+
+ // calculate and check primary key
+ ObjectKey primaryKey = toDelete.getPrimaryKey();
+ assertTrue(primaryKey instanceof NumberKey);
+ assertEquals(new BigDecimal(preDeleteId), primaryKey.getValue());
+
+ // call delete method and check result.
+ int deleted = NullableOIntegerFkPeer.doDelete(primaryKey);
+ assertEquals(0, deleted);
+ assertEquals(preDeleteId, toDelete.getId().intValue());
+
+ // check that all entries remain in the database
+ nullableOIntegerFkList = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ }
+
+ /**
+ * Checks that rows can be deleted by a Criteria.
+ *
+ * @throws Exception if a database error occurs
+ */
+ public void testDeleteByCriteria() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ // call delete method
+ Criteria criteria = new Criteria();
+ criteria.and(
+ NullableOIntegerFkPeer.ID,
+ testData.getNullableOIntegerFkList().get(1).getId(),
+ Criteria.LESS_EQUAL);
+ int deletedCount = NullableOIntegerFkPeer.doDelete(criteria);
+ assertEquals(2, deletedCount);
+
+ // check that only the last entry remains in the NullableOIntegerFk
+ // table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(1, nullableOIntegerFkList.size());
+ assertEquals(
+ testData.getNullableOIntegerFkList().get(2).getId(),
+ nullableOIntegerFkList.get(0).getId());
+
+ // check that no associated object has been deleted
+ List<OIntegerPk> oIntegerPkList
+ = OIntegerPkPeer.doSelect(new Criteria());
+ assertEquals(3, oIntegerPkList.size());
+ }
+
+ /**
+ * Checks that a non-matching Criteria does not delete any rows.
+ *
+ * @throws Exception if a database error occurs
+ */
+ public void testDeleteByCriteriaNoMatch() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ // call delete method
+ Criteria criteria = new Criteria();
+ criteria.and(NullableOIntegerFkPeer.NAME, "noMatch");
+ int deletedCount = NullableOIntegerFkPeer.doDelete(criteria);
+ assertEquals(0, deletedCount);
+
+ // check that three entries remain in the NullableOIntegerFk table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(3, nullableOIntegerFkList.size());
+ }
+
+ /**
+ * Checks that delete fails if a column from another table is added.
+ * See TORQUE-113
+ *
+ * @throws Exception if a database error occurs
+ */
+ public void testDeleteWithOtherTableColumn() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ // call delete method
+ Criteria criteria = new Criteria();
+ criteria.and(
+ OIntegerPkPeer.ID,
+ testData.getOIntegerPkList().get(0).getId());
+ try
+ {
+ NullableOIntegerFkPeer.doDelete(criteria);
+ fail("Exception should be thrown");
+ }
+ catch (TorqueException e)
+ {
+ // expected
+ }
+ }
+
+ /**
+ * Checks that delete by criteria using a join works correctly.
+ * This test accepts two results: Either an exception is thrown
+ * (i.e the database does not support join clauses in delete statements)
+ * or deletion works correctly.
+ *
+ * @throws Exception if a database error occurs
+ */
+ public void testDeleteByCriteriaWithJoins() throws Exception
+ {
+ ForeignKeySchemaData.clearTablesInDatabase();
+ ForeignKeySchemaData testData
+ = ForeignKeySchemaData.getDefaultTestData();
+ testData.save();
+
+ // call delete method
+ Criteria criteria = new Criteria();
+ criteria.addJoin(
+ NullableOIntegerFkPeer.FK,
+ OIntegerPkPeer.ID,
+ SqlEnum.INNER_JOIN);
+ criteria.and(
+ OIntegerPkPeer.ID,
+ testData.getOIntegerPkList().get(0).getId());
+ try
+ {
+ int deletedCount = NullableOIntegerFkPeer.doDelete(criteria);
+ assertEquals(1, deletedCount);
+ }
+ catch (TorqueException e)
+ {
+ log.debug("Delete by joins does not work for this database.");
+ return;
+ }
+
+ // check that the last two entries remains in the NullableOIntegerFk
+ // table
+ List<NullableOIntegerFk> nullableOIntegerFkList
+ = getNullableOIntegerFkList();
+ assertEquals(2, nullableOIntegerFkList.size());
+ assertTrue(nullableOIntegerFkList.contains(
+ testData.getNullableOIntegerFkList().get(1)));
+ assertTrue(nullableOIntegerFkList.contains(
+ testData.getNullableOIntegerFkList().get(2)));
+
+ // check that no associated object has been deleted
+ List<OIntegerPk> oIntegerPkList
+ = OIntegerPkPeer.doSelect(new Criteria());
+ assertEquals(3, oIntegerPkList.size());
+ }
+
+ /**
+ * Checks that delete by criteria throws an exception if a non-matching
+ * condition is added.
+ *
+ * @throws Exception if a database error occurs
+ */
+ public void testDeleteByCriteriaWithWrongTable() throws Exception
+ {
+ Criteria criteria = new Criteria();
+ criteria.and(OIntegerPkPeer.ID, 1);
+ try
+ {
+ NullableOIntegerFkPeer.doDelete(criteria);
+ fail("Database error expected");
+ }
+ catch (TorqueException e)
+ {
+ // expected
+ return;
+ }
+ }
+
+ /**
+ * Reads all NullableOIntegerFk rows from the database.
+ *
+ * @return the NullableOIntegerFk rows
+ *
+ * @throws TorqueException if deleting fails.
+ */
+ private List<NullableOIntegerFk> getNullableOIntegerFkList()
+ throws TorqueException
+ {
+ Criteria criteria = new Criteria();
+ criteria.addAscendingOrderByColumn(NullableOIntegerFkPeer.ID);
+ List<NullableOIntegerFk> result
+ = NullableOIntegerFkPeer.doSelect(criteria);
+ return result;
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org