From: <ro...@us...> - 2009-03-04 10:42:43
|
Revision: 45 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=45&view=rev Author: roekens Date: 2009-03-04 10:42:37 +0000 (Wed, 04 Mar 2009) Log Message: ----------- - changed package structure for better overview - introduced first creation of xsd in test Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AccountDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AttributeDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CategoryDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CourseDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.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/dao/GroupDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/ 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/Attribute.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/EntityContainer.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 Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AccountDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AccountDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AccountDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AccountDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,7 @@ +package de.campussource.cse.cdmm.dao; +import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Account; + +public class AccountDao extends DAOJPA<Account> { + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AccountDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AttributeDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AttributeDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AttributeDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,7 @@ +package de.campussource.cse.cdmm.dao; +import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Attribute; + +public class AttributeDao extends DAOJPA<Attribute> { + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AttributeDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CategoryDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CategoryDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CategoryDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CategoryDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,8 @@ +package de.campussource.cse.cdmm.dao; + +import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Category; + +public class CategoryDao extends DAOJPA<Category>{ + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CategoryDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CourseDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CourseDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CourseDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CourseDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,7 @@ +package de.campussource.cse.cdmm.dao; +import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Course; + +public class CourseDao extends DAOJPA<Course> { + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CourseDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DAO.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,13 @@ +package de.campussource.cse.cdmm.dao; + +import java.io.Serializable; + +public interface DAO<T> { + + public T find(Serializable id); + + public void persist(T entity); + + public void remove(T entity); + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAO.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DAOJPA.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,42 @@ +package de.campussource.cse.cdmm.dao; + +import java.io.Serializable; +import java.lang.reflect.ParameterizedType; + +import javax.ejb.TransactionAttribute; +import javax.ejb.TransactionAttributeType; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + + +public abstract class DAOJPA<E> implements DAO<E> { + + @PersistenceContext + protected EntityManager entityManager; + + private Class<E> persistentClass; + + public DAOJPA() { + this.persistentClass = (Class<E>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0]; + } + + @Override + @TransactionAttribute(TransactionAttributeType.SUPPORTS) + public E find(Serializable id) { + return entityManager.find(persistentClass, id); + } + + @Override + @TransactionAttribute(TransactionAttributeType.MANDATORY) + public void persist(E entity) { + entityManager.persist(entity); + } + + @Override + public void remove(E entity) { + entityManager.remove(entity); + } + + + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/DAOJPA.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,8 @@ +package de.campussource.cse.cdmm.dao; +import com.sun.xml.internal.stream.Entity; + +import de.campussource.cse.cdmm.dao.DAOJPA; + +public class EntityDao extends DAOJPA<Entity> { + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/GroupDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/GroupDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/GroupDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/GroupDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,7 @@ +package de.campussource.cse.cdmm.dao; +import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Group; + +public class GroupDao extends DAOJPA<Group> { + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/GroupDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleDao.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,7 @@ +package de.campussource.cse.cdmm.dao; +import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Role; + +public class RoleDao extends DAOJPA<Role> { + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,57 @@ +package de.campussource.cse.cdmm.domain; + +import java.util.List; + +import javax.persistence.Embeddable; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.OneToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +@Entity +@Embeddable +@Table(name = "CDMM_ACCOUNT") +@XmlRootElement +@XmlType(propOrder={ "groups", "roles"}) +public class Account extends de.campussource.cse.cdmm.domain.Entity{ + + @OneToMany(mappedBy="account") + private List<Role> roles; + + @ManyToMany + @JoinTable( + name = "CDMM_GROUP2ACCOUNT", + joinColumns={@JoinColumn(name="GROUP_ID")}, + inverseJoinColumns={@JoinColumn(name="ACCOUNT_ID")}) + private List<Group> groups; + + + @XmlElementWrapper(name="roles") + @XmlElement(name="role") + @XmlIDREF + public List<Role> getRoles() { + return roles; + } + + public void setRoles(List<Role> roles) { + this.roles = roles; + } + + @XmlElementWrapper(name="groups") + @XmlElement(name="group") + @XmlIDREF + public List<Group> getGroups() { + return groups; + } + + public void setGroups(List<Group> groups) { + this.groups = groups; + } +} Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,83 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlID; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; + +@Entity +@Embeddable +@Table(name = "CDMM_ATTRIBUTE") +@XmlRootElement +@XmlType(propOrder={"identityString", "entity", "name", "value"}) +public class Attribute { + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + @XmlTransient + private Long id; + + @XmlID + @XmlElement(name="id") + public String getIdentityString( ) { + return ( id != null ) ? id.toString() : "0"; + } + + private String name; + + private String value; + + @ManyToOne + @JoinColumn(name="ENTITY_ID") + private de.campussource.cse.cdmm.domain.Entity entity; + + + @XmlElement() + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; + } + + @XmlElement + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @XmlElement + public de.campussource.cse.cdmm.domain.Entity getEntity() { + return entity; + } + + + public void setEntity(de.campussource.cse.cdmm.domain.Entity entity) { + this.entity = entity; + } + + @XmlTransient + public Long getId() { + return id; + } + + + public void setId(Long id) { + this.id = id; + } + +} Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,79 @@ +package de.campussource.cse.cdmm.domain; + +import java.util.List; + +import javax.persistence.Embeddable; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.JoinTable; +import javax.persistence.ManyToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; + +@Entity +@Embeddable +@Table(name = "CDMM_CATEGORY") +@XmlRootElement +@XmlType(propOrder={ "parents", "children", "courses"}) +public class Category extends de.campussource.cse.cdmm.domain.Entity { + + @ManyToMany + @JoinTable( + name = "CDMM_CAT2CAT", + joinColumns={@JoinColumn(name="CHILD_ID")}, + inverseJoinColumns={@JoinColumn(name="PARENT_ID")}) + private List<Category> parents; + + @ManyToMany(mappedBy="parent") + private List<Category> children; + + @ManyToMany(mappedBy="categories") + private List<Course> courses; + + public Category() { + } + + + @XmlElementWrapper(name="categories") + @XmlElement(name="category") + public List<Category> getChildren() { + return children; + } + + public void setChildren(List<Category> children) { + this.children = children; + } + + @XmlElementWrapper(name="courses") + @XmlElement(name="course") + @XmlIDREF + public List<Course> getCourses() { + return courses; + } + + public void setCourses(List<Course> courses) { + this.courses = courses; + } + + @XmlElementWrapper(name="parents") + @XmlElement(name="parent") + @XmlIDREF + public List<Category> getParents() { + return parents; + } + + public void setParents(List<Category> parents) { + this.parents = parents; + } + + @XmlTransient + public boolean isRoot(){ + return ((parents==null)||parents.size()==0); + } + +} Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,91 @@ +package de.campussource.cse.cdmm.domain; + +import java.util.List; + +import javax.persistence.Embeddable; +import javax.persistence.Entity; +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; +import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +@Entity +@Embeddable +@Table(name = "CDMM_COURSE") +@XmlRootElement +@XmlType(propOrder={ "categories", "parent", "workgroups", "roles"}) +public class Course extends de.campussource.cse.cdmm.domain.Entity{ + + @ManyToOne + @JoinTable(name="PARENT_ID") + private Course parent; + + @OneToMany(mappedBy="parent") + private List<Course> workgroups; + + @ManyToMany + @JoinTable( + name = "CDMM_COURSE2CAT", + joinColumns={@JoinColumn(name="CATEGORY_ID")}, + inverseJoinColumns={@JoinColumn(name="COURSE_ID")}) + private List<Category> categories; + + @OneToMany(mappedBy="course") + private List<Role> roles; + + public String toString() { + return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).toString(); + } + + @XmlElement + @XmlIDREF + public Course getParent() { + return parent; + } + + public void setParent(Course parent) { + this.parent = parent; + } + + @XmlElementWrapper(name="workgroups") + @XmlElement(name="workgroup") + public List<Course> getWorkgroups() { + return workgroups; + } + + public void setWorkgroups(List<Course> workgroups) { + this.workgroups = workgroups; + } + + @XmlElementWrapper(name="categories") + @XmlElement(name="category") + @XmlIDREF + public List<Category> getCategories() { + return categories; + } + + public void setCategories(List<Category> categories) { + this.categories = categories; + } + + @XmlElementWrapper(name="roles") + @XmlElement(name="role") + public List<Role> getRoles() { + return roles; + } + + public void setRoles(List<Role> roles) { + this.roles = roles; + } + +} Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,85 @@ +package de.campussource.cse.cdmm.domain; + +import java.util.List; + +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.OneToMany; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlID; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +import de.campussource.cse.cdmm.IdAdapter; + +@XmlRootElement +@XmlType(propOrder={"id","attributes"}) +public class Entity{ + + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @OneToMany(mappedBy="entity") + @XmlTransient + private List<Attribute> attributes; + + @XmlElementWrapper(name="attributes") + @XmlElement(name="attribute") + public List<Attribute> getAttributes(){ + return attributes; + } + + public Entity(){ + + } + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof Entity)) { + return false; + } + if (this.id == null) { + return false; + } else { + return this.id.equals(((Entity) obj).id); + } + } + + public int hashCode() { + if (this.id == null) { + return super.hashCode(); + } else { + return this.id.hashCode(); + } + } + + public String toString() { + return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append(id).toString(); + } + + public void setAttributes(List<Attribute> attributes) { + this.attributes = attributes; + } + + public void setId(Long id) { + this.id = id; + } + + @XmlID + @XmlJavaTypeAdapter(value=IdAdapter.class) + @XmlAttribute(name="id") + public Long getId() { + return id; + }; +} \ No newline at end of file Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,116 @@ +package de.campussource.cse.cdmm.domain; + +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementRef; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlElements; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +@XmlRootElement +public class EntityContainer{ + + @XmlElementWrapper(name="entities") + @XmlElement(name="entity") + private List<Entity> entities; + + @XmlElementWrapper(name="attributes") + @XmlElement(name="attribute") + private List<Attribute> attributes; + + @XmlElementWrapper(name="categories") + @XmlElement(name="category") + private List<Category> categories; + + @XmlElementWrapper(name="courses") + @XmlElement(name="course") + private List<Course> courses; + + @XmlElementWrapper(name="roles") + @XmlElementRef(name="role") + private List<Role> roles; + + @XmlElementWrapper(name="accounts") + @XmlElements(value= {@XmlElement(name="account",type=Account.class),@XmlElement(name="group",type=Group.class)}) + private List<Account> accounts; + + @XmlElementWrapper(name="groups") + @XmlElement(name="group") + private List<Group> groups; + + public void setEntities(List<Entity> entities) { + this.entities = entities; + } + + public void setAttributes(List<Attribute> attributes) { + this.attributes = attributes; + } + + public void setCategories(List<Category> categories) { + this.categories = categories; + } + + public void setCourses(List<Course> courses) { + this.courses = courses; + } + + public void setRoles(List<Role> roles) { + this.roles = roles; + } + + public void setAccounts(List<Account> accounts) { + this.accounts = accounts; + } + + public void setGroups(List<Group> groups) { + this.groups = groups; + } + + @XmlTransient + public List<Entity> getEntities() { + return entities; + } + + @XmlTransient + public List<Attribute> getAttributes() { + return attributes; + } + + @XmlTransient + public List<Category> getCategories() { + return categories; + } + + @XmlTransient + public List<Course> getCourses() { + return courses; + } + + @XmlTransient + public List<Role> getRoles() { + return roles; + } + + @XmlTransient + public List<Account> getAccounts() { + return accounts; + } + + @XmlTransient + public List<Group> getGroups() { + return groups; + } + + @Override + public String toString() { + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append(categories.toArray()).append(courses.toArray()).append(accounts.toArray()).append(roles.toArray()).append(groups.toArray()).toString(); + } + + + +} \ No newline at end of file Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,66 @@ +package de.campussource.cse.cdmm.domain; + +import java.util.List; + +import javax.persistence.Embeddable; +import javax.persistence.Entity; +import javax.persistence.ManyToMany; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; + +import org.apache.commons.lang.builder.ToStringBuilder; +import org.apache.commons.lang.builder.ToStringStyle; + +@Entity +@Embeddable +@Table(name = "CDMM_GROUP") +@XmlRootElement +@XmlType(propOrder={"members"}) +public class Group extends Account{ + + @XmlTransient + @ManyToMany(mappedBy="groups") + public List<Account> members; + + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!(obj instanceof Group)) { + return false; + } + if (this.getId() == null) { + return false; + } else { + return this.getId().equals(((Group) obj).getId()); + } + } + + public int hashCode() { + if (this.getId() == null) { + return super.hashCode(); + } else { + return this.getId().hashCode(); + } + } + + public String toString() { + return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append(this.getId()).toString(); + } + + public void setMembers(List<Account> members) { + this.members = members; + } + + @XmlElementWrapper(name="members") + @XmlElement(name="member") + @XmlIDREF + public List<Account> getMembers() { + return members; + } +} Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-04 10:42:37 UTC (rev 45) @@ -0,0 +1,62 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Column; +import javax.persistence.Embeddable; +import javax.persistence.Entity; +import javax.persistence.JoinColumn; +import javax.persistence.ManyToOne; +import javax.persistence.Table; +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import de.campussource.cse.cdmm.RoleType; + +@Entity +@Embeddable +@Table(name = "CDMM_ROLE") +@XmlRootElement +@XmlType(propOrder={"type", "account", "course"}) +public class Role extends de.campussource.cse.cdmm.domain.Entity{ + + @Column(name="ROLE_TYPE") + private RoleType type; + + @ManyToOne + @JoinColumn(name="ACCOUNT_ID") + private Account account; + + @ManyToOne + @JoinColumn(name="COURSE_ID") + private Course course; + + @XmlElement + public RoleType getType() { + return type; + } + + public void setType(RoleType type) { + this.type = type; + } + + @XmlElement(name="accountId") + @XmlIDREF + public Account getAccount() { + return account; + } + + public void setAccount(Account account) { + this.account = account; + } + + @XmlElement(name="courseId") + @XmlIDREF + public Course getCourse() { + return course; + } + + public void setCourse(Course course) { + this.course = course; + } +} 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-03 17:20:35 UTC (rev 44) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-04 10:42:37 UTC (rev 45) @@ -10,8 +10,24 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; +import javax.xml.bind.SchemaOutputResolver; import javax.xml.bind.Unmarshaller; +import javax.xml.transform.Result; +import javax.xml.transform.dom.DOMResult; +import org.w3c.dom.Document; + +import com.sun.org.apache.xml.internal.serialize.OutputFormat; +import com.sun.org.apache.xml.internal.serialize.XMLSerializer; + +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.EntityContainer; +import de.campussource.cse.cdmm.domain.Group; +import de.campussource.cse.cdmm.domain.Role; + import junit.framework.TestCase; /** @@ -52,7 +68,6 @@ } System.out.println(outputXml); - EntityContainer xmlToObjects; try { Unmarshaller unmarshaller = context.createUnmarshaller(); EntityContainer ec = (EntityContainer) unmarshaller.unmarshal(new StringReader(outputXml)); @@ -61,9 +76,35 @@ fail(e.getMessage()); } + final List<DOMResult> results = new ArrayList<DOMResult>(); + try { + context.generateSchema( + new SchemaOutputResolver() { + @Override + public Result createOutput(String ns, String file) throws IOException { + DOMResult result = new DOMResult(); + result.setSystemId(file); + results.add(result); + return result; + } + }); + printDOMResult(results.get(0)); + } catch (IOException e) { + e.printStackTrace(); + fail(e.getMessage()); + } + } + + private void printDOMResult(DOMResult domResult) throws IOException{ + Document doc = (Document) domResult.getNode(); + OutputFormat format = new OutputFormat(doc); + format.setIndenting(true); + XMLSerializer serializer = new XMLSerializer(System.out, format); + serializer.serialize(doc); + } private EntityContainer generateTestStructure() { Category categoryA = new Category(); @@ -108,7 +149,7 @@ role.setId(createUniqueId()); role.setAccount(account); role.setCourse(course); - role.setType(RoleType.ASSISTENT); + role.setType(RoleType.ASSISTANT); List<Role> roles = new ArrayList<Role>(); roles.add(role); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |