|
From: <ro...@us...> - 2009-03-09 16:22:13
|
Revision: 67
http://cse-ip.svn.sourceforge.net/cse-ip/?rev=67&view=rev
Author: roekens
Date: 2009-03-09 16:22:06 +0000 (Mon, 09 Mar 2009)
Log Message:
-----------
- introduced cascading for categories
- several bugfixes
- more tests
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/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/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java
cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.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-09 13:13:44 UTC (rev 66)
+++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-09 16:22:06 UTC (rev 67)
@@ -36,6 +36,7 @@
//entity property names
public static final String PROPERTY_ATTRIBUTES = "attributes";
public static final String PROPERTY_PARENTS = "parents";
+ public static final String PROPERTY_PARENT = "parent";
public static final String PROPERTY_CHILDREN = "children";
public static final String PROPERTY_COURSES = "courses";
public static final String PROPERTY_NAME = "name";
@@ -49,11 +50,11 @@
public static final String TABLENAME_ENTITY = "CDMM_ENTITY";
public static final String TABLENAME_GROUP = "CDMM_GROUP";
public static final String TABLENAME_ROLE = "CDMM_ROLE";
- public static final String TABLENAME_CATEGORY2CATEGORY = "CDMM_CAT2CAT";
public static final String TABLENAME_GROUP2ACCOUNT = "CDMM_GROUP2ACCOUNT";
public static final String TABLENAME_COURSE2CATEGORY = "CDMM_COURSE2CAT";
//column names
+ public static final String COLUMNNAME_CATEGORY2CATEGORY = "PARENT_CAT_ID";
public static final String COLUMNNAME_ROLE_TYPE="ROLE_TYPE";
public static final String COLUMNNAME_CHILD_ID="CHILD_ID";
public static final String COLUMNNAME_PARENT_ID="PARENT_ID";
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-09 13:13:44 UTC (rev 66)
+++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-09 16:22:06 UTC (rev 67)
@@ -1,5 +1,6 @@
package de.campussource.cse.cdmm.domain;
+import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
@@ -22,7 +23,7 @@
@Table(name = Constants.TABLENAME_ACCOUNT)
@Inheritance(strategy=InheritanceType.JOINED)
@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES)
-@XmlType(propOrder={ Constants.GROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES)
+@XmlType(propOrder={Constants.GROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES)
public class Account extends de.campussource.cse.cdmm.domain.Entity{
@OneToMany(mappedBy=Constants.ACCOUNT)
@@ -48,6 +49,54 @@
this.roles = roles;
}
+ public boolean addToGroup(Group group){
+ if(group==null){
+ return false;
+ }
+ List<Group> groups = this.getGroups();
+ if (groups==null){
+ groups = new ArrayList<Group>();
+ }
+ if (groups.contains(group)||group.getMembers().contains(this)){
+ return false;
+ }
+ groups.add(group);
+ setGroups(groups);
+ List<Account> accounts = group.getMembers();
+ if (accounts == null){
+ accounts = new ArrayList<Account>();
+ }
+ accounts.add(this);
+ group.setMembers(accounts);
+ return true;
+ }
+
+ public boolean removeFromGroup(Group group){
+ if (group == null){
+ return false;
+ }
+ List<Group> groups = this.getGroups();
+ if (!groups.contains(group)||!group.getMembers().contains(this)){
+ return false;
+ }
+ groups.remove(group);
+ setGroups(groups);
+ List<Account> accounts = group.getMembers();
+ accounts.remove(this);
+ group.setMembers(accounts);
+ return true;
+ }
+
+ public boolean isInGroup(Group group){
+ if (group == null){
+ return false;
+ }
+ if (group.getMembers()==null){
+ return false;
+ }
+ return (group.getMembers().contains(this));
+ }
+
@XmlElementWrapper(name=Constants.ROLES)
@XmlElement(name=Constants.ROLE)
public List<Role> getRoles() {
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-09 13:13:44 UTC (rev 66)
+++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-09 16:22:06 UTC (rev 67)
@@ -2,12 +2,14 @@
import java.util.List;
+import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.Inheritance;
import javax.persistence.InheritanceType;
-import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
+import javax.persistence.ManyToOne;
+import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
@@ -22,17 +24,14 @@
@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)
+@XmlType(propOrder={Constants.PROPERTY_PARENT, Constants.PROPERTY_CHILDREN, Constants.PROPERTY_COURSES}, namespace=Constants.NAMESPACE_DATATYPES)
public class Category extends de.campussource.cse.cdmm.domain.Entity {
- @ManyToMany
- @JoinTable(
- name = Constants.TABLENAME_CATEGORY2CATEGORY,
- joinColumns={@JoinColumn(name=Constants.COLUMNNAME_CHILD_ID)},
- inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_PARENT_ID)})
- private List<Category> parents;
+ @ManyToOne(cascade={CascadeType.REMOVE})
+ @JoinTable(name = Constants.COLUMNNAME_CATEGORY2CATEGORY)
+ private Category parent;
- @ManyToMany(mappedBy=Constants.PARENTS)
+ @OneToMany(mappedBy=Constants.PARENT, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH})
private List<Category> children;
@ManyToMany(mappedBy=Constants.CATEGORIES)
@@ -45,14 +44,14 @@
setId(id);
}
- public Category(Long id, List<Category> children, List<Course> courses, List<Category> parents){
+ public Category(Long id, List<Category> children, List<Course> courses, Category parent){
setId(id);
this.children = children;
this.courses = courses;
- this.parents = parents;
+ this.parent = parent;
}
-
-
+
+
@XmlElementWrapper(name=Constants.CATEGORIES)
@XmlElement(name=Constants.CATEGORY)
public List<Category> getChildren() {
@@ -74,20 +73,19 @@
this.courses = courses;
}
- @XmlElementWrapper(name=Constants.PARENTS)
@XmlElement(name=Constants.PARENT)
@XmlIDREF
- public List<Category> getParents() {
- return parents;
+ public Category getParent() {
+ return parent;
}
- public void setParents(List<Category> parents) {
- this.parents = parents;
+ public void setParent(Category parent) {
+ this.parent = parent;
}
@XmlTransient
public boolean isRoot(){
- return ((parents==null)||parents.size()==0);
+ return (parent==null);
}
}
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-09 13:13:44 UTC (rev 66)
+++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-09 16:22:06 UTC (rev 67)
@@ -17,10 +17,12 @@
private CategoryDao dao;
private Category category;
+ private Category parentCategory;
@Before
public void setUp() {
category = newCategory();
+ parentCategory = newCategory();
dao = new CategoryDao();
autowireByType(dao);
txBegin();
@@ -54,6 +56,17 @@
}
@Test
+ public void testCascading(){
+ category.setParent(parentCategory);
+ dao.persist(category);
+ assertNotNull(category.getId());
+ assertNotNull(parentCategory.getId());
+ dao.remove(parentCategory);
+ assertNull(dao.find(parentCategory.getId()));
+ assertNull(dao.find(category.getId()));
+ }
+
+ @Test
public void testDoNotFindById() {
Category foundCategory = dao.find(0L);
assertNull(foundCategory);
Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java
===================================================================
--- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-09 13:13:44 UTC (rev 66)
+++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-09 16:22:06 UTC (rev 67)
@@ -350,17 +350,17 @@
Category parentCategory = new Category(createUniqueId());
Category childCategory = new Category(createUniqueId());
- List<Category> parentCategoryList = new ArrayList<Category>();
- parentCategoryList.add(parentCategory);
List<Category> childCategoryList = new ArrayList<Category>();
childCategoryList.add(childCategory);
parentCategory.setChildren(childCategoryList);
- childCategory.setParents(parentCategoryList);
+ childCategory.setParent(parentCategory);
//create Course with one child workgroup
+ List<Category> parentCategoryList = new ArrayList<Category>();
+ parentCategoryList.add(parentCategory);
Course course = new Course(createUniqueId());
course.setCategories(parentCategoryList);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|