|
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.
|