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]