From: <ro...@us...> - 2009-03-24 13:56:31
|
Revision: 98 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=98&view=rev Author: roekens Date: 2009-03-24 13:52:47 +0000 (Tue, 24 Mar 2009) Log Message: ----------- Massive changes: - introduction of exceptions for cdmm project - several bugfixes - many added tests to improve code coverage Modified Paths: -------------- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java Added Paths: ----------- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerException.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdNotFoundException.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingAttributeException.java trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingParameterException.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CSEMessageTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DaoTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerExceptionTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DomainTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/IdNotFoundExceptionTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/MissingAttributeExceptionTest.java trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/MissingParameterExceptionTest.java Removed Paths: ------------- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java 2009-03-24 13:52:47 UTC (rev 98) @@ -10,52 +10,42 @@ @Remote public interface DataModelManager { - public CSEMessage saveCategory(Category category); + public CSEMessage saveCategory(Category category) throws DataModelManagerException; - public CSEMessage saveCategoryHierarchy(Category category); + public CSEMessage deleteCategory(Category category) throws DataModelManagerException; - public CSEMessage deleteCategory(Category category); + public CSEMessage retrieveCategory(long categoryId) throws DataModelManagerException; - public CSEMessage retrieveCategoryHierarchy(long categoryId); - public CSEMessage retrieveCategory(long categoryId); + public CSEMessage saveCourse(Course course) throws DataModelManagerException; + public CSEMessage deleteCourse(Course course) throws DataModelManagerException; - public CSEMessage saveCourse(Course course); - - public CSEMessage saveCourseHierarchy(Course course); - - public CSEMessage deleteCourse(Course course); - - public CSEMessage retrieveCourse(long courseId); + public CSEMessage retrieveCourse(long courseId) throws DataModelManagerException; - public CSEMessage retrieveCourseHierarchy(long courseId); + public CSEMessage saveRole(Role role) throws DataModelManagerException; + public CSEMessage deleteRole(Role role) throws DataModelManagerException; + public CSEMessage retrieveRole(long roleId) throws DataModelManagerException; - public CSEMessage saveRole(Role role); + public CSEMessage retrieveRole(long accountId, long courseId) throws DataModelManagerException; - public CSEMessage deleteRole(Role role); - public CSEMessage retrieveRole(long roleId); - public CSEMessage retrieveRole(long accountId, long courseId); + public CSEMessage saveAccount(Account account) throws DataModelManagerException; + public CSEMessage deleteAccount(Account account) throws DataModelManagerException; + public CSEMessage retrieveAccount(long accountId) throws DataModelManagerException; - public CSEMessage saveAccount(Account account); - public CSEMessage deleteAccount(Account account); + public CSEMessage retrieveGroup(long groupId) throws DataModelManagerException; - public CSEMessage retrieveAccount(long accountId); + public CSEMessage saveGroup(Group group) throws DataModelManagerException; + public CSEMessage deleteGroup(Group group) throws DataModelManagerException; - public CSEMessage retrieveGroup(long groupId); - public CSEMessage saveGroup(Group group); - - public CSEMessage deleteGroup(Group group); - - } Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-03-24 13:52:47 UTC (rev 98) @@ -1,11 +1,14 @@ package de.campussource.cse.cdmm; -import java.util.ArrayList; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import org.apache.commons.lang.Validate; + import de.campussource.cse.cdmm.dao.*; import de.campussource.cse.cdmm.domain.Account; import de.campussource.cse.cdmm.domain.Category; @@ -26,16 +29,13 @@ private CourseDao courseDao; @EJB - private EntityDao entityDao; - - @EJB private GroupDao groupDao; @EJB private RoleDao roleDao; @Override - public CSEMessage deleteAccount(Account account) { + public CSEMessage deleteAccount(Account account) throws DataModelManagerException { if (account.getGroups()!=null && account.getGroups().size()!=0){ for (Group group : account.getGroups()){ List<Account> members = group.getMembers(); @@ -49,19 +49,19 @@ } @Override - public CSEMessage deleteCategory(Category category) { + public CSEMessage deleteCategory(Category category) throws DataModelManagerException { categoryDao.remove(category); return null; } @Override - public CSEMessage deleteCourse(Course course) { + public CSEMessage deleteCourse(Course course) throws DataModelManagerException { courseDao.remove(course); return null; } @Override - public CSEMessage deleteGroup(Group group) { + public CSEMessage deleteGroup(Group group) throws DataModelManagerException { while (group.getMembers()!=null && group.getMembers().size()!=0){ Account account = group.getMembers().get(0); account.removeFromGroup(group); @@ -72,13 +72,13 @@ } @Override - public CSEMessage deleteRole(Role role) { + public CSEMessage deleteRole(Role role) throws DataModelManagerException { roleDao.remove(role); return null; } @Override - public CSEMessage retrieveAccount(long accountId) { + public CSEMessage retrieveAccount(long accountId) throws DataModelManagerException { Account account = accountDao.find(accountId); CSEMessage csem = new CSEMessageImpl(); csem.addEntity(account); @@ -86,7 +86,7 @@ } @Override - public CSEMessage retrieveCategory(long categoryId) { + public CSEMessage retrieveCategory(long categoryId) throws DataModelManagerException { Category category = categoryDao.find(categoryId); CSEMessage csem = new CSEMessageImpl(); csem.addEntity(category); @@ -95,15 +95,7 @@ } @Override - public CSEMessage retrieveCategoryHierarchy(long categoryId) { - Category category = categoryDao.find(categoryId); - CSEMessage csem = new CSEMessageImpl(); - csem.addEntity(category); - return csem; - } - - @Override - public CSEMessage retrieveCourse(long courseId) { + public CSEMessage retrieveCourse(long courseId) throws DataModelManagerException { //TODO cut workgroups or define new method in dao Course course = courseDao.find(courseId); CSEMessage csem = new CSEMessageImpl(); @@ -112,15 +104,7 @@ } @Override - public CSEMessage retrieveCourseHierarchy(long courseId) { - Course course = courseDao.find(courseId); - CSEMessage csem = new CSEMessageImpl(); - csem.addEntity(course); - return csem; - } - - @Override - public CSEMessage retrieveGroup(long groupId) { + public CSEMessage retrieveGroup(long groupId) throws DataModelManagerException { Group group = groupDao.find(groupId); CSEMessage csem = new CSEMessageImpl(); csem.addEntity(group); @@ -128,7 +112,7 @@ } @Override - public CSEMessage retrieveRole(long roleId) { + public CSEMessage retrieveRole(long roleId) throws DataModelManagerException { Role role = roleDao.find(roleId); CSEMessage csem = new CSEMessageImpl(); csem.addEntity(role); @@ -136,50 +120,42 @@ } @Override - public CSEMessage retrieveRole(long accountId, long courseId) { - //TODO define new dao method - //Role role = roleDao. - return null; + @TransactionAttribute(TransactionAttributeType.REQUIRED) + public CSEMessage retrieveRole(long accountId, long courseId) throws DataModelManagerException { + Validate.notNull(accountId,"DataModelManagerBean.retrieveRole: Parameter accountId is mandatory."); + Validate.notNull(courseId,"DataModelManagerBean.retrieveRole: Parameter courseId is mandatory."); + Role role = roleDao.retrieveRole(accountId, courseId); + CSEMessage csem = new CSEMessageImpl(); + csem.addEntity(role); + return csem; } @Override - public CSEMessage saveAccount(Account account) { + public CSEMessage saveAccount(Account account) throws DataModelManagerException { accountDao.persist(account); return null; } @Override - public CSEMessage saveCategory(Category category) { + public CSEMessage saveCategory(Category category) throws DataModelManagerException { categoryDao.persist(category); return null; } @Override - public CSEMessage saveCategoryHierarchy(Category category) { - categoryDao.persist(category); - return null; - } - - @Override - public CSEMessage saveCourse(Course course) { + public CSEMessage saveCourse(Course course) throws DataModelManagerException { courseDao.persist(course); return null; } @Override - public CSEMessage saveCourseHierarchy(Course course) { - courseDao.persist(course); - return null; - } - - @Override - public CSEMessage saveGroup(Group group) { + public CSEMessage saveGroup(Group group) throws DataModelManagerException { groupDao.persist(group); return null; } @Override - public CSEMessage saveRole(Role role) { + public CSEMessage saveRole(Role role) throws DataModelManagerException { roleDao.persist(role); return null; } Added: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerException.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerException.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerException.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,26 @@ +package de.campussource.cse.cdmm; + +/** + * General CDMM exception + * @author Sebastian Roekens + */ +public class DataModelManagerException extends Exception { + + private static final long serialVersionUID = -2553188081269164041L; + + public DataModelManagerException() { + } + + public DataModelManagerException(String message) { + super(message); + } + + public DataModelManagerException(Throwable cause) { + super(cause); + } + + public DataModelManagerException(String message, Throwable cause) { + super(message, cause); + } + +} \ No newline at end of file Added: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdNotFoundException.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdNotFoundException.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdNotFoundException.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,25 @@ +package de.campussource.cse.cdmm; + +/** + * + * @author Sebastian Roekens + */ +public class IdNotFoundException extends DataModelManagerException { + + private static final long serialVersionUID = 3260263352045745859L; + + public IdNotFoundException() {} + + public IdNotFoundException(String message) { + super(message); + } + + public IdNotFoundException(Throwable cause) { + super(cause); + } + + public IdNotFoundException(String message, Throwable cause) { + super(message, cause); + } + +} Added: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingAttributeException.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingAttributeException.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingAttributeException.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,25 @@ +package de.campussource.cse.cdmm; + +/** + * + * @author Sebastian Roekens + */ +public class MissingAttributeException extends DataModelManagerException { + + private static final long serialVersionUID = 3260263352045745856L; + + public MissingAttributeException() {} + + public MissingAttributeException(String message) { + super(message); + } + + public MissingAttributeException(Throwable cause) { + super(cause); + } + + public MissingAttributeException(String message, Throwable cause) { + super(message, cause); + } + +} Added: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingParameterException.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingParameterException.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/MissingParameterException.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,27 @@ +package de.campussource.cse.cdmm; + +import de.campussource.cse.cdmm.DataModelManagerException; + +/** + * + * @author Sebastian Roekens + */ +public class MissingParameterException extends DataModelManagerException { + + private static final long serialVersionUID = 3260263352045745857L; + + public MissingParameterException() {} + + public MissingParameterException(String message) { + super(message); + } + + public MissingParameterException(Throwable cause) { + super(cause); + } + + public MissingParameterException(String message, Throwable cause) { + super(message, cause); + } + +} Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java 2009-03-24 13:52:47 UTC (rev 98) @@ -2,12 +2,14 @@ import java.io.Serializable; +import de.campussource.cse.cdmm.DataModelManagerException; + public interface DAO<T> { - public T find(Serializable id); + public T find(Serializable id) throws DataModelManagerException; - public void persist(T entity); + public void persist(T entity) throws DataModelManagerException; - public void remove(T entity); + public void remove(T entity) throws DataModelManagerException; } Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java 2009-03-24 13:52:47 UTC (rev 98) @@ -2,13 +2,18 @@ import java.io.Serializable; import java.lang.reflect.ParameterizedType; +import java.net.IDN; import javax.ejb.TransactionAttribute; import javax.ejb.TransactionAttributeType; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; +import de.campussource.cse.cdmm.DataModelManagerException; +import de.campussource.cse.cdmm.IdNotFoundException; +import de.campussource.cse.cdmm.MissingParameterException; + public abstract class DAOJPA<E> implements DAO<E> { @PersistenceContext @@ -22,18 +27,25 @@ @Override @TransactionAttribute(TransactionAttributeType.SUPPORTS) - public E find(Serializable id) { - return entityManager.find(persistentClass, id); + public E find(Serializable id) throws DataModelManagerException{ + E result = entityManager.find(persistentClass, id); + if (result == null){ + throw new IdNotFoundException("Id: "+ id + "could not be found."); + } + return result; } @Override @TransactionAttribute(TransactionAttributeType.MANDATORY) - public void persist(E entity) { + public void persist(E entity) throws DataModelManagerException{ entityManager.persist(entity); } @Override - public void remove(E entity) { + public void remove(E entity) throws DataModelManagerException{ + if (entity == null){ + throw new MissingParameterException("Parameter entity is mandatory!"); + } entityManager.remove(entity); } Deleted: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-24 13:52:47 UTC (rev 98) @@ -1,8 +0,0 @@ -package de.campussource.cse.cdmm.dao; - -import de.campussource.cse.cdmm.dao.DAOJPA; -import de.campussource.cse.cdmm.domain.Entity; - -public class EntityDao extends DAOJPA<Entity> { - -} Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java 2009-03-24 13:52:47 UTC (rev 98) @@ -1,13 +1,34 @@ package de.campussource.cse.cdmm.dao; import java.util.List; +import javax.persistence.NoResultException; +import javax.persistence.Query; + +import de.campussource.cse.cdmm.DataModelManagerException; +import de.campussource.cse.cdmm.IdNotFoundException; +import de.campussource.cse.cdmm.MissingAttributeException; +import de.campussource.cse.cdmm.MissingParameterException; import de.campussource.cse.cdmm.dao.DAOJPA; import de.campussource.cse.cdmm.domain.Role; public class RoleDao extends DAOJPA<Role> { @Override - public void remove(Role role){ + public void persist(Role role) throws MissingAttributeException{ + if (role.getAccount()==null){ + throw new MissingAttributeException("RoleDao.persist: account reference for role object missing!"); + } + if (role.getCourse()==null){ + throw new MissingAttributeException("RoleDao.persist: course reference for role object missing!"); + } + entityManager.persist(role); + } + + @Override + public void remove(Role role) throws DataModelManagerException{ + if (role==null){ + throw new MissingParameterException("Parameter role is mandatory!"); + } List<Role> accountRoles = role.getAccount().getRoles(); List<Role> courseRoles = role.getCourse().getRoles(); accountRoles.remove(role); @@ -17,4 +38,22 @@ persist(role); super.remove(role); } + + public Role retrieveRole(long accountId, long courseId) throws DataModelManagerException{ + if (accountId == 0){ + throw new MissingParameterException("Paramter accountId is mandatory!"); + } + if (courseId == 0){ + throw new MissingParameterException("Paramter accountId is mandatory!"); + } + try { + Query query = entityManager.createNamedQuery(Role.FIND_BY_ACCOUNT_AND_COURSE); + query.setParameter("accountId", accountId); + query.setParameter("courseId", courseId); + return (Role) query.getSingleResult(); + } catch (NoResultException nre) { + throw new IdNotFoundException("No role with account id: "+accountId+" and course id: "+courseId+" could be found"); + } + } + } \ No newline at end of file Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-24 13:52:47 UTC (rev 98) @@ -44,12 +44,6 @@ setId(id); } - public Account(Long id, List<Group> groups, List<Role> roles){ - setId(id); - this.groups = groups; - this.roles = roles; - } - public boolean addToGroup(Group group){ if(group==null){ return false; @@ -77,7 +71,7 @@ return false; } List<Group> groups = this.getGroups(); - if (!groups.contains(group)||!group.getMembers().contains(this)){ + if ((!(groups==null) && !groups.contains(group))||!group.getMembers().contains(this)){ return false; } groups.remove(group); Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-24 13:52:47 UTC (rev 98) @@ -27,12 +27,6 @@ public Attribute(){ } - public Attribute(String name, String value, boolean persistent){ - this.name = name; - this.value = value; - this.persistent = persistent; - } - @XmlAttribute(name=Constants.PROPERTY_PERSISTENT) public boolean isPersistent() { return persistent; Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-24 13:52:47 UTC (rev 98) @@ -45,14 +45,6 @@ setId(id); } - public Category(Long id, List<Category> children, List<Course> courses, Category parent){ - setId(id); - this.children = children; - this.courses = courses; - this.parent = parent; - } - - /** * Convenience method for dependency check to prevent circular dependencies. * True if circular dependency would be created. @@ -81,7 +73,7 @@ if (this.children == null){ this.children = new ArrayList<Category>(); } - if (!category.getParent().equals(this)||checkForCircularDependencies(category)){ + if (checkForCircularDependencies(category)){ return false; } return this.children.add(category); Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-24 13:52:47 UTC (rev 98) @@ -55,14 +55,6 @@ setId(id); } - public Course(Long id, List<Category> categories, Course parent, List<Role> roles, List<Course> workgroups){ - setId(id); - this.categories = categories; - this.parent = parent; - this.roles = roles; - this.workgroups = workgroups; - } - /** * Convenience method to add this course to a category. * Updates category list of course object and course list of category object. Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-24 13:52:47 UTC (rev 98) @@ -1,5 +1,6 @@ package de.campussource.cse.cdmm.domain; +import java.util.ArrayList; import java.util.List; import javax.xml.bind.annotation.XmlElement; @@ -52,6 +53,12 @@ @Override public String toString() { + if (courses==null){ + courses = new ArrayList<Course>(); + } + if (accounts == null){ + accounts = new ArrayList<Account>(); + } return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append(rootCategory).append(courses.toArray()).append(accounts.toArray()).toString(); } Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-24 13:52:47 UTC (rev 98) @@ -35,11 +35,6 @@ public Group(Long id){ setId(id); } - - public Group(Long id, List<Account> members){ - setId(id); - this.members = members; - } public boolean equals(Object obj) { if (this == obj) { Modified: trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-24 13:52:47 UTC (rev 98) @@ -12,6 +12,8 @@ import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; +import javax.persistence.NamedQueries; +import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlIDREF; @@ -24,6 +26,10 @@ @Entity(name=Constants.ROLE) @Table(name = Constants.TABLENAME_ROLE) @Inheritance(strategy=InheritanceType.JOINED) +@NamedQueries(value = { + @NamedQuery( + name = "Role.findByAccountAndCourse", + query = "select r from role r where r.account.id=:accountId and r.course.id = :courseId")}) @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{ @@ -40,16 +46,11 @@ @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID, nullable=false) private Course course; + public static final String FIND_BY_ACCOUNT_AND_COURSE = "Role.findByAccountAndCourse"; + public Role(){ } - public Role(Long id, RoleType type, Account account, Course course ){ - setId(id); - this.type = type; - this.account = account; - this.course = course; - } - /** * Convenience method to add role to a course and an account. * Role is added to roles list of course and account object, and Modified: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -3,6 +3,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.fail; import org.junit.Before; import org.junit.Test; @@ -25,7 +26,11 @@ @Test public void testPersistAccount() { - dao.persist(account); + try { + dao.persist(account); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } assertNotNull(account.getId()); txCommit(); } @@ -33,26 +38,54 @@ @Test public void testFindAccount() { - dao.persist(account); - assertNotNull(account.getId()); + try { + dao.persist(account); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } assertNotNull(account.getId()); commitAndBeginTx(); - Account acid = dao.find(account.getId()); + Account acid = null; + try { + acid = dao.find(account.getId()); + } catch (DataModelManagerException e) { + fail("Created account could not be found"); + } assertEquals(account, acid); } @Test public void testRemoveAccount() { - dao.persist(account); - assertNotNull(account.getId()); + try { + dao.persist(account); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } assertNotNull(account.getId()); commitAndBeginTx(); - dao.remove(account); + try { + dao.remove(account); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelMaangerException"); + } commitAndBeginTx(); - assertNull(dao.find(account.getId())); + try { + @SuppressWarnings("unused") + Account retrievedAccount = dao.find(account.getId()); + fail("Deleting of account failed"); + } catch (DataModelManagerException e) { + // Exception should occur; + } + } @Test public void testDoNotFindById() { - Account foundAccount = dao.find(0L); + Account foundAccount = null; + try { + foundAccount = dao.find(0L); + fail("Exception should occur"); + } catch (DataModelManagerException e) { + //Exception should occur + } assertNull(foundAccount); } Added: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CSEMessageTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CSEMessageTest.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CSEMessageTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,57 @@ +package de.campussource.cse.cdmm; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import de.campussource.cse.cdmm.domain.Account; +import de.campussource.cse.cdmm.domain.Entity; + + +import junit.framework.TestCase; + +/** + * Test CSEMessage class + * trivial atm, but may be important if CSEMessage gets more complex + * @author Sebastian Roekens + * + */ +public class CSEMessageTest extends TestCase{ + + @Test + public void testCSEMessage(){ + CSEMessage csem = new CSEMessageImpl(); + + csem.setSuccess(true); + assertTrue(csem.isSuccess()); + + List<Entity> entities = new ArrayList<Entity>(); + Account acc1 = new Account(1L); + Account acc2 = new Account(2L); + Account acc3 = new Account(3L); + entities.add(acc1); + entities.add(acc2); + + csem.setEntities(entities); + assertEquals(2, csem.getEntities().size()); + assertTrue(csem.getEntities().contains(acc1)); + assertTrue(csem.getEntities().contains(acc2)); + + + csem.addEntity(acc3); + assertEquals(3, csem.getEntities().size()); + assertTrue(csem.getEntities().contains(acc3)); + + csem.setEntities(null); + csem.addEntity(acc1); + assertEquals(1, csem.getEntities().size()); + assertTrue(csem.getEntities().contains(acc1)); + + + } + + + + +} \ No newline at end of file Modified: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -5,6 +5,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; +import static org.junit.Assert.fail; import org.junit.After; import org.junit.Before; @@ -43,7 +44,11 @@ */ @Test public void testPersistCategory() { - dao.persist(category); + try { + dao.persist(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException on creation of category"); + } assertNotNull(category.getId()); } @@ -53,9 +58,17 @@ */ @Test public void testFindCategory() { - dao.persist(category); - assertNotNull(category.getId()); - Category coid = dao.find(category.getId()); + try { + dao.persist(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException on creation of category"); + } assertNotNull(category.getId()); + Category coid = null; + try { + coid = dao.find(category.getId()); + } catch (DataModelManagerException e) { + fail("Created category could not be retrieved"); + } assertEquals(category, coid); } @@ -64,10 +77,23 @@ */ @Test public void testRemoveCategory() { - dao.persist(category); - assertNotNull(category.getId()); - dao.remove(category); - assertNull(dao.find(category.getId())); + try { + dao.persist(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException on creation of category"); + } assertNotNull(category.getId()); + try { + dao.remove(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } + try { + @SuppressWarnings("unused") + Category retrievedCategory = dao.find(category.getId()); + fail("Deleting of category failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } } /** @@ -76,14 +102,33 @@ @Test public void testCascading(){ category.addToParentCategory(parentCategory); - dao.persist(category); - assertNotNull(category.getId()); + try { + dao.persist(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException on creation of category"); + } assertNotNull(category.getId()); assertNotNull(parentCategory.getId()); assertEquals(category.getParent(), parentCategory); assertEquals(parentCategory.getChildren().get(0), category); - dao.remove(parentCategory); - assertNull(dao.find(parentCategory.getId())); - assertNull(dao.find(category.getId())); + try { + dao.remove(parentCategory); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } + try { + @SuppressWarnings("unused") + Category retrievedParentCategory = dao.find(parentCategory.getId()); + fail("Deleting of parent category failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } + try { + @SuppressWarnings("unused") + Category retrievedCategory = dao.find(category.getId()); + fail("Cascaded deleting of child category failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } } /** @@ -91,7 +136,13 @@ */ @Test public void testDoNotFindById() { - Category foundCategory = dao.find(0L); + Category foundCategory = null; + try { + foundCategory = dao.find(0L); + fail("Exception should occur"); + } catch (DataModelManagerException e) { + // Exception should occur + } assertNull(foundCategory); } @@ -101,7 +152,11 @@ @Test public void testCircularDependencyCheck(){ assertTrue(category.addToParentCategory(parentCategory)); - dao.persist(category); + try { + dao.persist(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException on creation of category"); + } assertFalse(parentCategory.addToParentCategory(category)); } Modified: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -4,6 +4,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.fail; import org.junit.After; import org.junit.Before; @@ -41,7 +42,11 @@ */ @Test public void testPersistCourse() { - dao.persist(course); + try { + dao.persist(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException!"); + } assertNotNull(course.getId()); } @@ -51,10 +56,19 @@ */ @Test public void testFindCourse() { - dao.persist(course); + try { + dao.persist(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException!"); + } assertNotNull(course.getId()); commitAndBeginTx(); - Course coid = dao.find(course.getId()); + Course coid = null; + try { + coid = dao.find(course.getId()); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of course failed!"); + } assertEquals(course, coid); } @@ -63,10 +77,24 @@ */ @Test public void testRemoveCourse() { - dao.persist(course); + try { + dao.persist(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException!"); + } assertNotNull(course.getId()); - dao.remove(course); - assertNull(dao.find(course.getId())); + try { + dao.remove(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException!"); + } + try { + @SuppressWarnings("unused") + Course retrievedCourse = dao.find(course.getId()); + fail("Deleting of course failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } } /** @@ -74,7 +102,13 @@ */ @Test public void testDoNotFindById() { - Course foundCourse = dao.find(0L); + Course foundCourse = null; + try { + foundCourse = dao.find(0L); + fail("Exception should occur"); + } catch (DataModelManagerException e) { + //Exception should occur + } assertNull(foundCourse); } @@ -86,10 +120,18 @@ Category category = new Category(); CategoryDao categoryDao = new CategoryDao(); autowireByType(categoryDao); - categoryDao.persist(category); + try { + categoryDao.persist(category); + } catch (DataModelManagerException e1) { + fail("Unexpected DataModelManagerException"); + } assertNotNull(category.getId()); course.addToCategory(category); - dao.persist(course); + try { + dao.persist(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException!"); + } assertNotNull(course.getId()); assertNotNull(course.getCategories()); assertNotNull(category.getCourses()); @@ -106,7 +148,11 @@ Course workgroup1 = new Course(); Course workgroup2 = new Course(); workgroup1.addAsWorkgroupTo(course); - dao.persist(workgroup1); + try { + dao.persist(workgroup1); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } assertNotNull(workgroup1.getId()); assertNotNull(course.getId()); assertNotNull(workgroup1.getParent()); @@ -116,9 +162,25 @@ //check if circular dependency is prevented assertFalse(workgroup2.addAsWorkgroupTo(workgroup1)); //check correct deleting cascading - dao.remove(course); - assertNull(dao.find(course.getId())); - assertNull(dao.find(workgroup1.getId())); + try { + dao.remove(course); + } catch (DataModelManagerException e) { + fail("Unexpected Exception on removing of course"); + } + try { + @SuppressWarnings("unused") + Course retrievedCourse = dao.find(course.getId()); + fail("Deleting of course failed"); + } catch (DataModelManagerException e) { + //Exception should occur + } + try { + @SuppressWarnings("unused") + Course retrievedWorkgroup = dao.find(workgroup1.getId()); + fail("Cascaded deleting of workgroup failed"); + } catch (DataModelManagerException e) { + //Exception should occur + } } Added: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DaoTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DaoTest.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DaoTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,31 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.fail; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.AccountDao; +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.common.test.AbstractPersistentUnitTest; + +public class DaoTest extends AbstractPersistentUnitTest { + private AccountDao accountDao; + + @Before + public void setUp() { + accountDao = new AccountDao(); + autowireByType(accountDao); + txBegin(); + } + + @Test + public void testAccountDao(){ + try { + accountDao.remove(null); + fail("Exception should occur"); + } catch (DataModelManagerException e) { + } + } + +} Modified: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java 2009-03-23 14:03:06 UTC (rev 97) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -4,6 +4,12 @@ import java.util.List; +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.NoResultException; +import javax.persistence.Query; + +import org.apache.commons.lang.Validate; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.*; @@ -13,6 +19,7 @@ import de.campussource.cse.cdmm.domain.Course; import de.campussource.cse.cdmm.domain.Entity; import de.campussource.cse.cdmm.domain.Group; +import de.campussource.cse.cdmm.domain.Role; import de.campussource.cse.common.test.AbstractPersistentUnitTest; public class DataModelManagerBeanTest extends AbstractPersistentUnitTest { @@ -29,55 +36,124 @@ @Test public void testCategoryOperations(){ Long categoryId = uniqueId(); - assertEquals(0, dmm.retrieveCategory(categoryId).getEntities().size()); + CSEMessage csem = null; + try { + csem = dmm.retrieveCategory(categoryId); + fail("DataModelManagerException expected"); + } catch (DataModelManagerException e) { + // Exception should occur + } + assertNull(csem); Category category = new Category(categoryId); - dmm.saveCategory(category); - assertNotNull(dmm.retrieveCategory(categoryId)); - CSEMessage csem = dmm.retrieveCategory(categoryId); + try { + dmm.saveCategory(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException Exception"); + } + try { + csem = dmm.retrieveCategory(categoryId); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of category failed"); + } + assertNotNull(csem); assertNotNull(csem.getEntities()); for (Entity entity : csem.getEntities()){ assertTrue(entity instanceof Category); } Category retrievedCategory = (Category) csem.getEntities().get(0); assertEquals(category, retrievedCategory); - dmm.deleteCategory(category); - assertEquals(0, dmm.retrieveCategory(categoryId).getEntities().size()); + try { + dmm.deleteCategory(category); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException Exception"); + } + try { + csem = dmm.retrieveCategory(categoryId); + fail("DataModelManagerException should have occured"); + } catch (DataModelManagerException e) { + // Exception should occur + } } @Test public void testCourseOperations(){ Long courseId = uniqueId(); - assertEquals(0, dmm.retrieveCourse(courseId).getEntities().size()); + CSEMessage csem = null; + try { + csem = dmm.retrieveCourse(courseId); + fail("DataModelManager Exception should occur"); + } catch (DataModelManagerException e) { + // Exception should occur + } Course course = new Course(courseId); - dmm.saveCourse(course); - assertNotNull(dmm.retrieveCourse(courseId)); - CSEMessage csem = dmm.retrieveCourse(courseId); + try { + dmm.saveCourse(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManagerException"); + } + try { + csem = dmm.retrieveCourse(courseId); + } catch (DataModelManagerException e) { + fail("Creation or retrieving of course failed"); + } + assertNotNull(csem); assertNotNull(csem.getEntities()); for (Entity entity : csem.getEntities()){ assertTrue(entity instanceof Course); } Course retrievedCourse = (Course) csem.getEntities().get(0); assertEquals(course, retrievedCourse); - dmm.deleteCourse(course); - assertEquals(0, dmm.retrieveCourse(courseId).getEntities().size()); + try { + dmm.deleteCourse(course); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + try { + csem = dmm.retrieveCourse(courseId); + fail("Deleting of course failed"); + } catch (DataModelManagerException e) { + //Exception should occur + } } @Test public void testAccountOperations(){ Long accountId = uniqueId(); - assertEquals(0, dmm.retrieveAccount(accountId).getEntities().size()); + CSEMessage csem = null; + try { + csem = dmm.retrieveAccount(accountId); + fail("Not Existing object found"); + } catch (DataModelManagerException e) { + // Exception should occur + } Account account = new Account(accountId); - dmm.saveAccount(account); - assertNotNull(dmm.retrieveAccount(accountId)); - CSEMessage csem = dmm.retrieveAccount(accountId); + try { + dmm.saveAccount(account); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + try { + csem = dmm.retrieveAccount(accountId); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of account object failed"); + } assertNotNull(csem.getEntities()); for (Entity entity : csem.getEntities()){ assertTrue(entity instanceof Account); } Account retrievedAccount = (Account) csem.getEntities().get(0); assertEquals(account, retrievedAccount); - dmm.deleteAccount(account); - assertEquals(0, dmm.retrieveAccount(accountId).getEntities().size()); + try { + dmm.deleteAccount(account); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + try { + csem = dmm.retrieveAccount(accountId); + fail("Deleting of account failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } } @Test @@ -88,17 +164,46 @@ Account account1 = new Account(account1Id); Account account2 = new Account(account2Id); Group group = new Group(groupId); - dmm.saveAccount(account1); - dmm.saveAccount(account2); - assertEquals(1, dmm.retrieveAccount(account1Id).getEntities().size()); - assertEquals(1, dmm.retrieveAccount(account2Id).getEntities().size()); + try { + dmm.saveAccount(account1); + dmm.saveAccount(account2); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + CSEMessage csem = null; + try { + csem = dmm.retrieveAccount(account1Id); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of account failed"); + } + assertNotNull(csem); + assertEquals(1, csem.getEntities().size()); + + csem = null; + try { + csem = dmm.retrieveAccount(account2Id); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of account failed"); + } + assertNotNull(csem); + assertEquals(1, csem.getEntities().size()); account1.addToGroup(group); account2.addToGroup(group); - dmm.saveGroup(group); + try { + dmm.saveGroup(group); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + csem = null; - CSEMessage csem = dmm.retrieveGroup(groupId); + try { + csem = dmm.retrieveGroup(groupId); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of group failed"); + } + assertNotNull(csem); assertEquals(1, csem.getEntities().size()); Group retrievedGroup = (Group) csem.getEntities().get(0); @@ -109,19 +214,108 @@ assertTrue(members.contains(account1)); assertTrue(members.contains(account2)); - dmm.deleteAccount(account1); - retrievedGroup = (Group) dmm.retrieveGroup(groupId).getEntities().get(0); + try { + dmm.deleteAccount(account1); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + csem = null; + try { + csem = dmm.retrieveGroup(groupId); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + assertNotNull(csem); + assertEquals(1, csem.getEntities().size()); + retrievedGroup = (Group) csem.getEntities().get(0); assertEquals(1, retrievedGroup.getMembers().size()); - dmm.deleteGroup(retrievedGroup); - assertEquals(0, dmm.retrieveGroup(groupId).getEntities().size()); - assertNotNull(dmm.retrieveAccount(account2Id).getEntities()); - assertEquals(1, dmm.retrieveAccount(account2Id).getEntities().size()); - Account retrievedAccount2 = (Account) dmm.retrieveAccount(account2Id).getEntities().get(0); + try { + dmm.deleteGroup(retrievedGroup); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + csem = null; + try { + csem = dmm.retrieveGroup(groupId); + fail("Deleting of group failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } + csem = null; + try { + csem = dmm.retrieveAccount(account2Id); + } catch (DataModelManagerException e) { + fail("Account shouldn't be deleted"); + } + assertNotNull(csem); + assertEquals(1, csem.getEntities().size()); + Account retrievedAccount2 = (Account) csem.getEntities().get(0); List<Group> groups = retrievedAccount2.getGroups(); if (groups != null && groups.size()!=0){ fail("Group list should have been empty!"); } } - + + @Test + public void testRoleOperations(){ + long roleId = uniqueId(); + CSEMessage csem = null; + try { + csem = dmm.retrieveRole(roleId); + fail("Exception should occur"); + } catch (DataModelManagerException e) { + // Exception should occur + } + assertNull(csem); + Role role = new Role(roleId); + try { + dmm.saveRole(role); + fail("Creating of role without account and course reference should be impossible"); + } catch (DataModelManagerException e) { + //Exception should occur; + } + Account account = new Account (uniqueId()); + Course course = new Course (uniqueId()); + try{ + dmm.saveAccount(account); + dmm.saveCourse(course); + } catch (DataModelManagerException e){ + fail("Unexpected DataModelManager Exception"); + } + role.addToCourseAndAccount(course, account); + try { + dmm.saveRole(role); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + csem = null; + try { + csem = dmm.retrieveRole(roleId); + } catch (DataModelManagerException e) { + fail("Creating or retrieving of role failed"); + } + assertNotNull(csem); + assertEquals(1, csem.getEntities().size()); + assertEquals(role, csem.getEntities().get(0)); + + try { + dmm.deleteRole(role); + } catch (DataModelManagerException e) { + fail("Unexpected DataModelManager Exception"); + } + csem = null; + try { + csem = dmm.retrieveRole(roleId); + fail("Deleting of role failed"); + } catch (DataModelManagerException e) { + // Exception should occur + } + } + + @Test + public void testRoleQueries(){ + + } + } \ No newline at end of file Added: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerExceptionTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerExceptionTest.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerExceptionTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,39 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * @author Sebastian Roekens + */ +public class DataModelManagerExceptionTest { + + @Test + public void testDefaultConstructor() { + Exception e = new IdNotFoundException(); + assertNotNull(e); + } + + @Test + public void testMessageConstructor() { + Exception e = new DataModelManagerException("message"); + assertEquals("message", e.getMessage()); + } + + @Test + public void testCauseConstructor() { + Exception e = new DataModelManagerException("message"); + Exception e2 = new DataModelManagerException(e); + assertEquals(e,e2.getCause()); + } + + @Test + public void testMessageCauseConstructor() { + Exception e = new DataModelManagerException("message"); + Exception e2 = new DataModelManagerException("message", e); + assertEquals(e, e2.getCause()); + assertEquals("message", e2.getMessage()); + } + +} \ No newline at end of file Added: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DomainTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DomainTest.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DomainTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,125 @@ +package de.campussource.cse.cdmm; + +import java.util.ArrayList; +import java.util.List; + +import org.junit.Test; + +import de.campussource.cse.cdmm.domain.Account; +import de.campussource.cse.cdmm.domain.Attribute; +import de.campussource.cse.cdmm.domain.Category; +import de.campussource.cse.cdmm.domain.Course; +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.cdmm.domain.EntityContainer; +import de.campussource.cse.cdmm.domain.Group; +import de.campussource.cse.cdmm.domain.PersistentAttribute; +import de.campussource.cse.cdmm.domain.Role; +import de.campussource.cse.cdmm.domain.RoleType; +import de.campussource.cse.cdmm.domain.TransientAttribute; + +import junit.framework.TestCase; + +/** + * Tests to cover code of entity classes not handled in dao tests + * @author Sebastian Roekens + * + */ +public class DomainTest extends TestCase{ + + @Test + public void testAccountEntity(){ + Account account = new Account(); + Group group = new Group(); + + //test isInGroup method + assertFalse(account.isInGroup(group)); + assertFalse(account.isInGroup(null)); + group.setMembers(new ArrayList<Account>()); + assertFalse(account.isInGroup(group)); + + //test removeFromGroupMethod and addToGroup + assertFalse(account.removeFromGroup(null)); + assertFalse(account.removeFromGroup(group)); + assertFalse(account.addToGroup(null)); + List<Account> members = group.getMembers(); + members.add(account); + group.setMembers(members); + assertFalse(account.addToGroup(group)); + account = new Account(1l); + group = new Group(); + assertTrue(account.addToGroup(group)); + assertFalse(account.addToGroup(group)); + } + + @Test + public void testCourseEntity(){ + Course course = new Course(); + Category category = new Category(); + assertFalse(course.addToCategory(null)); + assertTrue(course.addToCategory(category)); + + course = new Course(); + category = new Category(); + List<Category> categories = new ArrayList<Category>(); + categories.add(category); + course.addToCagetories(categories); + + assertFalse(course.addAsWorkgroupTo(null)); + Course parentCourse = new Course(); + assertTrue(course.addAsWorkgroupTo(parentCourse)); + Course childCourse = new Course(); + assertFalse(childCourse.addAsWorkgroupTo(course)); + } + + @Test + public void testEntityEntity(){ + Entity entity = new Entity(); + assertFalse(entity.equals(null)); + assertNotNull(entity.hashCode()); + entity = new Entity(1L); + Attribute att1 = new Attribute(); + att1.setPersistent(true); + Attribute att2 = new Attribute(); + att2.setPersistent(false); + List<Attribute> attribs = new ArrayList<Attribute>(); + attribs.add(att1); attribs.add(att2); + entity.setAttributes(attribs); + } + + @Test + public void testEntityContainerEntity(){ + EntityContainer container = new EntityContainer(); + assertNotNull(container.toString()); + assertNotNull(container.toString()); + } + + @Test + public void testGroupEntity(){ + Group group1 = new Group(); + Group group2 = new Group(); + assertFalse(group1.equals(null)); + assertFalse(group1.equals(group2)); + assertNotNull(group1.hashCode()); + } + + @Test + public void testPersistentAttribute(){ + PersistentAttribute persatt = new PersistentAttribute(); + assertNull(persatt.getEntity()); + TransientAttribute transatt = new TransientAttribute(); + assertFalse(persatt.equals(transatt)); + } + + @Test + public void testRoleEntity(){ + Role role = new Role(1l, RoleType.UNDEFINED); + Account account = new Account(); + Course course = new Course(); + assertFalse(role.addToCourseAndAccount(null, account)); + assertFalse(role.addToCourseAndAccount(course, null)); + assertTrue(role.addToCourseAndAccount(course, account)); + } + + + +} \ No newline at end of file Added: trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/IdNotFoundExceptionTest.java =================================================================== --- trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/IdNotFoundExceptionTest.java (rev 0) +++ trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/IdNotFoundExceptionTest.java 2009-03-24 13:52:47 UTC (rev 98) @@ -0,0 +1,39 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.*; + +import org.junit.Test; + +/** + * @author Sebastian Roekens + */ +public class IdNotFoundExceptionTest { + + @Test + public void testDefaultConstructor() { + DataModelManagerException dmme = new IdNotFoundException(); + assertNotNull(dmme); + } + + @Test + public void testMessageConstructor() { + DataModelManagerException dmme = new IdNotFoundException("message"); + assertEquals("message", dmme.getMessage()); + } + + @Test + public void testCauseConstructor() { + DataModelManagerException dmme = new IdNotFoun... [truncated message content] |