From: <ro...@us...> - 2009-03-09 13:14:12
|
Revision: 66 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=66&view=rev Author: roekens Date: 2009-03-09 13:13:44 +0000 (Mon, 09 Mar 2009) Log Message: ----------- - several bugfixes regarding jpa annotations, such as inheritance handling, column names, etc. - introduction of first jpa test cases for entities Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-09 13:13:44 UTC (rev 66) @@ -21,6 +21,7 @@ public static final String PARENTS = "parents"; public static final String MEMBERS = "members"; public static final String TYPE = "type"; + public static final String ENTITY = "entity"; //entity ids public static final String COURSE_ID = "courseId"; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-09 13:13:44 UTC (rev 66) @@ -1,7 +1,7 @@ package de.campussource.cse.cdmm.dao; -import com.sun.xml.internal.stream.Entity; import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Entity; public class EntityDao extends DAOJPA<Entity> { Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @@ -16,8 +18,9 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.ACCOUNT) @Table(name = Constants.TABLENAME_ACCOUNT) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={ Constants.GROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) public class Account extends de.campussource.cse.cdmm.domain.Entity{ @@ -28,7 +31,7 @@ @ManyToMany @JoinTable( name = Constants.TABLENAME_GROUP2ACCOUNT, - joinColumns={@JoinColumn(name=Constants.COLUMNNAME_GROUP_ID)}, + joinColumns={@JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID)}, inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_GROUP_ID)}) private List<Group> groups; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @@ -16,7 +18,8 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.CATEGORY) +@Inheritance(strategy=InheritanceType.JOINED) @Table(name = Constants.TABLENAME_CATEGORY) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.PROPERTY_PARENTS, Constants.PROPERTY_CHILDREN, Constants.PROPERTY_COURSES}, namespace=Constants.NAMESPACE_DATATYPES) Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @@ -20,8 +22,9 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.COURSE) @Table(name = Constants.TABLENAME_COURSE) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={ Constants.CATEGORIES, Constants.PARENT, Constants.WORKGROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) public class Course extends de.campussource.cse.cdmm.domain.Entity{ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-09 13:13:44 UTC (rev 66) @@ -7,6 +7,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.Transient; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; @@ -22,13 +24,14 @@ import de.campussource.cse.cdmm.Constants; import de.campussource.cse.cdmm.IdAdapter; -...@ja...rsistence.Entity +...@ja...rsistence.Entity(name=Constants.ENTITY) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.ID, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long id; @Transient Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; @@ -16,8 +18,9 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.GROUP) @Table(name = Constants.TABLENAME_GROUP) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.MEMBERS}, namespace=Constants.NAMESPACE_DATATYPES) public class Group extends Account{ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-09 13:13:44 UTC (rev 66) @@ -2,6 +2,10 @@ import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @@ -13,21 +17,23 @@ import de.campussource.cse.cdmm.Constants; import de.campussource.cse.cdmm.domain.RoleType; -@Entity +@Entity(name=Constants.ROLE) @Table(name = Constants.TABLENAME_ROLE) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.TYPE, Constants.ACCOUNT, Constants.COURSE}, namespace=Constants.NAMESPACE_DATATYPES) public class Role extends de.campussource.cse.cdmm.domain.Entity{ - @Column(name=Constants.COLUMNNAME_ROLE_TYPE) + @Column(name=Constants.COLUMNNAME_ROLE_TYPE, nullable=false, insertable=true, updatable=true) + @Enumerated(EnumType.ORDINAL) private RoleType type; - @ManyToOne - @JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID) + @ManyToOne(optional=false) + @JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID, nullable=false) private Account account; - @ManyToOne - @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID) + @ManyToOne(optional=false) + @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID, nullable=false) private Course course; public Role(){ Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -0,0 +1,67 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.AccountDao; +import de.campussource.cse.cdmm.domain.Account; + +public class AccountDaoTest extends AbstractPersistentUnitTest { + private static Long currentTimeMillis = System.currentTimeMillis(); + + private AccountDao dao; + private Account account; + + @Before + public void setUp() { + account = newAccount(); + dao = new AccountDao(); + autowireByType(dao); + txBegin(); + } + + @Test + public void testPersistAccount() { + dao.persist(account); + assertNotNull(account.getId()); + txCommit(); + } + + + @Test + public void testFindAccount() { + dao.persist(account); + assertNotNull(account.getId()); + commitAndBeginTx(); + Account acid = dao.find(account.getId()); + assertEquals(account, acid); + } + + @Test + public void testRemoveAccount() { + dao.persist(account); + assertNotNull(account.getId()); + commitAndBeginTx(); + dao.remove(account); + commitAndBeginTx(); + assertNull(dao.find(account.getId())); + } + + @Test + public void testDoNotFindById() { + Account foundAccount = dao.find(0L); + assertNull(foundAccount); + } + + private Account newAccount() { + return new Account(createUniqueId()); + } + + private Long createUniqueId(){ + return currentTimeMillis++; + } +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -4,8 +4,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import javax.persistence.RollbackException; - import org.junit.Before; import org.junit.Test; @@ -55,10 +53,10 @@ assertNull(dao.find(category.getId())); } - @Test(expected=javax.persistence.NoResultException.class) + @Test public void testDoNotFindById() { - //FIXME why no fail? - //assertNull(dao.find(1L)); + Category foundCategory = dao.find(0L); + assertNull(foundCategory); } private Category newCategory() { Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -0,0 +1,69 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.CourseDao; +import de.campussource.cse.cdmm.domain.Course; + +public class CourseDaoTest extends AbstractPersistentUnitTest { + + private static Long currentTimeMillis = System.currentTimeMillis(); + + private CourseDao dao; + private Course course; + + @Before + public void setUp() { + course = newCourse(); + dao = new CourseDao(); + autowireByType(dao); + txBegin(); + } + + @Test + public void testPersistCourse() { + dao.persist(course); + assertNotNull(course.getId()); + txCommit(); + } + + + @Test + public void testFindCourse() { + dao.persist(course); + assertNotNull(course.getId()); + commitAndBeginTx(); + Course coid = dao.find(course.getId()); + assertEquals(course, coid); + } + + @Test + public void testRemoveCategory() { + dao.persist(course); + assertNotNull(course.getId()); + commitAndBeginTx(); + dao.remove(course); + commitAndBeginTx(); + assertNull(dao.find(course.getId())); + } + + @Test + public void testDoNotFindById() { + Course foundCourse = dao.find(0L); + assertNull(foundCourse); + } + + private Course newCourse() { + return new Course(createUniqueId()); + } + + private Long createUniqueId(){ + return currentTimeMillis++; + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -0,0 +1,92 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.AccountDao; +import de.campussource.cse.cdmm.dao.CourseDao; +import de.campussource.cse.cdmm.dao.RoleDao; +import de.campussource.cse.cdmm.domain.Account; +import de.campussource.cse.cdmm.domain.Course; +import de.campussource.cse.cdmm.domain.Role; +import de.campussource.cse.cdmm.domain.RoleType; + +public class RoleDaoTest extends AbstractPersistentUnitTest { + private static Long currentTimeMillis = System.currentTimeMillis(); + + private RoleDao dao; + private Role role; + + private CourseDao courseDao; + private Course course; + + private AccountDao accountDao; + private Account account; + + @Before + public void setUp() { + //set up daos + dao = new RoleDao(); + courseDao = new CourseDao(); + accountDao = new AccountDao(); + autowireByType(dao); + autowireByType(courseDao); + autowireByType(accountDao); + //create role object with needed dependencies + course = new Course(createUniqueId()); + account = new Account(createUniqueId()); + courseDao.persist(course); + accountDao.persist(account); + role = newRole(); + txBegin(); + } + + @Test + public void testPersistRole() { + dao.persist(role); + assertNotNull(role.getId()); + txCommit(); + } + + + @Test + public void testFindRole() { + dao.persist(role); + assertNotNull(role.getId()); + commitAndBeginTx(); + Role roid = dao.find(role.getId()); + assertEquals(role, roid); + } + + @Test + public void testRemoveRole() { + dao.persist(role); + assertNotNull(role.getId()); + commitAndBeginTx(); + dao.remove(role); + commitAndBeginTx(); + assertNull(dao.find(role.getId())); + } + + @Test + public void testDoNotFindById() { + Role foundRole= dao.find(0L); + assertNull(foundRole); + } + + private Role newRole() { + Role role = new Role(createUniqueId()); + role.setAccount(account); + role.setCourse(course); + role.setType(RoleType.ASSISTANT); + return role; + } + + private Long createUniqueId(){ + return currentTimeMillis++; + } +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |