|
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;
-@javax.persistence.Entity
+@javax.persistence.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.
|