Author: arminw
Date: Mon Jan 16 15:58:22 2006
New Revision: 369606

URL: http://svn.apache.org/viewcvs?rev=369606&view=rev
Log:
add new test

Modified:
    db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml
    
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/CollectionTest2.java
    
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_reference.xml

Modified: db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml?rev=369606&r1=369605&r2=369606&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/schema/ojbtest-schema.xml Mon Jan 16 
15:58:22 2006
@@ -1122,6 +1122,15 @@
             <reference local="FK_PRO_ID" foreign="PRO_ID"/>
         </foreign-key>
     </table>
+    <table name="COL_2_SUB_PROJECT_2">
+        <column name="SUB_ID" required="true" primaryKey="true" 
type="INTEGER"/>
+        <column name="SUB_DATE" required="true" primaryKey="true" 
type="TIMESTAMP"/>
+        <column name="NAME" type="VARCHAR" size="150"/>
+        <column name="FK_PRO_ID" type="INTEGER"/>
+        <foreign-key foreignTable="COL_2_PROJECT">
+            <reference local="FK_PRO_ID" foreign="PRO_ID"/>
+        </foreign-key>
+    </table>
     <table name="COL_2_DEVELOPER">
         <column name="DEV_ID" required="true" primaryKey="true" 
type="INTEGER"/>
         <column name="NAME" type="VARCHAR" size="150"/>

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/CollectionTest2.java
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/CollectionTest2.java?rev=369606&r1=369605&r2=369606&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/CollectionTest2.java
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/CollectionTest2.java
 Mon Jan 16 15:58:22 2006
@@ -5,6 +5,7 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
+import java.sql.Timestamp;
 
 import org.apache.commons.lang.SerializationUtils;
 import org.apache.ojb.broker.metadata.ClassDescriptor;
@@ -45,6 +46,46 @@
         super.tearDown();
     }
 
+    public void testQueryJoinOneToN() throws Exception
+    {
+        String name = "testQueryJoinOneToN_" + System.currentTimeMillis();
+
+        changeAutoSetting(Project.class, "subProjects", true, true, false, 
false);
+        changeAutoSetting(Project.class, "subProject_2s", true, true, false, 
false);
+        changeAutoSetting(Project.class, "developers", true, true, false, 
false);
+        changeAutoSetting(SubProject.class, "project", true, true, false, 
false);
+
+        Project project = new Project(name, null, null);
+
+        Timestamp t1 = new Timestamp(System.currentTimeMillis());
+        Timestamp t2 = new Timestamp(t1.getTime() + 1);
+        broker.beginTransaction();
+        // first store the project to assign the PK
+        broker.store(project);
+
+        // now we can use the project id as part of the compounded 
SubProject_2 PK (id, date)
+        SubProject_2 sub_1 = new SubProject_2(project.getId(), t1, name + 
"_dvd", project);
+        SubProject_2 sub_2 = new SubProject_2(project.getId(), t2, name + 
"_book", project);
+        project.addSubProject_2(sub_1);
+        project.addSubProject_2(sub_2);
+        broker.store(project);
+
+        broker.commitTransaction();
+
+        broker.beginTransaction();
+        broker.clearCache();
+        Criteria criteria = new Criteria();
+        criteria.addBetween("subProject_2s.date", new Timestamp(t1.getTime() - 
1), new Timestamp(t2.getTime() + 1));
+        Query q = QueryFactory.newQuery(Project.class, criteria, true);
+        Collection projects = broker.getCollectionByQuery(q);
+        assertNotNull(projects);
+        assertEquals(1, projects.size());
+        Project newProject = (Project) projects.iterator().next();
+        assertNotNull(newProject.getSubProjects());
+        assertEquals(2, newProject.getSubProject_2s().size());
+    }
+
+
     public void testAutoUpdateDeleteSettings()
     {
         changeAutoSetting(Project.class, "subProjects", false, false, false, 
false);
@@ -720,6 +761,7 @@
         private Integer id;
         private String name;
         private List subProjects;
+        private List subProject_2s;
         private Collection developers;
 
         public Project()
@@ -763,6 +805,34 @@
             this.subProjects = subProjects;
         }
 
+        public void addSubProject(SubProjectIF subProject)
+        {
+            if(subProjects == null)
+            {
+                subProjects = new ArrayList();
+            }
+            subProjects.add(subProject);
+        }
+
+        public List getSubProject_2s()
+        {
+            return subProject_2s;
+        }
+
+        public void setSubProject_2s(List subProject_2s)
+        {
+            this.subProject_2s = subProject_2s;
+        }
+
+        public void addSubProject_2(SubProject_2 subProject2)
+        {
+            if(subProject_2s == null)
+            {
+                subProject_2s = new ArrayList();
+            }
+            subProject_2s.add(subProject2);
+        }
+
         public Collection getDevelopers()
         {
             return developers;
@@ -782,6 +852,7 @@
         public void setName(String name);
         public List getSubProjects();
         public void setSubProjects(List subProjects);
+        public void addSubProject(SubProjectIF subProject);
         public Collection getDevelopers();
         public void setDevelopers(Collection developers);
     }
@@ -810,6 +881,72 @@
         public void setId(Integer id)
         {
             this.id = id;
+        }
+
+        public String getName()
+        {
+            return name;
+        }
+
+        public void setName(String name)
+        {
+            this.name = name;
+        }
+
+        public ProjectIF getProject()
+        {
+            return project;
+        }
+
+        public void setProject(ProjectIF project)
+        {
+            this.project = project;
+        }
+    }
+
+    public static class SubProject_2
+    {
+        private Integer id;
+        private Timestamp date;
+        private String name;
+        private ProjectIF project;
+
+        public SubProject_2()
+        {
+        }
+
+        public SubProject_2(Integer id, Timestamp date)
+        {
+            this.id = id;
+            this.date = date;
+        }
+
+        public SubProject_2(Integer id, Timestamp date, String name, ProjectIF 
project)
+        {
+            this.id = id;
+            this.date = date;
+            this.name = name;
+            this.project = project;
+        }
+
+        public Integer getId()
+        {
+            return id;
+        }
+
+        public void setId(Integer id)
+        {
+            this.id = id;
+        }
+
+        public Timestamp getDate()
+        {
+            return date;
+        }
+
+        public void setDate(Timestamp date)
+        {
+            this.date = date;
         }
 
         public String getName()

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_reference.xml
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_reference.xml?rev=369606&r1=369605&r2=369606&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_reference.xml
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/repository_junit_reference.xml
 Mon Jan 16 15:58:22 2006
@@ -1765,6 +1765,17 @@
         </collection-descriptor>
 
         <collection-descriptor
+            name="subProject_2s"
+            
element-class-ref="org.apache.ojb.broker.CollectionTest2$SubProject_2"
+            proxy="false"
+            auto-retrieve="false"
+            auto-update="none"
+            auto-delete="none"
+        >
+            <inverse-foreignkey field-ref="id"/>
+        </collection-descriptor>
+
+        <collection-descriptor
             name="developers"
             element-class-ref="org.apache.ojb.broker.CollectionTest2$Developer"
             proxy="false"
@@ -1787,6 +1798,52 @@
             jdbc-type="INTEGER"
             primarykey="true"
             autoincrement="true"
+        />
+
+        <field-descriptor
+            name="name"
+            column="NAME"
+            jdbc-type="VARCHAR"
+        />
+
+        <field-descriptor
+          name="projectId"
+          column="FK_PRO_ID"
+          jdbc-type="INTEGER"
+          access="anonymous"
+       />
+
+       <reference-descriptor
+          name="project"
+          class-ref="org.apache.ojb.broker.CollectionTest2$Project"
+          auto-retrieve="false"
+          auto-update="none"
+          auto-delete="none"
+          proxy="false"
+       >
+          <foreignkey field-ref="projectId"/>
+       </reference-descriptor>
+    </class-descriptor>
+
+    <class-descriptor
+        class="org.apache.ojb.broker.CollectionTest2$SubProject_2"
+        table="COL_2_SUB_PROJECT_2"
+    >
+
+        <field-descriptor
+            name="id"
+            column="SUB_ID"
+            jdbc-type="INTEGER"
+            primarykey="true"
+            autoincrement="false"
+        />
+
+        <field-descriptor
+            name="date"
+            column="SUB_DATE"
+            jdbc-type="TIMESTAMP"
+            primarykey="true"
+            autoincrement="false"
         />
 
         <field-descriptor



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to