From: <ro...@us...> - 2009-03-02 16:41:08
|
Revision: 37 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=37&view=rev Author: roekens Date: 2009-03-02 16:41:01 +0000 (Mon, 02 Mar 2009) Log Message: ----------- updating testing - test is working but dirty, and produces dirty xml :-) IN PROGRESS Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Account.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityContainer.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/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Account.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Account.java 2009-03-02 16:41:01 UTC (rev 37) @@ -2,6 +2,7 @@ import java.util.List; +import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -12,6 +13,7 @@ import javax.persistence.OneToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; import javax.xml.bind.annotation.XmlType; @@ -19,14 +21,20 @@ import org.apache.commons.lang.builder.ToStringStyle; @Entity +@Embeddable @Table(name = "CDMM_ACCOUNT") @XmlType(name="Account") public class Account extends de.campussource.cse.cdmm.Entity{ - @Id + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + @OneToMany(mappedBy="account") private List<Role> roles; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java 2009-03-02 16:41:01 UTC (rev 37) @@ -2,10 +2,14 @@ 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.XmlIDREF; @Entity @@ -13,13 +17,22 @@ @Table(name = "CDMM_ATTRIBUTE") public class Attribute { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + private String name; private String value; @ManyToOne @JoinColumn(name="ENTITY_ID") - private Entity entity; + private de.campussource.cse.cdmm.Entity entity; @XmlElement @@ -43,13 +56,23 @@ @XmlElement @XmlIDREF - public Entity getEntity() { + public de.campussource.cse.cdmm.Entity getEntity() { return entity; } - public void setEntity(Entity entity) { + public void setEntity(de.campussource.cse.cdmm.Entity entity) { this.entity = entity; } + + + public Long getId() { + return id; + } + + + public void setId(Long id) { + this.id = id; + } } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java 2009-03-02 16:41:01 UTC (rev 37) @@ -2,6 +2,7 @@ import java.util.List; +import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -11,6 +12,7 @@ import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; import javax.xml.bind.annotation.XmlType; @@ -18,14 +20,20 @@ import org.apache.commons.lang.builder.ToStringStyle; @Entity +@Embeddable @Table(name = "CDMM_CATEGORY") @XmlType(name="Category") public class Category extends de.campussource.cse.cdmm.Entity { - @Id + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - + + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + @ManyToMany @JoinTable( name = "CDMM_CAT2CAT", Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java 2009-03-02 16:41:01 UTC (rev 37) @@ -2,6 +2,7 @@ import java.util.List; +import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -13,19 +14,26 @@ import javax.persistence.OneToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; @Entity +@Embeddable @Table(name = "CDMM_COURSE") public class Course extends de.campussource.cse.cdmm.Entity{ - @Id + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + @OneToMany(mappedBy="course") private List<Account> members; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java 2009-03-02 16:41:01 UTC (rev 37) @@ -7,15 +7,21 @@ import javax.persistence.Id; import javax.persistence.OneToMany; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement -public abstract class Entity{ +public class Entity{ - @Id + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + @OneToMany(mappedBy="entity") private List<Attribute> attributes; @@ -23,6 +29,10 @@ public List<Attribute> getAttributes(){ return attributes; } + + public Entity(){ + + } public void setAttributes(List<Attribute> attributes) { this.attributes = attributes; Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityContainer.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityContainer.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityContainer.java 2009-03-02 16:41:01 UTC (rev 37) @@ -0,0 +1,60 @@ +package de.campussource.cse.cdmm; + +import java.util.List; + +import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class EntityContainer{ + + @XmlElement + private List<Entity> entities; + + @XmlElement + private List<Attribute> attributes; + + @XmlElement + private List<Category> categories; + + @XmlElement + private List<Course> courses; + + @XmlElement + private List<Role> roles; + + @XmlElement + private List<Account> accounts; + + @XmlElement + 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; + } + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityContainer.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java 2009-03-02 16:41:01 UTC (rev 37) @@ -2,6 +2,7 @@ import java.util.List; +import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -9,6 +10,7 @@ import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; import javax.xml.bind.annotation.XmlType; @@ -16,14 +18,21 @@ import org.apache.commons.lang.builder.ToStringStyle; @Entity +@Embeddable @Table(name = "CDMM_GROUP") @XmlType(name="Group") public class Group extends Account{ - @Id + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + @XmlElement + @XmlIDREF @ManyToMany(mappedBy="groups") public List<Account> members; @@ -53,12 +62,6 @@ return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).append(this.getId()).toString(); } - @XmlElement - @XmlIDREF - public List<Account> getMembers() { - return members; - } - public void setMembers(List<Account> members) { this.members = members; } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java 2009-03-02 16:41:01 UTC (rev 37) @@ -1,6 +1,7 @@ package de.campussource.cse.cdmm; import javax.persistence.Column; +import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; @@ -9,19 +10,26 @@ 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.XmlIDREF; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; @Entity +@Embeddable @Table(name = "CDMM_ROLE") public class Role extends de.campussource.cse.cdmm.Entity{ - @Id + @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; + @XmlID + public String getIdAsLong(){ + return id.toString(); + } + @Column(name="ROLE_TYPE") private RoleType type; Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-02 16:41:01 UTC (rev 37) @@ -0,0 +1,113 @@ +package de.campussource.cse.cdmm; + +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.ArrayList; +import java.util.List; + +import javax.xml.bind.JAXBContext; +import javax.xml.bind.JAXBException; +import javax.xml.bind.Marshaller; + +import junit.framework.TestCase; + +/** + * @author Sebastian Roekens + * + */ +public class TestXmlConversion extends TestCase { + private static Long currentTimeMillis = System.currentTimeMillis(); + + private Long createUniqueId(){ + return currentTimeMillis++; + } + + public void testConversionSimple(){ + Marshaller marshaller=null; + JAXBContext context=null; + try { + context = JAXBContext.newInstance(EntityContainer.class); + marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + } catch (JAXBException e) { + fail(e.getMessage()); + } + + Category categoryA = new Category(); + categoryA.setId(createUniqueId()); + + Category categoryB = new Category(); + categoryB.setId(createUniqueId()); + List<Category> categories = new ArrayList<Category>(); + categories.add(categoryA); + categoryB.setParents(categories); + + Course course = new Course(); + course.setId(createUniqueId()); + course.setCategories(categories); + + Account account = new Account(); + account.setId(createUniqueId()); + List<Account> accounts= new ArrayList<Account>(); + accounts.add(account); + + Group group = new Group(); + group.setId(createUniqueId()); + List<Group> groups = new ArrayList<Group>(); + groups.add(group); + + account.setGroups(groups); + group.setMembers(accounts); + + Role role = new Role(); + role.setId(createUniqueId()); + role.setAccount(account); + role.setCourse(course); + role.setType(RoleType.ASSISTENT); + + List<Role> roles = new ArrayList<Role>(); + roles.add(role); + account.setRoles(roles); + course.setRoles(roles); + + EntityContainer container = new EntityContainer(); + List<Account> accs = new ArrayList<Account>(); + accs.add(account); + container.setAccounts(accs); + + List<Category> cats = new ArrayList<Category>(); + cats.add(categoryA); cats.add(categoryB); + container.setCategories(cats); + + List<Course> cous = new ArrayList<Course>(); + cous.add(course); + container.setCourses(cous); + + List<Group> grps = new ArrayList<Group>(); + grps.add(group); + container.setGroups(grps); + + List<Role> rols = new ArrayList<Role>(); + rols.add(role); + container.setRoles(rols); + + + + try { + marshaller.marshal(container, System.out); + + Writer writer = new StringWriter(); + marshaller.marshal(container, writer); + writer.close(); + + } catch (JAXBException e) { + fail(e.getMessage()); + } catch (IOException e) { + fail(e.getMessage()); + } + + + } + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml 2009-03-02 15:09:47 UTC (rev 36) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml 2009-03-02 16:41:01 UTC (rev 37) @@ -17,7 +17,7 @@ <!-- <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/cseip?profileSQL=true&createDatabaseIfNotExist=true" />--> <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/cseip?createDatabaseIfNotExist=true" /> <property name="toplink.jdbc.user" value="root" /> - <property name="toplink.jdbc.password" value="masterkey" /> + <property name="toplink.jdbc.password" value="csesql" /> </properties> </persistence-unit> </persistence> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-02 15:09:51
|
Revision: 36 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=36&view=rev Author: roekens Date: 2009-03-02 15:09:47 +0000 (Mon, 02 Mar 2009) Log Message: ----------- added missing pieces Added Paths: ----------- 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/EntityDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AbstractPersistentUnitTest.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/log4j.properties Added: 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/AttributeDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeDao.java 2009-03-02 15:09:47 UTC (rev 36) @@ -0,0 +1,6 @@ +package de.campussource.cse.cdmm; +import de.campussource.cse.cdmm.DAOJPA; + +public class AttributeDao extends DAOJPA<Attribute> { + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: 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/EntityDao.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityDao.java 2009-03-02 15:09:47 UTC (rev 36) @@ -0,0 +1,6 @@ +package de.campussource.cse.cdmm; +import de.campussource.cse.cdmm.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/EntityDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AbstractPersistentUnitTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AbstractPersistentUnitTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AbstractPersistentUnitTest.java 2009-03-02 15:09:47 UTC (rev 36) @@ -0,0 +1,114 @@ +package de.campussource.cse.cdmm; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.ejb.EJB; +import javax.persistence.EntityManager; +import javax.persistence.EntityManagerFactory; +import javax.persistence.Persistence; +import javax.persistence.PersistenceContext; + +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; + +public abstract class AbstractPersistentUnitTest { + + protected static EntityManagerFactory entityManagerFactory; + protected EntityManager entityManager; + + @BeforeClass + public static void retrieveEntityManagerFactory() { + entityManagerFactory = Persistence.createEntityManagerFactory("cseip"); + } + + @Before + public void retrieveEntityManager() { + entityManager = entityManagerFactory.createEntityManager(); + } + + @After + public void closeEntity() { + entityManager.close(); + } + + @AfterClass + public static void closeFactory() { + entityManagerFactory.close(); + } + + // FIXME Extract to Util class + private void injectField(Object object, Field field, Object reference) { + boolean accessible = field.isAccessible(); + field.setAccessible(true); + try { + field.set(object, reference); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + field.setAccessible(accessible); + } + + // FIXME Extract to Util class + private Map<String, Object> context = new HashMap<String, Object>(); + + // FIXME Extract to Util class + protected void autowireByType(Object object) { + Field[] fields = retrieveAllDeclaredFieldsIncludedInheritance(object); + for (Field field : fields) { + if (field.isAnnotationPresent(PersistenceContext.class)) { + injectField(object, field, entityManager); + } + if (field.isAnnotationPresent(EJB.class)) { + try { + Class fieldClass = field.getType(); + Object target = context.get(fieldClass.getName()); + if (target == null) { + target = fieldClass.newInstance(); + autowireByType(target); + context.put(fieldClass.getName(), target); + } + injectField(object, field, target); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + } + } + } + + // FIXME Extract to Util class + private Field[] retrieveAllDeclaredFieldsIncludedInheritance(Object object) { + List<Field> fields = new ArrayList<Field>(); + Class clazz = object.getClass(); + while (clazz != null) { + fields.addAll(Arrays.asList(clazz.getDeclaredFields())); + clazz = clazz.getSuperclass(); + } + + return (Field[]) fields.toArray(new Field[fields.size()]); + } + + protected void txBegin() { + entityManager.getTransaction().begin(); + } + + protected void txCommit() { + entityManager.getTransaction().commit(); + } + + protected void commitAndBeginTx() { + txCommit(); + txBegin(); + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AbstractPersistentUnitTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml 2009-03-02 15:09:47 UTC (rev 36) @@ -0,0 +1,28 @@ +<persistence xmlns="http://java.sun.com/xml/ns/persistence" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" + version="1.0"> + <persistence-unit name="cseip" transaction-type="RESOURCE_LOCAL"> + <provider>oracle.toplink.essentials.PersistenceProvider</provider> + <class>de.campussource.cse.cdmm.Account</class> + <class>de.campussource.cse.cdmm.Attribute</class> + <class>de.campussource.cse.cdmm.Category</class> + <class>de.campussource.cse.cdmm.Course</class> + <class>de.campussource.cse.cdmm.Entity</class> + <class>de.campussource.cse.cdmm.Group</class> + <class>de.campussource.cse.cdmm.Role</class> + <properties> + <property name="toplink.ddl-generation" value="drop-and-create-tables" /> + <property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver" /> +<!-- <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/cseip?profileSQL=true&createDatabaseIfNotExist=true" />--> + <property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/cseip?createDatabaseIfNotExist=true" /> + <property name="toplink.jdbc.user" value="root" /> + <property name="toplink.jdbc.password" value="masterkey" /> + </properties> + </persistence-unit> +</persistence> + + + + + \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/META-INF/persistence.xml ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/log4j.properties =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/log4j.properties (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/log4j.properties 2009-03-02 15:09:47 UTC (rev 36) @@ -0,0 +1,15 @@ +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.Target=System.out +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n + +log4j.rootCategory=debug, stdout + +log4j.logger.org.hibernate=info + +log4j.logger.oracle.toplink=debug + +log4j.logger.org.hibernate.SQL=debug +log4j.logger.org.hibernate.type=debug +log4j.logger.org.hibernate.id=debug +log4j.logger.org.hibernate.cache=debug \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/resources/log4j.properties ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-03 12:46:01
|
Revision: 41 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=41&view=rev Author: roekens Date: 2009-03-03 12:45:56 +0000 (Tue, 03 Mar 2009) Log Message: ----------- update for inheritance problem, and use of attributes Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.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/Attribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java 2009-03-03 10:48:08 UTC (rev 40) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java 2009-03-03 12:45:56 UTC (rev 41) @@ -37,7 +37,7 @@ private de.campussource.cse.cdmm.Entity entity; - @XmlElement + @XmlElement() public String getName() { return name; } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java 2009-03-03 10:48:08 UTC (rev 40) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java 2009-03-03 12:45:56 UTC (rev 41) @@ -9,6 +9,7 @@ import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; +import javax.xml.bind.annotation.XmlAccessorOrder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlID; @@ -29,8 +30,8 @@ @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - @XmlID - @XmlElement(name="id") + @XmlTransient + @Override public String getIdentityString( ) { return ( id != null ) ? id.toString() : "0"; } 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 10:48:08 UTC (rev 40) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-03 12:45:56 UTC (rev 41) @@ -54,6 +54,15 @@ Group group = new Group(); group.setId(createUniqueId()); + + Attribute att = new Attribute(); + att.setName("testName"); + att.setValue("testValue"); + List<Attribute> atts = new ArrayList<Attribute>(); + atts.add(att); + + group.setAttributes(atts); + List<Group> groups = new ArrayList<Group>(); groups.add(group); @@ -92,8 +101,9 @@ rols.add(role); container.setRoles(rols); + + - try { marshaller.marshal(container, System.out); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-03 13:37:28
|
Revision: 42 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=42&view=rev Author: roekens Date: 2009-03-03 13:36:45 +0000 (Tue, 03 Mar 2009) Log Message: ----------- fix to define property order in xml conversion. still buggy due to inheritance Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Account.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.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/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Account.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Account.java 2009-03-03 13:36:45 UTC (rev 42) @@ -16,6 +16,7 @@ import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; @@ -25,7 +26,8 @@ @Entity @Embeddable @Table(name = "CDMM_ACCOUNT") -@XmlType(name="Account") +@XmlRootElement +@XmlType(propOrder={"identityString", "groups", "roles"}) public class Account extends de.campussource.cse.cdmm.Entity{ @Id Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Attribute.java 2009-03-03 13:36:45 UTC (rev 42) @@ -10,11 +10,15 @@ 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 Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Category.java 2009-03-03 13:36:45 UTC (rev 42) @@ -15,6 +15,7 @@ import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; @@ -24,7 +25,8 @@ @Entity @Embeddable @Table(name = "CDMM_CATEGORY") -@XmlType(name="Category") +@XmlRootElement +@XmlType(propOrder={"identityString", "parents", "children", "courses"}) public class Category extends de.campussource.cse.cdmm.Entity { @Id @@ -120,5 +122,10 @@ public void setParents(List<Category> parents) { this.parents = parents; } + + @XmlTransient + public boolean isRoot(){ + return ((parents==null)||parents.size()==0); + } } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Course.java 2009-03-03 13:36:45 UTC (rev 42) @@ -17,7 +17,9 @@ import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlID; 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; @@ -25,6 +27,8 @@ @Entity @Embeddable @Table(name = "CDMM_COURSE") +@XmlRootElement +@XmlType(propOrder={"identityString", "categories", "parent", "workgroups", "roles"}) public class Course extends de.campussource.cse.cdmm.Entity{ @Id Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Entity.java 2009-03-03 13:36:45 UTC (rev 42) @@ -8,8 +8,12 @@ import javax.persistence.OneToMany; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; +import javax.xml.bind.annotation.XmlType; +@XmlRootElement +@XmlType(propOrder={"attributes"}) public class Entity{ @Id Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Group.java 2009-03-03 13:36:45 UTC (rev 42) @@ -9,11 +9,10 @@ import javax.persistence.Id; import javax.persistence.ManyToMany; import javax.persistence.Table; -import javax.xml.bind.annotation.XmlAccessorOrder; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; -import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlIDREF; +import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; @@ -23,7 +22,8 @@ @Entity @Embeddable @Table(name = "CDMM_GROUP") -@XmlType(name="Group") +@XmlRootElement +@XmlType(propOrder={"members"}) public class Group extends Account{ @Id Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java 2009-03-03 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Role.java 2009-03-03 13:36:45 UTC (rev 42) @@ -12,7 +12,9 @@ import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlID; 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; @@ -20,6 +22,8 @@ @Entity @Embeddable @Table(name = "CDMM_ROLE") +@XmlRootElement +@XmlType(propOrder={"identityString", "type", "account", "course"}) public class Role extends de.campussource.cse.cdmm.Entity{ @Id 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 12:45:56 UTC (rev 41) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-03 13:36:45 UTC (rev 42) @@ -34,6 +34,25 @@ fail(e.getMessage()); } + EntityContainer container = generateTestStructure(); + + try { + marshaller.marshal(container, System.out); + + Writer writer = new StringWriter(); + marshaller.marshal(container, writer); + writer.close(); + + } catch (JAXBException e) { + fail(e.getMessage()); + } catch (IOException e) { + fail(e.getMessage()); + } + + + } + + private EntityContainer generateTestStructure() { Category categoryA = new Category(); categoryA.setId(createUniqueId()); @@ -46,6 +65,9 @@ Course course = new Course(); course.setId(createUniqueId()); course.setCategories(categories); + + List<Course> cl = new ArrayList<Course>(); cl.add(course); + categoryA.setCourses(cl); Account account = new Account(); account.setId(createUniqueId()); @@ -100,24 +122,7 @@ List<Role> rols = new ArrayList<Role>(); rols.add(role); container.setRoles(rols); - - - - - try { - marshaller.marshal(container, System.out); - - Writer writer = new StringWriter(); - marshaller.marshal(container, writer); - writer.close(); - - } catch (JAXBException e) { - fail(e.getMessage()); - } catch (IOException e) { - fail(e.getMessage()); - } - - + return container; } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <ro...@us...> - 2009-03-04 12:12:54
|
Revision: 48 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=48&view=rev Author: roekens Date: 2009-03-04 12:12:29 +0000 (Wed, 04 Mar 2009) Log Message: ----------- defined structural xml changes, categories are defined in hierarchy in xml, and roles are defined as parts of courses Modified Paths: -------------- 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/EntityContainer.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/domain/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-04 11:56:09 UTC (rev 47) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-04 12:12:29 UTC (rev 48) @@ -35,7 +35,6 @@ @XmlElementWrapper(name="roles") @XmlElement(name="role") - @XmlIDREF public List<Role> getRoles() { return roles; } Modified: 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 2009-03-04 11:56:09 UTC (rev 47) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-04 12:12:29 UTC (rev 48) @@ -31,10 +31,6 @@ @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; @@ -59,10 +55,6 @@ this.courses = courses; } - public void setRoles(List<Role> roles) { - this.roles = roles; - } - public void setAccounts(List<Account> accounts) { this.accounts = accounts; } @@ -91,10 +83,6 @@ return courses; } - @XmlTransient - public List<Role> getRoles() { - return roles; - } @XmlTransient public List<Account> getAccounts() { @@ -108,7 +96,7 @@ @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(); + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append(categories.toArray()).append(courses.toArray()).append(accounts.toArray()).append(groups.toArray()).toString(); } 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-04 11:56:09 UTC (rev 47) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-04 12:12:29 UTC (rev 48) @@ -112,13 +112,16 @@ Category categoryB = new Category(); categoryB.setId(createUniqueId()); - List<Category> categories = new ArrayList<Category>(); - categories.add(categoryA); - categoryB.setParents(categories); + List<Category> parentCategory = new ArrayList<Category>(); + parentCategory.add(categoryA); + List<Category> childCategory = new ArrayList<Category>(); + childCategory.add(categoryB); + categoryB.setParents(parentCategory); + categoryA.setChildren(childCategory); Course course = new Course(); course.setId(createUniqueId()); - course.setCategories(categories); + course.setCategories(parentCategory); List<Course> cl = new ArrayList<Course>(); cl.add(course); categoryA.setCourses(cl); @@ -162,7 +165,7 @@ container.setAccounts(accs); List<Category> cats = new ArrayList<Category>(); - cats.add(categoryA); cats.add(categoryB); + cats.add(categoryA); container.setCategories(cats); List<Course> cous = new ArrayList<Course>(); @@ -173,9 +176,6 @@ grps.add(group); container.setGroups(grps); - List<Role> rols = new ArrayList<Role>(); - rols.add(role); - container.setRoles(rols); return container; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-04 12:48:32
|
Revision: 50 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=50&view=rev Author: roekens Date: 2009-03-04 12:48:28 +0000 (Wed, 04 Mar 2009) Log Message: ----------- - removed attributes definition <- attributes are getting realized in a different way - introduced constants class to prevent repetetive string definitions in java classes - introduced namespaces for xml Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/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 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/Constants.java Removed Paths: ------------- 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/domain/Attribute.java Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-04 12:48:28 UTC (rev 50) @@ -0,0 +1,5 @@ +package de.campussource.cse.cdmm; + +public class Constants{ + public static final String NAMESPACE_DATATYPES="http://cse.campussource.de/DataTypes"; +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: 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/AttributeDao.java 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/AttributeDao.java 2009-03-04 12:48:28 UTC (rev 50) @@ -1,7 +0,0 @@ -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> { - -} 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-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-04 12:48:28 UTC (rev 50) @@ -15,11 +15,13 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import de.campussource.cse.cdmm.Constants; + @Entity @Embeddable @Table(name = "CDMM_ACCOUNT") @XmlRootElement -@XmlType(propOrder={ "groups", "roles"}) +@XmlType(propOrder={ "groups", "roles"}, namespace=Constants.NAMESPACE_DATATYPES) public class Account extends de.campussource.cse.cdmm.domain.Entity{ @OneToMany(mappedBy="account") Deleted: 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 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-04 12:48:28 UTC (rev 50) @@ -1,83 +0,0 @@ -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; - } - -} 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-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-04 12:48:28 UTC (rev 50) @@ -15,11 +15,13 @@ import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; +import de.campussource.cse.cdmm.Constants; + @Entity @Embeddable @Table(name = "CDMM_CATEGORY") @XmlRootElement -@XmlType(propOrder={ "parents", "children", "courses"}) +@XmlType(propOrder={ "parents", "children", "courses"}, namespace=Constants.NAMESPACE_DATATYPES) public class Category extends de.campussource.cse.cdmm.domain.Entity { @ManyToMany Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-04 12:48:28 UTC (rev 50) @@ -19,11 +19,13 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; +import de.campussource.cse.cdmm.Constants; + @Entity @Embeddable @Table(name = "CDMM_COURSE") @XmlRootElement -@XmlType(propOrder={ "categories", "parent", "workgroups", "roles"}) +@XmlType(propOrder={ "categories", "parent", "workgroups", "roles"}, namespace=Constants.NAMESPACE_DATATYPES) public class Course extends de.campussource.cse.cdmm.domain.Entity{ @ManyToOne Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-04 12:48:28 UTC (rev 50) @@ -1,43 +1,29 @@ 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.Constants; import de.campussource.cse.cdmm.IdAdapter; @XmlRootElement -@XmlType(propOrder={"id","attributes"}) +@XmlType(propOrder={"id"}, namespace=Constants.NAMESPACE_DATATYPES) 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(){ } @@ -71,10 +57,6 @@ 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; } Modified: 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 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-04 12:48:28 UTC (rev 50) @@ -7,21 +7,21 @@ import javax.xml.bind.annotation.XmlElements; 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; +import de.campussource.cse.cdmm.Constants; + @XmlRootElement +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) 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; @@ -42,10 +42,6 @@ this.entities = entities; } - public void setAttributes(List<Attribute> attributes) { - this.attributes = attributes; - } - public void setCategories(List<Category> categories) { this.categories = categories; } @@ -68,11 +64,6 @@ } @XmlTransient - public List<Attribute> getAttributes() { - return attributes; - } - - @XmlTransient public List<Category> getCategories() { return categories; } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-04 12:48:28 UTC (rev 50) @@ -15,11 +15,13 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; +import de.campussource.cse.cdmm.Constants; + @Entity @Embeddable @Table(name = "CDMM_GROUP") @XmlRootElement -@XmlType(propOrder={"members"}) +@XmlType(propOrder={"members"}, namespace=Constants.NAMESPACE_DATATYPES) public class Group extends Account{ @ManyToMany(mappedBy="groups") Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-04 12:48:28 UTC (rev 50) @@ -11,13 +11,14 @@ import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; +import de.campussource.cse.cdmm.Constants; import de.campussource.cse.cdmm.RoleType; @Entity @Embeddable @Table(name = "CDMM_ROLE") @XmlRootElement -@XmlType(propOrder={"type", "account", "course"}) +@XmlType(propOrder={"type", "account", "course"}, namespace=Constants.NAMESPACE_DATATYPES) public class Role extends de.campussource.cse.cdmm.domain.Entity{ @Column(name="ROLE_TYPE") 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-04 12:25:48 UTC (rev 49) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-04 12:48:28 UTC (rev 50) @@ -21,7 +21,6 @@ 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; @@ -49,6 +48,7 @@ marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } catch (JAXBException e) { + e.printStackTrace(); fail(e.getMessage()); } @@ -134,14 +134,6 @@ Group group = new Group(); group.setId(createUniqueId()); - Attribute att = new Attribute(); - att.setName("testName"); - att.setValue("testValue"); - List<Attribute> atts = new ArrayList<Attribute>(); - atts.add(att); - - group.setAttributes(atts); - List<Group> groups = new ArrayList<Group>(); groups.add(group); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-04 14:09:21
|
Revision: 51 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=51&view=rev Author: roekens Date: 2009-03-04 14:09:18 +0000 (Wed, 04 Mar 2009) Log Message: ----------- - moved jaxb annotations from attributes to getters in EntityContainer class to prevent unnecessary use of @XmlTransient - added constructors (for creating of objects with set id) - fix for xml structure, accounts and groups are bundled and categories are defined in hierarchy Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/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 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/domain/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-04 14:09:18 UTC (rev 51) @@ -37,6 +37,10 @@ public Account(){ } + public Account(Long id){ + setId(id); + } + public Account(Long id, List<Group> groups, List<Role> roles){ setId(id); this.groups = groups; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-04 14:09:18 UTC (rev 51) @@ -40,6 +40,10 @@ public Category() { } + public Category(Long id){ + setId(id); + } + public Category(Long id, List<Category> children, List<Course> courses, List<Category> parents){ setId(id); this.children = children; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-04 14:09:18 UTC (rev 51) @@ -48,6 +48,10 @@ public Course(){ } + public Course(Long id){ + setId(id); + } + public Course(Long id, List<Category> categories, Course parent, List<Role> roles, List<Course> workgroups){ setId(id); this.categories = categories; Modified: 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 2009-03-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-04 14:09:18 UTC (rev 51) @@ -6,7 +6,6 @@ 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 javax.xml.bind.annotation.XmlType; import org.apache.commons.lang.builder.ToStringBuilder; @@ -18,34 +17,12 @@ @XmlType(namespace=Constants.NAMESPACE_DATATYPES) public class EntityContainer{ - @XmlElementWrapper(name="entities") - @XmlElement(name="entity") - private List<Entity> entities; + private Category rootCategory; - @XmlElementWrapper(name="categories") - @XmlElement(name="category") - private List<Category> categories; - - @XmlElementWrapper(name="courses") - @XmlElement(name="course") private List<Course> courses; - @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 setCategories(List<Category> categories) { - this.categories = categories; - } - public void setCourses(List<Course> courses) { this.courses = courses; } @@ -54,40 +31,32 @@ this.accounts = accounts; } - public void setGroups(List<Group> groups) { - this.groups = groups; + @XmlElement(name="category") + public Category getRootCategory() { + return rootCategory; } - @XmlTransient - public List<Entity> getEntities() { - return entities; - } - - @XmlTransient - public List<Category> getCategories() { - return categories; - } - - @XmlTransient + @XmlElementWrapper(name="courses") + @XmlElement(name="course") public List<Course> getCourses() { return courses; } - @XmlTransient + @XmlElementWrapper(name="accounts") + @XmlElements(value= {@XmlElement(name="account",type=Account.class), @XmlElement(name="group",type=Group.class)}) 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(groups.toArray()).toString(); + return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append(rootCategory).append(courses.toArray()).append(accounts.toArray()).toString(); } + + public void setRootCategory(Category rootCategory) { + this.rootCategory = rootCategory; + } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-04 14:09:18 UTC (rev 51) @@ -30,6 +30,10 @@ public Group(){ } + public Group(Long id){ + setId(id); + } + public Group(Long id, List<Account> members){ setId(id); this.members = members; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-04 14:09:18 UTC (rev 51) @@ -42,6 +42,15 @@ this.course = course; } + public Role(Long id, RoleType type){ + setId(id); + this.type = type; + } + + public Role(Long id) { + setId(id); + } + @XmlElement public RoleType getType() { return type; 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-04 12:48:28 UTC (rev 50) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-04 14:09:18 UTC (rev 51) @@ -15,6 +15,7 @@ import javax.xml.transform.Result; import javax.xml.transform.dom.DOMResult; +import org.junit.Test; import org.w3c.dom.Document; import com.sun.org.apache.xml.internal.serialize.OutputFormat; @@ -40,6 +41,7 @@ return currentTimeMillis++; } + @Test public void testConversionSimple(){ Marshaller marshaller=null; JAXBContext context=null; @@ -107,41 +109,53 @@ } private EntityContainer generateTestStructure() { - Category categoryA = new Category(); - categoryA.setId(createUniqueId()); + //create small category structure: parentCategory -> childCategory + Category parentCategory = new Category(createUniqueId()); + Category childCategory = new Category(createUniqueId()); + + List<Category> parentCategoryList = new ArrayList<Category>(); + parentCategoryList.add(parentCategory); - Category categoryB = new Category(); - categoryB.setId(createUniqueId()); - List<Category> parentCategory = new ArrayList<Category>(); - parentCategory.add(categoryA); - List<Category> childCategory = new ArrayList<Category>(); - childCategory.add(categoryB); - categoryB.setParents(parentCategory); - categoryA.setChildren(childCategory); + List<Category> childCategoryList = new ArrayList<Category>(); + childCategoryList.add(childCategory); - Course course = new Course(); - course.setId(createUniqueId()); - course.setCategories(parentCategory); - - List<Course> cl = new ArrayList<Course>(); cl.add(course); - categoryA.setCourses(cl); + parentCategory.setChildren(childCategoryList); + childCategory.setParents(parentCategoryList); - Account account = new Account(); - account.setId(createUniqueId()); + + //create Course with one child workgroup + Course course = new Course(createUniqueId()); + course.setCategories(parentCategoryList); + + Course workgroup = new Course(createUniqueId()); + workgroup.setParent(course); + workgroup.setRoles(null); + List<Course> workgroups = new ArrayList<Course>(); + workgroups.add(workgroup); + + course.setWorkgroups(workgroups); + + //add course to parent Category + List<Course> courses = new ArrayList<Course>(); + courses.add(course); + + parentCategory.setCourses(courses); + + //create account and a group and put account to group + Account account = new Account(createUniqueId()); List<Account> accounts= new ArrayList<Account>(); accounts.add(account); - Group group = new Group(); - group.setId(createUniqueId()); + Group group = new Group(createUniqueId()); + group.setMembers(accounts); List<Group> groups = new ArrayList<Group>(); groups.add(group); account.setGroups(groups); - group.setMembers(accounts); - - Role role = new Role(); - role.setId(createUniqueId()); + + //define role between account and course + Role role = new Role(createUniqueId()); role.setAccount(account); role.setCourse(course); role.setType(RoleType.ASSISTANT); @@ -151,23 +165,20 @@ account.setRoles(roles); course.setRoles(roles); + // put all created objects into entitycontainer + EntityContainer container = new EntityContainer(); List<Account> accs = new ArrayList<Account>(); - accs.add(account); + accs.add(account); + accs.add(group); container.setAccounts(accs); - List<Category> cats = new ArrayList<Category>(); - cats.add(categoryA); - container.setCategories(cats); + container.setRootCategory(parentCategory); List<Course> cous = new ArrayList<Course>(); cous.add(course); container.setCourses(cous); - List<Group> grps = new ArrayList<Group>(); - grps.add(group); - container.setGroups(grps); - return container; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-05 12:34:45
|
Revision: 52 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=52&view=rev Author: roekens Date: 2009-03-05 12:34:42 +0000 (Thu, 05 Mar 2009) Log Message: ----------- - adding of several testing methods for each domain object - code polishing: introduced constants class and removed string definitions from entity classes 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/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 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-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-05 12:34:42 UTC (rev 52) @@ -1,5 +1,60 @@ package de.campussource.cse.cdmm; public class Constants{ + //namespace public static final String NAMESPACE_DATATYPES="http://cse.campussource.de/DataTypes"; + + //xml structure elements + public static final String COURSE = "course"; + public static final String COURSES = "courses"; + public static final String CATEGORY = "category"; + public static final String CATEGORIES = "categories"; + public static final String WORKGROUP = "workgroup"; + public static final String WORKGROUPS = "workgroups"; + public static final String ROLE = "role"; + public static final String ROLES = "roles"; + public static final String ACCOUNT = "account"; + public static final String ACCOUNTS = "accounts"; + public static final String GROUP = "group"; + public static final String GROUPS = "groups"; + public static final String PARENT = "parent"; + public static final String PARENTS = "parents"; + public static final String MEMBERS = "members"; + public static final String TYPE = "type"; + + //entity ids + public static final String COURSE_ID = "courseId"; + public static final String CATEGORY_ID = "categoryId"; + public static final String ROLE_ID = "roleId"; + public static final String ACCOUNT_ID = "accountId"; + public static final String GROUP_ID = "groupId"; + public static final String MEMBER = "member"; + + //entity property names + public static final String PROPERTY_PARENTS = "parents"; + public static final String PROPERTY_CHILDREN = "children"; + public static final String PROPERTY_COURSES = "courses"; + + //table names + public static final String TABLENAME_ACCOUNT = "CDMM_ACCOUNT"; + public static final String TABLENAME_CATEGORY = "CDMM_CATEGORY"; + public static final String TABLENAME_COURSE = "CDMM_COURSE"; + 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_ROLE_TYPE="ROLE_TYPE"; + public static final String COLUMNNAME_CHILD_ID="CHILD_ID"; + public static final String COLUMNNAME_PARENT_ID="PARENT_ID"; + public static final String COLUMNNAME_GROUP_ID="GROUP_ID"; + public static final String COLUMNNAME_ACCOUNT_ID = "ACCOUNT_ID"; + public static final String COLUMNNAME_CATEGORY_ID = "CATEGORY_ID"; + public static final String COLUMNNAME_COURSE_ID = "COURSE_ID"; + + public static final String ID = "id"; + } \ No newline at end of file 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-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-05 12:34:42 UTC (rev 52) @@ -19,19 +19,19 @@ @Entity @Embeddable -@Table(name = "CDMM_ACCOUNT") +@Table(name = Constants.TABLENAME_ACCOUNT) @XmlRootElement -@XmlType(propOrder={ "groups", "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="account") + @OneToMany(mappedBy=Constants.ACCOUNT) private List<Role> roles; @ManyToMany @JoinTable( - name = "CDMM_GROUP2ACCOUNT", - joinColumns={@JoinColumn(name="GROUP_ID")}, - inverseJoinColumns={@JoinColumn(name="ACCOUNT_ID")}) + name = Constants.TABLENAME_GROUP2ACCOUNT, + joinColumns={@JoinColumn(name=Constants.COLUMNNAME_GROUP_ID)}, + inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_GROUP_ID)}) private List<Group> groups; public Account(){ @@ -47,8 +47,8 @@ this.roles = roles; } - @XmlElementWrapper(name="roles") - @XmlElement(name="role") + @XmlElementWrapper(name=Constants.ROLES) + @XmlElement(name=Constants.ROLE) public List<Role> getRoles() { return roles; } @@ -57,8 +57,8 @@ this.roles = roles; } - @XmlElementWrapper(name="groups") - @XmlElement(name="group") + @XmlElementWrapper(name=Constants.GROUPS) + @XmlElement(name=Constants.GROUP) @XmlIDREF public List<Group> getGroups() { return groups; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-05 12:34:42 UTC (rev 52) @@ -19,22 +19,22 @@ @Entity @Embeddable -@Table(name = "CDMM_CATEGORY") +@Table(name = Constants.TABLENAME_CATEGORY) @XmlRootElement -@XmlType(propOrder={ "parents", "children", "courses"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={Constants.PROPERTY_PARENTS, Constants.PROPERTY_CHILDREN, Constants.PROPERTY_COURSES}, namespace=Constants.NAMESPACE_DATATYPES) 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")}) + name = Constants.TABLENAME_CATEGORY2CATEGORY, + joinColumns={@JoinColumn(name=Constants.COLUMNNAME_CHILD_ID)}, + inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_PARENT_ID)}) private List<Category> parents; - @ManyToMany(mappedBy="parent") + @ManyToMany(mappedBy=Constants.PARENT) private List<Category> children; - @ManyToMany(mappedBy="categories") + @ManyToMany(mappedBy=Constants.CATEGORIES) private List<Course> courses; public Category() { @@ -52,8 +52,8 @@ } - @XmlElementWrapper(name="categories") - @XmlElement(name="category") + @XmlElementWrapper(name=Constants.CATEGORIES) + @XmlElement(name=Constants.CATEGORY) public List<Category> getChildren() { return children; } @@ -62,8 +62,8 @@ this.children = children; } - @XmlElementWrapper(name="courses") - @XmlElement(name="course") + @XmlElementWrapper(name=Constants.COURSES) + @XmlElement(name=Constants.COURSE) @XmlIDREF public List<Course> getCourses() { return courses; @@ -73,8 +73,8 @@ this.courses = courses; } - @XmlElementWrapper(name="parents") - @XmlElement(name="parent") + @XmlElementWrapper(name=Constants.PARENTS) + @XmlElement(name=Constants.PARENT) @XmlIDREF public List<Category> getParents() { return parents; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-05 12:34:42 UTC (rev 52) @@ -23,26 +23,26 @@ @Entity @Embeddable -@Table(name = "CDMM_COURSE") +@Table(name = Constants.TABLENAME_COURSE) @XmlRootElement -@XmlType(propOrder={ "categories", "parent", "workgroups", "roles"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={ Constants.CATEGORIES, Constants.PARENT, Constants.WORKGROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) public class Course extends de.campussource.cse.cdmm.domain.Entity{ @ManyToOne - @JoinTable(name="PARENT_ID") + @JoinTable(name=Constants.COLUMNNAME_PARENT_ID) private Course parent; - @OneToMany(mappedBy="parent") + @OneToMany(mappedBy=Constants.PARENT) private List<Course> workgroups; @ManyToMany @JoinTable( - name = "CDMM_COURSE2CAT", - joinColumns={@JoinColumn(name="CATEGORY_ID")}, - inverseJoinColumns={@JoinColumn(name="COURSE_ID")}) + name = Constants.TABLENAME_COURSE2CATEGORY, + joinColumns={@JoinColumn(name=Constants.COLUMNNAME_CATEGORY_ID)}, + inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_COURSE_ID)}) private List<Category> categories; - @OneToMany(mappedBy="course") + @OneToMany(mappedBy=Constants.COURSE) private List<Role> roles; public Course(){ @@ -64,7 +64,7 @@ return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).toString(); } - @XmlElement + @XmlElement(name=Constants.PARENT) @XmlIDREF public Course getParent() { return parent; @@ -74,8 +74,8 @@ this.parent = parent; } - @XmlElementWrapper(name="workgroups") - @XmlElement(name="workgroup") + @XmlElementWrapper(name=Constants.WORKGROUPS) + @XmlElement(name=Constants.WORKGROUP) public List<Course> getWorkgroups() { return workgroups; } @@ -84,8 +84,8 @@ this.workgroups = workgroups; } - @XmlElementWrapper(name="categories") - @XmlElement(name="category", required=true) + @XmlElementWrapper(name=Constants.CATEGORIES) + @XmlElement(name=Constants.CATEGORY, required=true) @XmlIDREF public List<Category> getCategories() { return categories; @@ -95,8 +95,8 @@ this.categories = categories; } - @XmlElementWrapper(name="roles") - @XmlElement(name="role") + @XmlElementWrapper(name=Constants.ROLES) + @XmlElement(name=Constants.ROLE) public List<Role> getRoles() { return roles; } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-05 12:34:42 UTC (rev 52) @@ -17,7 +17,7 @@ import de.campussource.cse.cdmm.IdAdapter; @XmlRootElement -@XmlType(propOrder={"id"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={Constants.ID}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @Id @@ -63,7 +63,7 @@ @XmlID @XmlJavaTypeAdapter(value=IdAdapter.class) - @XmlAttribute(name="id") + @XmlAttribute(name=Constants.ID) public Long getId() { return id; }; Modified: 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 2009-03-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-05 12:34:42 UTC (rev 52) @@ -31,20 +31,20 @@ this.accounts = accounts; } - @XmlElement(name="category") + @XmlElement(name=Constants.CATEGORY) public Category getRootCategory() { return rootCategory; } - @XmlElementWrapper(name="courses") - @XmlElement(name="course") + @XmlElementWrapper(name=Constants.COURSES) + @XmlElement(name=Constants.COURSE) public List<Course> getCourses() { return courses; } - @XmlElementWrapper(name="accounts") - @XmlElements(value= {@XmlElement(name="account",type=Account.class), @XmlElement(name="group",type=Group.class)}) + @XmlElementWrapper(name=Constants.ACCOUNTS) + @XmlElements(value= {@XmlElement(name=Constants.ACCOUNT,type=Account.class), @XmlElement(name=Constants.GROUP,type=Group.class)}) public List<Account> getAccounts() { return accounts; } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-05 12:34:42 UTC (rev 52) @@ -19,12 +19,12 @@ @Entity @Embeddable -@Table(name = "CDMM_GROUP") +@Table(name = Constants.TABLENAME_GROUP) @XmlRootElement -@XmlType(propOrder={"members"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={Constants.MEMBERS}, namespace=Constants.NAMESPACE_DATATYPES) public class Group extends Account{ - @ManyToMany(mappedBy="groups") + @ManyToMany(mappedBy=Constants.GROUPS) private List<Account> members; public Group(){ @@ -69,8 +69,8 @@ this.members = members; } - @XmlElementWrapper(name="members") - @XmlElement(name="member") + @XmlElementWrapper(name=Constants.MEMBERS) + @XmlElement(name=Constants.MEMBER) @XmlIDREF public List<Account> getMembers() { return members; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-05 12:34:42 UTC (rev 52) @@ -16,20 +16,20 @@ @Entity @Embeddable -@Table(name = "CDMM_ROLE") +@Table(name = Constants.TABLENAME_ROLE) @XmlRootElement -@XmlType(propOrder={"type", "account", "course"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={Constants.TYPE, Constants.ACCOUNT, Constants.COURSE}, namespace=Constants.NAMESPACE_DATATYPES) public class Role extends de.campussource.cse.cdmm.domain.Entity{ - @Column(name="ROLE_TYPE") + @Column(name=Constants.COLUMNNAME_ROLE_TYPE) private RoleType type; @ManyToOne - @JoinColumn(name="ACCOUNT_ID") + @JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID) private Account account; @ManyToOne - @JoinColumn(name="COURSE_ID") + @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID) private Course course; public Role(){ @@ -60,7 +60,7 @@ this.type = type; } - @XmlElement(name="accountId", required=true) + @XmlElement(name=Constants.ACCOUNT_ID, required=true) @XmlIDREF public Account getAccount() { return account; @@ -70,7 +70,7 @@ this.account = account; } - @XmlElement(name="courseId", required=true) + @XmlElement(name=Constants.COURSE_ID, required=true) @XmlIDREF public Course getCourse() { return 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-04 14:09:18 UTC (rev 51) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-05 12:34:42 UTC (rev 52) @@ -42,11 +42,25 @@ } @Test - public void testConversionSimple(){ + public void testAccountXml(){ + System.out.println("----- entering Account XML Test -----"); + //create and fetch account object + EntityContainer container = generateTestStructure(); + Account account = null; + for (Account acc : container.getAccounts()){ + if (acc instanceof Account && !(acc instanceof Group)){ + account = acc; + } + } + if (account == null){ + fail("no account object created"); + } + + //create jaxb context and marshaller Marshaller marshaller=null; JAXBContext context=null; try { - context = JAXBContext.newInstance(EntityContainer.class); + context = JAXBContext.newInstance(Account.class); marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } catch (JAXBException e) { @@ -54,52 +68,100 @@ fail(e.getMessage()); } - EntityContainer container = generateTestStructure(); - - + //convert account object to xml String outputXml = ""; try { Writer writer = new StringWriter(); - marshaller.marshal(container, writer); + marshaller.marshal(account, writer); outputXml = writer.toString(); writer.close(); } catch (JAXBException e) { fail(e.getMessage()); } catch (IOException e) { fail(e.getMessage()); - } + } + assertTrue((outputXml!=null)&&(outputXml!="")); System.out.println(outputXml); + //convert xml back to an object and assert equality to source object + Account convertedAccount=null; try { Unmarshaller unmarshaller = context.createUnmarshaller(); - EntityContainer ec = (EntityContainer) unmarshaller.unmarshal(new StringReader(outputXml)); - System.out.println(ec.toString()); + convertedAccount = (Account) unmarshaller.unmarshal(new StringReader(outputXml)); + System.out.println(convertedAccount.toString()); } catch (JAXBException e) { fail(e.getMessage()); } + assertTrue(account.equals(convertedAccount)); + System.out.println("----- leaving Account XML Test -----"); + } + + @Test + public void testCategoryXml(){ + System.out.println("----- entering Category XML Test -----"); + //create and fetch category object + EntityContainer container = generateTestStructure(); + Category category = container.getRootCategory(); + assertNotNull(category); - final List<DOMResult> results = new ArrayList<DOMResult>(); + //create jaxb context and marshaller + Marshaller marshaller=null; + JAXBContext context=null; 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) { + context = JAXBContext.newInstance(Category.class); + marshaller = context.createMarshaller(); + marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); + } catch (JAXBException e) { e.printStackTrace(); fail(e.getMessage()); } + //convert account object to xml + String outputXml = ""; + try { + Writer writer = new StringWriter(); + marshaller.marshal(category, writer); + outputXml = writer.toString(); + writer.close(); + } catch (JAXBException e) { + fail(e.getMessage()); + } catch (IOException e) { + fail(e.getMessage()); + } + assertTrue((outputXml!=null)&&(outputXml!="")); + System.out.println(outputXml); - - } + //convert xml back to an object and assert equality to source object + Category convertedCategory=null; + try { + Unmarshaller unmarshaller = context.createUnmarshaller(); + convertedCategory = (Category) unmarshaller.unmarshal(new StringReader(outputXml)); + System.out.println(convertedCategory.toString()); + } catch (JAXBException e) { + fail(e.getMessage()); + } + assertTrue(category.equals(convertedCategory)); + System.out.println("----- leaving Category XML Test -----"); + } +// 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); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-05 13:09:52
|
Revision: 56 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=56&view=rev Author: roekens Date: 2009-03-05 13:09:43 +0000 (Thu, 05 Mar 2009) Log Message: ----------- - moved RoleType to domain package and fixed xml namespace - enhanced test output of xml schemas Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/RoleType.java Removed Paths: ------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleType.java Deleted: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleType.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleType.java 2009-03-05 12:56:15 UTC (rev 55) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleType.java 2009-03-05 13:09:43 UTC (rev 56) @@ -1,14 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; - -@XmlEnum -public enum RoleType{ - @XmlEnumValue(value="UNDEFINED") - UNDEFINED, - @XmlEnumValue(value="PARTICIPANT") - PARTICIPANT, - @XmlEnumValue(value="ASSISTANT") - ASSISTANT -} \ No newline at end of file Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-05 12:56:15 UTC (rev 55) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-05 13:09:43 UTC (rev 56) @@ -12,7 +12,7 @@ import javax.xml.bind.annotation.XmlType; import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.RoleType; +import de.campussource.cse.cdmm.domain.RoleType; @Entity @Embeddable Copied: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/RoleType.java (from rev 44, cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleType.java) =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/RoleType.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/RoleType.java 2009-03-05 13:09:43 UTC (rev 56) @@ -0,0 +1,18 @@ +package de.campussource.cse.cdmm.domain; + +import javax.xml.bind.annotation.XmlEnum; +import javax.xml.bind.annotation.XmlEnumValue; +import javax.xml.bind.annotation.XmlType; + +import de.campussource.cse.cdmm.Constants; + +@XmlEnum +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public enum RoleType{ + @XmlEnumValue(value="UNDEFINED") + UNDEFINED, + @XmlEnumValue(value="PARTICIPANT") + PARTICIPANT, + @XmlEnumValue(value="ASSISTANT") + ASSISTANT +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/RoleType.java ___________________________________________________________________ Added: svn:mime-type + text/plain 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-05 12:56:15 UTC (rev 55) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-05 13:09:43 UTC (rev 56) @@ -27,6 +27,7 @@ import de.campussource.cse.cdmm.domain.EntityContainer; import de.campussource.cse.cdmm.domain.Group; import de.campussource.cse.cdmm.domain.Role; +import de.campussource.cse.cdmm.domain.RoleType; import junit.framework.TestCase; @@ -300,7 +301,7 @@ Marshaller marshaller=null; JAXBContext context=null; try { - context = JAXBContext.newInstance(EntityContainer.class); + context = JAXBContext.newInstance(new Class[]{EntityContainer.class, Account.class, Group.class, Role.class, Course.class, Category.class}); marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } catch (JAXBException e) { @@ -321,7 +322,10 @@ return result; } }); - printDOMResult(results.get(0)); + for (DOMResult result : results){ + System.out.println("----- Generated XML Schema: "); + printDOMResult(result); + } } catch (IOException e) { e.printStackTrace(); fail(e.getMessage()); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-06 13:29:48
|
Revision: 62 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=62&view=rev Author: roekens Date: 2009-03-06 13:29:28 +0000 (Fri, 06 Mar 2009) Log Message: ----------- - introduction of new attribute structure where conversion to xml works fine, conversion back to java objects does not work yet -> espescially not the distinction of persistent and transient objects 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/Entity.java 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/domain/Attribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-06 10:11:09 UTC (rev 61) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-06 13:29:28 UTC (rev 62) @@ -29,11 +29,17 @@ public static final String ACCOUNT_ID = "accountId"; public static final String GROUP_ID = "groupId"; public static final String MEMBER = "member"; + public static final String ATTRIBUTE = "attribute"; + public static final String ATTRIBUTES = "attributes"; //entity property names + public static final String PROPERTY_ATTRIBUTES = "attributes"; public static final String PROPERTY_PARENTS = "parents"; public static final String PROPERTY_CHILDREN = "children"; public static final String PROPERTY_COURSES = "courses"; + public static final String PROPERTY_NAME = "name"; + public static final String PROPERTY_VALUE = "value"; + public static final String PROPERTY_PERSISTENT = "peristent"; //table names public static final String TABLENAME_ACCOUNT = "CDMM_ACCOUNT"; @@ -57,4 +63,7 @@ public static final String ID = "id"; + + + } \ No newline at end of file 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-06 13:29:28 UTC (rev 62) @@ -0,0 +1,58 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.xml.bind.annotation.XmlAttribute; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlValue; + +import de.campussource.cse.cdmm.Constants; + +@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) +@Embeddable +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public class Attribute { + + private String name; + + private String value; + + private boolean persistent; + + 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; + } + + public void setPersistent(boolean persistent) { + this.persistent = persistent; + } + + @XmlAttribute(name=Constants.PROPERTY_NAME) + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + @XmlValue + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 10:11:09 UTC (rev 61) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 13:29:28 UTC (rev 62) @@ -1,13 +1,15 @@ package de.campussource.cse.cdmm.domain; +import java.util.ArrayList; import java.util.List; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; -import javax.xml.bind.annotation.XmlAnyElement; import javax.xml.bind.annotation.XmlElement; +import javax.xml.bind.annotation.XmlElementWrapper; +import javax.xml.bind.annotation.XmlElements; import javax.xml.bind.annotation.XmlID; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @@ -20,15 +22,15 @@ import de.campussource.cse.cdmm.IdAdapter; @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(propOrder={Constants.ID, "any"}, namespace=Constants.NAMESPACE_DATATYPES) +@XmlType(propOrder={Constants.ID, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; - private List<Object> any; - + private List<Attribute> attributes; + public Entity(){ } @@ -73,12 +75,25 @@ return id; } - @XmlAnyElement - public List<Object> getAny() { - return any; + @XmlElementWrapper(name=Constants.ATTRIBUTES) + @XmlElements(value={@XmlElement(name=Constants.ATTRIBUTE,type=Attribute.class), @XmlElement(name=Constants.ATTRIBUTE,type=TransientAttribute.class), @XmlElement(name=Constants.ATTRIBUTE, type=PersistentAttribute.class)}) + public List<Attribute> getAttributes() { + return attributes; } - public void setAny(List<Object> any) { - this.any = any; - }; + private TransientAttribute attribute2TransientAttribute(Attribute attribute){ + return new TransientAttribute(attribute.getName(), attribute.getValue()); + } + + private PersistentAttribute attribute2PersistentAttribute(Attribute attribute){ + return new PersistentAttribute(attribute.getName(), attribute.getValue()); + } + + public void setAttributes(List<Attribute> attributes) { + List<Attribute> newAttributeList = new ArrayList<Attribute>(); + for (Attribute att : attributes){ + if (att.isPersistent() ? newAttributeList.add(attribute2PersistentAttribute(att)) : newAttributeList.add(attribute2TransientAttribute(att))); + } + this.attributes = newAttributeList; + } } \ No newline at end of file Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java 2009-03-06 13:29:28 UTC (rev 62) @@ -0,0 +1,22 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import de.campussource.cse.cdmm.Constants; + +@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) +@Embeddable +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public class PersistentAttribute extends Attribute { + + public PersistentAttribute(){} + + public PersistentAttribute(String name, String value){ + setName(name); + setValue(value); + setPersistent(true); + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 2009-03-06 13:29:28 UTC (rev 62) @@ -0,0 +1,20 @@ +package de.campussource.cse.cdmm.domain; + +import javax.persistence.Embeddable; +import javax.xml.bind.annotation.XmlRootElement; +import javax.xml.bind.annotation.XmlType; + +import de.campussource.cse.cdmm.Constants; + +@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) +@Embeddable +@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +public class TransientAttribute extends Attribute { + public TransientAttribute(){} + + public TransientAttribute(String name, String value){ + setName(name); + setValue(value); + setPersistent(false); + } +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java ___________________________________________________________________ Added: svn:mime-type + text/plain 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-06 10:11:09 UTC (rev 61) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-06 13:29:28 UTC (rev 62) @@ -21,14 +21,17 @@ import com.sun.org.apache.xml.internal.serialize.OutputFormat; import com.sun.org.apache.xml.internal.serialize.XMLSerializer; +import de.campussource.cse.cdmm.domain.Attribute; import de.campussource.cse.cdmm.domain.Account; 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; @@ -416,35 +419,28 @@ return container; } - - private class Test123{ - public String name; - public long value; - } @Test - public void testEntityXml(){ - System.out.println("----- entering Entity XML Test -----"); - //create entity object - Entity entity = new Entity(createUniqueId()); - String testString = "Dies ist ein TestString"; + public void testAttributeXml(){ + System.out.println("----- entering Attribute XML Test -----"); + //create category object with two attributes + Category category = new Category(createUniqueId()); + TransientAttribute att1 = new TransientAttribute(); + att1.setName("TNAME"); + att1.setValue("TVALUE"); + PersistentAttribute att2 = new PersistentAttribute(); + att2.setName("PNAME"); + att2.setValue("PVALUE"); + List<Attribute> attributes = new ArrayList<Attribute>(); + attributes.add(att1); + attributes.add(att2); + category.setAttributes(attributes); -// Test123 testClass = new Test123(); -// testClass.name="TestName"; -// testClass.value=1L; -// -// List<Object> objects = new ArrayList<Object>(); -// objects.add(testString); objects.add(testClass); -// -// entity.setAny(objects); -// -// assertNotNull(entity); - //create jaxb context and marshaller Marshaller marshaller=null; JAXBContext context=null; try { - context = JAXBContext.newInstance(Entity.class); + context = JAXBContext.newInstance(Category.class); marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } catch (JAXBException e) { @@ -456,7 +452,7 @@ String outputXml = ""; try { Writer writer = new StringWriter(); - marshaller.marshal(entity, writer); + marshaller.marshal(category, writer); outputXml = writer.toString(); writer.close(); } catch (JAXBException e) { @@ -467,23 +463,18 @@ assertTrue((outputXml!=null)&&(outputXml!="")); System.out.println(outputXml); - outputXml = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>" + - "<ns2:entity xmlns:ns2=\"http://cse.campussource.de/DataTypes\">" + - "<id>1236268822040</id>" + - "<test>124356</test>" + - "</ns2:entity>"; - //convert xml back to an object and assert equality to source object - Entity convertedEntity=null; + Category convertedCategory=null; try { Unmarshaller unmarshaller = context.createUnmarshaller(); - convertedEntity = (Entity) unmarshaller.unmarshal(new StringReader(outputXml)); - System.out.println(convertedEntity.toString()); + convertedCategory = (Category) unmarshaller.unmarshal(new StringReader(outputXml)); + System.out.println(convertedCategory.toString()); } catch (JAXBException e) { fail(e.getMessage()); } - assertFalse(entity.equals(convertedEntity)); - System.out.println("----- leaving Entity XML Test -----"); - } + assertTrue(category.equals(convertedCategory)); + System.out.println("----- leaving Attribute XML Test -----"); + + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-06 14:24:04
|
Revision: 63 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=63&view=rev Author: roekens Date: 2009-03-06 14:23:49 +0000 (Fri, 06 Mar 2009) Log Message: ----------- introduction of persistence realisation Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.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/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/Group.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-03-06 14:23:49 UTC (rev 63) @@ -3,15 +3,27 @@ import javax.ejb.EJB; import javax.ejb.Stateless; +import de.campussource.cse.cdmm.dao.*; + @Stateless public class DataModelManagerBean implements DataModelManager { -// @EJB -// private ClientObjectDao objectDao; -// -// @EJB -// private ClientInstanceDao instanceDao; - + @EJB + private AccountDao accountDao; + @EJB + private CategoryDao categoryDao; + @EJB + private CourseDao courseDao; + + @EJB + private EntityDao entityDao; + + @EJB + private GroupDao groupDao; + + @EJB + private RoleDao roleDao; + } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-06 14:23:49 UTC (rev 63) @@ -2,7 +2,6 @@ import java.util.List; -import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; @@ -18,7 +17,6 @@ import de.campussource.cse.cdmm.Constants; @Entity -@Embeddable @Table(name = Constants.TABLENAME_ACCOUNT) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={ Constants.GROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) Modified: 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 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-06 14:23:49 UTC (rev 63) @@ -1,6 +1,5 @@ package de.campussource.cse.cdmm.domain; -import javax.persistence.Embeddable; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; @@ -9,7 +8,6 @@ import de.campussource.cse.cdmm.Constants; @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@Embeddable @XmlType(namespace=Constants.NAMESPACE_DATATYPES) public class Attribute { Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-06 14:23:49 UTC (rev 63) @@ -2,7 +2,6 @@ import java.util.List; -import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; @@ -18,7 +17,6 @@ import de.campussource.cse.cdmm.Constants; @Entity -@Embeddable @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) @@ -31,7 +29,7 @@ inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_PARENT_ID)}) private List<Category> parents; - @ManyToMany(mappedBy=Constants.PARENT) + @ManyToMany(mappedBy=Constants.PARENTS) private List<Category> children; @ManyToMany(mappedBy=Constants.CATEGORIES) Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-06 14:23:49 UTC (rev 63) @@ -2,7 +2,6 @@ import java.util.List; -import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; @@ -22,7 +21,6 @@ import de.campussource.cse.cdmm.Constants; @Entity -@Embeddable @Table(name = Constants.TABLENAME_COURSE) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={ Constants.CATEGORIES, Constants.PARENT, Constants.WORKGROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 14:23:49 UTC (rev 63) @@ -7,6 +7,7 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Transient; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlElements; @@ -21,6 +22,7 @@ import de.campussource.cse.cdmm.Constants; import de.campussource.cse.cdmm.IdAdapter; +...@ja...rsistence.Entity @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.ID, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @@ -29,6 +31,7 @@ @GeneratedValue(strategy = GenerationType.AUTO) private Long id; + @Transient private List<Attribute> attributes; public Entity(){ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-06 14:23:49 UTC (rev 63) @@ -2,7 +2,6 @@ import java.util.List; -import javax.persistence.Embeddable; import javax.persistence.Entity; import javax.persistence.ManyToMany; import javax.persistence.Table; @@ -18,7 +17,6 @@ import de.campussource.cse.cdmm.Constants; @Entity -@Embeddable @Table(name = Constants.TABLENAME_GROUP) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.MEMBERS}, namespace=Constants.NAMESPACE_DATATYPES) Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java 2009-03-06 14:23:49 UTC (rev 63) @@ -1,13 +1,11 @@ package de.campussource.cse.cdmm.domain; -import javax.persistence.Embeddable; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import de.campussource.cse.cdmm.Constants; @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@Embeddable @XmlType(namespace=Constants.NAMESPACE_DATATYPES) public class PersistentAttribute extends Attribute { Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-06 14:23:49 UTC (rev 63) @@ -1,7 +1,6 @@ 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; @@ -15,7 +14,6 @@ import de.campussource.cse.cdmm.domain.RoleType; @Entity -@Embeddable @Table(name = Constants.TABLENAME_ROLE) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.TYPE, Constants.ACCOUNT, Constants.COURSE}, namespace=Constants.NAMESPACE_DATATYPES) Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 2009-03-06 13:29:28 UTC (rev 62) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 2009-03-06 14:23:49 UTC (rev 63) @@ -1,13 +1,11 @@ package de.campussource.cse.cdmm.domain; -import javax.persistence.Embeddable; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import de.campussource.cse.cdmm.Constants; @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@Embeddable @XmlType(namespace=Constants.NAMESPACE_DATATYPES) public class TransientAttribute extends Attribute { public TransientAttribute(){} Added: 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 (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-06 14:23:49 UTC (rev 63) @@ -0,0 +1,11 @@ +package de.campussource.cse.cdmm; + +import org.junit.Test; + +public class CategoryDaoTest extends AbstractPersistentUnitTest{ + + @Test + public void testXYZ(){ + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-09 13:14:12
|
Revision: 66 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=66&view=rev Author: roekens Date: 2009-03-09 13:13:44 +0000 (Mon, 09 Mar 2009) Log Message: ----------- - several bugfixes regarding jpa annotations, such as inheritance handling, column names, etc. - introduction of first jpa test cases for entities Modified Paths: -------------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java Added Paths: ----------- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-09 13:13:44 UTC (rev 66) @@ -21,6 +21,7 @@ public static final String PARENTS = "parents"; public static final String MEMBERS = "members"; public static final String TYPE = "type"; + public static final String ENTITY = "entity"; //entity ids public static final String COURSE_ID = "courseId"; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-03-09 13:13:44 UTC (rev 66) @@ -1,7 +1,7 @@ package de.campussource.cse.cdmm.dao; -import com.sun.xml.internal.stream.Entity; import de.campussource.cse.cdmm.dao.DAOJPA; +import de.campussource.cse.cdmm.domain.Entity; public class EntityDao extends DAOJPA<Entity> { Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @@ -16,8 +18,9 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.ACCOUNT) @Table(name = Constants.TABLENAME_ACCOUNT) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={ Constants.GROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) public class Account extends de.campussource.cse.cdmm.domain.Entity{ @@ -28,7 +31,7 @@ @ManyToMany @JoinTable( name = Constants.TABLENAME_GROUP2ACCOUNT, - joinColumns={@JoinColumn(name=Constants.COLUMNNAME_GROUP_ID)}, + joinColumns={@JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID)}, inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_GROUP_ID)}) private List<Group> groups; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @@ -16,7 +18,8 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.CATEGORY) +@Inheritance(strategy=InheritanceType.JOINED) @Table(name = Constants.TABLENAME_CATEGORY) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.PROPERTY_PARENTS, Constants.PROPERTY_CHILDREN, Constants.PROPERTY_COURSES}, namespace=Constants.NAMESPACE_DATATYPES) Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.JoinTable; import javax.persistence.ManyToMany; @@ -20,8 +22,9 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.COURSE) @Table(name = Constants.TABLENAME_COURSE) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={ Constants.CATEGORIES, Constants.PARENT, Constants.WORKGROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) public class Course extends de.campussource.cse.cdmm.domain.Entity{ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-09 13:13:44 UTC (rev 66) @@ -7,6 +7,8 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.Transient; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; @@ -22,13 +24,14 @@ import de.campussource.cse.cdmm.Constants; import de.campussource.cse.cdmm.IdAdapter; -...@ja...rsistence.Entity +...@ja...rsistence.Entity(name=Constants.ENTITY) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.ID, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @Id - @GeneratedValue(strategy = GenerationType.AUTO) + @GeneratedValue(strategy = GenerationType.SEQUENCE) private Long id; @Transient Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-09 13:13:44 UTC (rev 66) @@ -3,6 +3,8 @@ import java.util.List; import javax.persistence.Entity; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.ManyToMany; import javax.persistence.Table; import javax.xml.bind.annotation.XmlElement; @@ -16,8 +18,9 @@ import de.campussource.cse.cdmm.Constants; -@Entity +@Entity(name=Constants.GROUP) @Table(name = Constants.TABLENAME_GROUP) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.MEMBERS}, namespace=Constants.NAMESPACE_DATATYPES) public class Group extends Account{ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-09 13:13:44 UTC (rev 66) @@ -2,6 +2,10 @@ import javax.persistence.Column; import javax.persistence.Entity; +import javax.persistence.EnumType; +import javax.persistence.Enumerated; +import javax.persistence.Inheritance; +import javax.persistence.InheritanceType; import javax.persistence.JoinColumn; import javax.persistence.ManyToOne; import javax.persistence.Table; @@ -13,21 +17,23 @@ import de.campussource.cse.cdmm.Constants; import de.campussource.cse.cdmm.domain.RoleType; -@Entity +@Entity(name=Constants.ROLE) @Table(name = Constants.TABLENAME_ROLE) +@Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.TYPE, Constants.ACCOUNT, Constants.COURSE}, namespace=Constants.NAMESPACE_DATATYPES) public class Role extends de.campussource.cse.cdmm.domain.Entity{ - @Column(name=Constants.COLUMNNAME_ROLE_TYPE) + @Column(name=Constants.COLUMNNAME_ROLE_TYPE, nullable=false, insertable=true, updatable=true) + @Enumerated(EnumType.ORDINAL) private RoleType type; - @ManyToOne - @JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID) + @ManyToOne(optional=false) + @JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID, nullable=false) private Account account; - @ManyToOne - @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID) + @ManyToOne(optional=false) + @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID, nullable=false) private Course course; public Role(){ Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -0,0 +1,67 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.AccountDao; +import de.campussource.cse.cdmm.domain.Account; + +public class AccountDaoTest extends AbstractPersistentUnitTest { + private static Long currentTimeMillis = System.currentTimeMillis(); + + private AccountDao dao; + private Account account; + + @Before + public void setUp() { + account = newAccount(); + dao = new AccountDao(); + autowireByType(dao); + txBegin(); + } + + @Test + public void testPersistAccount() { + dao.persist(account); + assertNotNull(account.getId()); + txCommit(); + } + + + @Test + public void testFindAccount() { + dao.persist(account); + assertNotNull(account.getId()); + commitAndBeginTx(); + Account acid = dao.find(account.getId()); + assertEquals(account, acid); + } + + @Test + public void testRemoveAccount() { + dao.persist(account); + assertNotNull(account.getId()); + commitAndBeginTx(); + dao.remove(account); + commitAndBeginTx(); + assertNull(dao.find(account.getId())); + } + + @Test + public void testDoNotFindById() { + Account foundAccount = dao.find(0L); + assertNull(foundAccount); + } + + private Account newAccount() { + return new Account(createUniqueId()); + } + + private Long createUniqueId(){ + return currentTimeMillis++; + } +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-06 15:10:11 UTC (rev 65) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -4,8 +4,6 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; -import javax.persistence.RollbackException; - import org.junit.Before; import org.junit.Test; @@ -55,10 +53,10 @@ assertNull(dao.find(category.getId())); } - @Test(expected=javax.persistence.NoResultException.class) + @Test public void testDoNotFindById() { - //FIXME why no fail? - //assertNull(dao.find(1L)); + Category foundCategory = dao.find(0L); + assertNull(foundCategory); } private Category newCategory() { Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -0,0 +1,69 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.CourseDao; +import de.campussource.cse.cdmm.domain.Course; + +public class CourseDaoTest extends AbstractPersistentUnitTest { + + private static Long currentTimeMillis = System.currentTimeMillis(); + + private CourseDao dao; + private Course course; + + @Before + public void setUp() { + course = newCourse(); + dao = new CourseDao(); + autowireByType(dao); + txBegin(); + } + + @Test + public void testPersistCourse() { + dao.persist(course); + assertNotNull(course.getId()); + txCommit(); + } + + + @Test + public void testFindCourse() { + dao.persist(course); + assertNotNull(course.getId()); + commitAndBeginTx(); + Course coid = dao.find(course.getId()); + assertEquals(course, coid); + } + + @Test + public void testRemoveCategory() { + dao.persist(course); + assertNotNull(course.getId()); + commitAndBeginTx(); + dao.remove(course); + commitAndBeginTx(); + assertNull(dao.find(course.getId())); + } + + @Test + public void testDoNotFindById() { + Course foundCourse = dao.find(0L); + assertNull(foundCourse); + } + + private Course newCourse() { + return new Course(createUniqueId()); + } + + private Long createUniqueId(){ + return currentTimeMillis++; + } + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java 2009-03-09 13:13:44 UTC (rev 66) @@ -0,0 +1,92 @@ +package de.campussource.cse.cdmm; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.dao.AccountDao; +import de.campussource.cse.cdmm.dao.CourseDao; +import de.campussource.cse.cdmm.dao.RoleDao; +import de.campussource.cse.cdmm.domain.Account; +import de.campussource.cse.cdmm.domain.Course; +import de.campussource.cse.cdmm.domain.Role; +import de.campussource.cse.cdmm.domain.RoleType; + +public class RoleDaoTest extends AbstractPersistentUnitTest { + private static Long currentTimeMillis = System.currentTimeMillis(); + + private RoleDao dao; + private Role role; + + private CourseDao courseDao; + private Course course; + + private AccountDao accountDao; + private Account account; + + @Before + public void setUp() { + //set up daos + dao = new RoleDao(); + courseDao = new CourseDao(); + accountDao = new AccountDao(); + autowireByType(dao); + autowireByType(courseDao); + autowireByType(accountDao); + //create role object with needed dependencies + course = new Course(createUniqueId()); + account = new Account(createUniqueId()); + courseDao.persist(course); + accountDao.persist(account); + role = newRole(); + txBegin(); + } + + @Test + public void testPersistRole() { + dao.persist(role); + assertNotNull(role.getId()); + txCommit(); + } + + + @Test + public void testFindRole() { + dao.persist(role); + assertNotNull(role.getId()); + commitAndBeginTx(); + Role roid = dao.find(role.getId()); + assertEquals(role, roid); + } + + @Test + public void testRemoveRole() { + dao.persist(role); + assertNotNull(role.getId()); + commitAndBeginTx(); + dao.remove(role); + commitAndBeginTx(); + assertNull(dao.find(role.getId())); + } + + @Test + public void testDoNotFindById() { + Role foundRole= dao.find(0L); + assertNull(foundRole); + } + + private Role newRole() { + Role role = new Role(createUniqueId()); + role.setAccount(account); + role.setCourse(course); + role.setType(RoleType.ASSISTANT); + return role; + } + + private Long createUniqueId(){ + return currentTimeMillis++; + } +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
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. |
From: <ro...@us...> - 2009-03-10 10:14:49
|
Revision: 69 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=69&view=rev Author: roekens Date: 2009-03-10 10:14:25 +0000 (Tue, 10 Mar 2009) Log Message: ----------- - introduced convenience method for adding child categories to parent categories - bugfixed cascading in categories - enhanced category tests Modified Paths: -------------- 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 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 18:09:08 UTC (rev 68) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-10 10:14:25 UTC (rev 69) @@ -1,5 +1,6 @@ package de.campussource.cse.cdmm.domain; +import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; @@ -27,11 +28,11 @@ @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 { - @ManyToOne(cascade={CascadeType.REMOVE}) + @ManyToOne(cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @JoinTable(name = Constants.COLUMNNAME_CATEGORY2CATEGORY) private Category parent; - @OneToMany(mappedBy=Constants.PARENT, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) + @OneToMany(mappedBy=Constants.PARENT, cascade={CascadeType.REMOVE}) private List<Category> children; @ManyToMany(mappedBy=Constants.CATEGORIES) @@ -51,7 +52,17 @@ this.parent = parent; } + public boolean addChild(Category category){ + if (this.children == null){ + this.children = new ArrayList<Category>(); + } + if (!category.getParent().equals(this)){ + return false; + } + return this.children.add(category); + } + @XmlElementWrapper(name=Constants.CATEGORIES) @XmlElement(name=Constants.CATEGORY) public List<Category> getChildren() { 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 18:09:08 UTC (rev 68) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-10 10:14:25 UTC (rev 69) @@ -58,9 +58,13 @@ @Test public void testCascading(){ category.setParent(parentCategory); + parentCategory.addChild(category); dao.persist(category); + txCommit(); 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())); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-10 10:42:06
|
Revision: 70 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=70&view=rev Author: roekens Date: 2009-03-10 10:41:52 +0000 (Tue, 10 Mar 2009) Log Message: ----------- - added dependency check for category hierarchy - added test - added comments Modified Paths: -------------- 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 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-10 10:14:25 UTC (rev 69) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-03-10 10:41:52 UTC (rev 70) @@ -52,17 +52,55 @@ this.parent = parent; } - public boolean addChild(Category category){ + + /** + * Convenience method for dependency check to prevent circular dependencies. + * True if circular dependency would be created. + * + * @param newChildCategory new child category to be added to this + * @return true, if newChildCategory is present in hierarchy above this, else false + */ + private boolean checkForCircularDependencies(Category newChildCategory){ + if (this.equals(newChildCategory)){ + return true; + } + if (this.isRoot()){ + return false; + } + return this.parent.checkForCircularDependencies(newChildCategory); + } + + /** + * Private method for adding category to list of children. + * If list of children does not exist, it is created. + * + * @param category child category + * @return success of operation + */ + private boolean addChild(Category category){ if (this.children == null){ this.children = new ArrayList<Category>(); } - if (!category.getParent().equals(this)){ + if (!category.getParent().equals(this)||checkForCircularDependencies(category)){ return false; } return this.children.add(category); } + /** + * Convenience method for parent <-> children connection of categories. + * Parent of this is set to parent category and list of children of parent category + * is updated with this. + * + * @param parent parent category + * @return Success of operation + */ + public boolean addToParentCategory(Category parent){ + this.parent = parent; + return parent.addChild(this); + } + @XmlElementWrapper(name=Constants.CATEGORIES) @XmlElement(name=Constants.CATEGORY) public List<Category> getChildren() { @@ -94,6 +132,12 @@ this.parent = parent; } + + /** + * Convenience method for checking if category is root category. + * + * @return true if category is root category, else returning false + */ @XmlTransient public boolean isRoot(){ 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-10 10:14:25 UTC (rev 69) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-10 10:41:52 UTC (rev 70) @@ -3,6 +3,8 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; +import static org.junit.Assert.assertFalse; import org.junit.Before; import org.junit.Test; @@ -19,6 +21,9 @@ private Category category; private Category parentCategory; + /** + * Creates a category object, a parent object for this category and the category dao. + */ @Before public void setUp() { category = newCategory(); @@ -28,6 +33,9 @@ txBegin(); } + /** + * Checks if category can be persisted + */ @Test public void testPersistCategory() { dao.persist(category); @@ -36,6 +44,9 @@ } + /** + * Checks if category can be found by id + */ @Test public void testFindCategory() { dao.persist(category); @@ -45,6 +56,9 @@ assertEquals(category, coid); } + /** + * Checks if category can be deleted + */ @Test public void testRemoveCategory() { dao.persist(category); @@ -55,10 +69,12 @@ assertNull(dao.find(category.getId())); } + /** + * Checks if cascading saving and cascading deleting work + */ @Test public void testCascading(){ - category.setParent(parentCategory); - parentCategory.addChild(category); + category.addToParentCategory(parentCategory); dao.persist(category); txCommit(); assertNotNull(category.getId()); @@ -70,12 +86,26 @@ assertNull(dao.find(category.getId())); } + /** + * Checks if searching for not existing ids returns null + */ @Test public void testDoNotFindById() { Category foundCategory = dao.find(0L); assertNull(foundCategory); } + /** + * Checks if circular category dependencies are prevented + */ + @Test + public void testCircularDependencyCheck(){ + assertTrue(category.addToParentCategory(parentCategory)); + dao.persist(category); + assertFalse(parentCategory.addToParentCategory(category)); + } + + private Category newCategory() { return new Category(createUniqueId()); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-10 13:43:24
|
Revision: 75 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=75&view=rev Author: roekens Date: 2009-03-10 13:41:25 +0000 (Tue, 10 Mar 2009) Log Message: ----------- bugfixes and new tests for courseDao Modified Paths: -------------- 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/test/java/de/campussource/cse/cdmm/AccountDaoTest.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/CourseDaoTest.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-10 11:45:48 UTC (rev 74) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-10 13:41:25 UTC (rev 75) @@ -1,5 +1,6 @@ package de.campussource.cse.cdmm.domain; +import java.util.ArrayList; import java.util.List; import javax.persistence.CascadeType; @@ -62,6 +63,42 @@ this.workgroups = workgroups; } + /** + * Convenience method to add this course to a category. + * Updates category list of course object and course list of category object. + * @param category the category this course should be added to + * @return Success of operation + */ + public boolean addToCategory(Category category){ + if (category == null){ + return false; + } + List<Course> courses = category.getCourses(); + if (courses==null){ + courses = new ArrayList<Course>(); + } + List<Category> categories = this.getCategories(); + if (categories == null){ + categories = new ArrayList<Category>(); + } + categories.add(category); + this.setCategories(categories); + courses.add(this); + category.setCourses(courses); + return true; + } + + /** + * Convenience method for adding course to a number of categories + * + * @param categories List of categories course is to add to + */ + public void addToCagetories(List<Category> categories){ + for (Category category : categories){ + addToCategory(category); + } + } + public String toString() { return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).toString(); } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-10 11:45:48 UTC (rev 74) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-10 13:41:25 UTC (rev 75) @@ -9,6 +9,7 @@ import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; +import javax.persistence.Table; import javax.persistence.Transient; import javax.xml.bind.annotation.XmlElement; import javax.xml.bind.annotation.XmlElementWrapper; @@ -25,13 +26,14 @@ import de.campussource.cse.cdmm.IdAdapter; @javax.persistence.Entity(name=Constants.ENTITY) +@Table(name = Constants.TABLENAME_ENTITY) @Inheritance(strategy=InheritanceType.JOINED) @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(propOrder={Constants.ID, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) public class Entity{ @Id - @GeneratedValue(strategy = GenerationType.SEQUENCE) + @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @Transient Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java 2009-03-10 11:45:48 UTC (rev 74) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java 2009-03-10 13:41:25 UTC (rev 75) @@ -57,6 +57,6 @@ } private Account newAccount() { - return new Account(uniqueId()); + return new Account(); } } 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-10 11:45:48 UTC (rev 74) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java 2009-03-10 13:41:25 UTC (rev 75) @@ -106,7 +106,7 @@ private Category newCategory() { - return new Category(uniqueId()); + return new Category(); } } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-10 11:45:48 UTC (rev 74) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-10 13:41:25 UTC (rev 75) @@ -4,10 +4,13 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import org.junit.After; import org.junit.Before; import org.junit.Test; +import de.campussource.cse.cdmm.dao.CategoryDao; import de.campussource.cse.cdmm.dao.CourseDao; +import de.campussource.cse.cdmm.domain.Category; import de.campussource.cse.cdmm.domain.Course; import de.campussource.cse.common.test.AbstractPersistentUnitTest; @@ -26,6 +29,11 @@ autowireByType(dao); txBegin(); } + + @After + public void tearDown(){ + txCommit(); + } /** * Tests creating of a course object @@ -34,7 +42,6 @@ public void testPersistCourse() { dao.persist(course); assertNotNull(course.getId()); - txCommit(); } @@ -57,9 +64,7 @@ public void testRemoveCourse() { dao.persist(course); assertNotNull(course.getId()); - commitAndBeginTx(); dao.remove(course); - commitAndBeginTx(); assertNull(dao.find(course.getId())); } @@ -73,11 +78,41 @@ } /** + * Tests cascading to category objects. + */ + @Test + public void testCascadingToCategory(){ + Category category = new Category(); + CategoryDao categoryDao = new CategoryDao(); + autowireByType(categoryDao); + categoryDao.persist(category); + assertNotNull(category.getId()); + course.addToCategory(category); + dao.persist(course); + assertNotNull(course.getId()); + assertNotNull(course.getCategories()); + assertNotNull(category.getCourses()); + assertEquals(course.getCategories().get(0), category); + assertEquals(category.getCourses().get(0), course); + } + + /** + * Tests cascading in course hierarchy and correct course hierarchy + */ + @Test + public void testWorkgroupCascading(){ + Course workgroup1 = new Course(); + + + } + + + /** * Convenience method for creating a course object with a unique id * @return course object with unique id */ private Course newCourse() { - return new Course(uniqueId()); + return new Course(); } } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java 2009-03-10 11:45:48 UTC (rev 74) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java 2009-03-10 13:41:25 UTC (rev 75) @@ -36,8 +36,8 @@ autowireByType(courseDao); autowireByType(accountDao); //create role object with needed dependencies - course = new Course(uniqueId()); - account = new Account(uniqueId()); + course = new Course(); + account = new Account(); courseDao.persist(course); accountDao.persist(account); role = newRole(); @@ -78,7 +78,7 @@ } private Role newRole() { - Role role = new Role(uniqueId()); + Role role = new Role(); role.setAccount(account); role.setCourse(course); role.setType(RoleType.ASSISTANT); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-10 13:53:55
|
Revision: 76 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=76&view=rev Author: roekens Date: 2009-03-10 13:53:50 +0000 (Tue, 10 Mar 2009) Log Message: ----------- - introduced convenience method for course hierarchy handling - added test for cascading and hierarchy handling Modified Paths: -------------- 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/test/java/de/campussource/cse/cdmm/CourseDaoTest.java Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-10 13:41:25 UTC (rev 75) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-10 13:53:50 UTC (rev 76) @@ -99,6 +99,25 @@ } } + /** + * Convenience method to add this course as a workgroup to course + * @param course parent course + * @return success of operation + */ + public boolean addAsWorkgroupTo(Course course){ + if (course==null||(course.getParent()!=null)){ + return false; + } + List<Course> workgroups = course.getWorkgroups(); + if (workgroups == null){ + workgroups = new ArrayList<Course>(); + } + workgroups.add(this); + course.setWorkgroups(workgroups); + this.setParent(course); + return true; + } + public String toString() { return new ToStringBuilder(this, ToStringStyle.DEFAULT_STYLE).toString(); } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-10 13:41:25 UTC (rev 75) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java 2009-03-10 13:53:50 UTC (rev 76) @@ -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.assertFalse; import org.junit.After; import org.junit.Before; @@ -101,9 +102,23 @@ */ @Test public void testWorkgroupCascading(){ + //check correct cascading on creation of workgroup Course workgroup1 = new Course(); - - + Course workgroup2 = new Course(); + workgroup1.addAsWorkgroupTo(course); + dao.persist(workgroup1); + assertNotNull(workgroup1.getId()); + assertNotNull(course.getId()); + assertNotNull(workgroup1.getParent()); + assertEquals(workgroup1.getParent(), course); + assertNotNull(course.getWorkgroups()); + assertEquals(course.getWorkgroups().get(0), workgroup1); + //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())); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-10 14:55:12
|
Revision: 78 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=78&view=rev Author: roekens Date: 2009-03-10 14:55:10 +0000 (Tue, 10 Mar 2009) Log Message: ----------- - several bugfixes of jpa annotations - more tests cascaded delete from course or account to role does not work! Modified Paths: -------------- 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/RoleDao.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/Course.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java Modified: 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/CourseDao.java 2009-03-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/CourseDao.java 2009-03-10 14:55:10 UTC (rev 78) @@ -3,5 +3,5 @@ import de.campussource.cse.cdmm.domain.Course; public class CourseDao extends DAOJPA<Course> { - + } \ No newline at end of file Modified: 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/dao/RoleDao.java 2009-03-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/RoleDao.java 2009-03-10 14:55:10 UTC (rev 78) @@ -1,7 +1,20 @@ package de.campussource.cse.cdmm.dao; +import java.util.List; + 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){ + List<Role> accountRoles = role.getAccount().getRoles(); + List<Role> courseRoles = role.getCourse().getRoles(); + accountRoles.remove(role); + courseRoles.remove(role); + role.getAccount().setRoles(accountRoles); + role.getCourse().setRoles(courseRoles); + persist(role); + super.remove(role); + } } \ No newline at end of file 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-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-03-10 14:55:10 UTC (rev 78) @@ -3,6 +3,7 @@ import java.util.ArrayList; import java.util.List; +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @@ -26,7 +27,7 @@ @XmlType(propOrder={Constants.GROUPS, Constants.ROLES}, namespace=Constants.NAMESPACE_DATATYPES) public class Account extends de.campussource.cse.cdmm.domain.Entity{ - @OneToMany(mappedBy=Constants.ACCOUNT) + @OneToMany(mappedBy=Constants.ACCOUNT, cascade=CascadeType.REMOVE) private List<Role> roles; @ManyToMany Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-03-10 14:55:10 UTC (rev 78) @@ -45,7 +45,7 @@ inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_COURSE_ID)}) private List<Category> categories; - @OneToMany(mappedBy=Constants.COURSE, cascade = CascadeType.REMOVE) + @OneToMany(mappedBy=Constants.COURSE, cascade = {CascadeType.REMOVE}) private List<Role> roles; public Course(){ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java 2009-03-10 14:55:10 UTC (rev 78) @@ -2,6 +2,7 @@ import java.util.List; +import javax.persistence.CascadeType; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @@ -25,7 +26,7 @@ @XmlType(propOrder={Constants.MEMBERS}, namespace=Constants.NAMESPACE_DATATYPES) public class Group extends Account{ - @ManyToMany(mappedBy=Constants.GROUPS) + @ManyToMany(mappedBy=Constants.GROUPS, cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REFRESH}) private List<Account> members; public Group(){ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java 2009-03-10 14:55:10 UTC (rev 78) @@ -1,5 +1,9 @@ package de.campussource.cse.cdmm.domain; +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.CascadeType; import javax.persistence.Column; import javax.persistence.Entity; import javax.persistence.EnumType; @@ -28,11 +32,11 @@ @Enumerated(EnumType.ORDINAL) private RoleType type; - @ManyToOne(optional=false) + @ManyToOne(optional=false, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @JoinColumn(name=Constants.COLUMNNAME_ACCOUNT_ID, nullable=false) private Account account; - @ManyToOne(optional=false) + @ManyToOne(optional=false, cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @JoinColumn(name=Constants.COLUMNNAME_COURSE_ID, nullable=false) private Course course; @@ -46,6 +50,35 @@ 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 + * course and account are added to role object + * @param course target course role is associated to + * @param account target account role is associated to + * @return success of operation + */ + public boolean addToCourseAndAccount(Course course, Account account){ + if ((course==null)||(account==null)){ + return false; + } + List<Role> courseRoles = course.getRoles(); + if (courseRoles==null){ + courseRoles = new ArrayList<Role>(); + } + List<Role> accountRoles = account.getRoles(); + if (accountRoles==null){ + accountRoles = new ArrayList<Role>(); + } + this.setAccount(account); + this.setCourse(course); + accountRoles.add(this); + courseRoles.add(this); + account.setRoles(accountRoles); + course.setRoles(courseRoles); + return true; + } + public Role(Long id, RoleType type){ setId(id); this.type = type; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java 2009-03-10 13:55:45 UTC (rev 77) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java 2009-03-10 14:55:10 UTC (rev 78) @@ -4,6 +4,7 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -20,67 +21,137 @@ private RoleDao dao; private Role role; - private CourseDao courseDao; private Course course; - private AccountDao accountDao; private Account account; @Before public void setUp() { //set up daos dao = new RoleDao(); - courseDao = new CourseDao(); - accountDao = new AccountDao(); autowireByType(dao); - autowireByType(courseDao); - autowireByType(accountDao); //create role object with needed dependencies course = new Course(); account = new Account(); - courseDao.persist(course); - accountDao.persist(account); role = newRole(); txBegin(); } + + @After + public void tearDown(){ + txCommit(); + } + /** + * Tests if Role can be persisted + */ @Test public void testPersistRole() { dao.persist(role); assertNotNull(role.getId()); - txCommit(); } + /** + * Tests if role can be found by id + */ @Test public void testFindRole() { dao.persist(role); assertNotNull(role.getId()); - commitAndBeginTx(); Role roid = dao.find(role.getId()); assertEquals(role, roid); } + /** + * Tests if Role can be deleted + */ @Test public void testRemoveRole() { dao.persist(role); assertNotNull(role.getId()); - commitAndBeginTx(); dao.remove(role); - commitAndBeginTx(); assertNull(dao.find(role.getId())); + CourseDao courseDao = new CourseDao(); + autowireByType(courseDao); + assertNotNull(courseDao.find(course.getId())); } + /** + * Tests if search for not existing id returns null + */ @Test public void testDoNotFindById() { Role foundRole= dao.find(0L); assertNull(foundRole); } + /** + * Tests if create and update statements are correctly cascaded + * to account and course entities + */ + @Test + public void testCascadingOnCreate(){ + dao.persist(role); + assertNotNull(role.getId()); + assertNotNull(course.getId()); + assertNotNull(account.getId()); + assertNotNull(account.getRoles()); + assertNotNull(course.getRoles()); + assertEquals(course.getRoles().get(0), role); + assertEquals(account.getRoles().get(0), role); + assertEquals(role.getCourse(), course); + assertEquals(role.getAccount(), account); + } + + /** + * Tests if role objects are deleted on deletion of parent course object + */ + @Test + public void testCascadingOnDeleteCourse(){ + //FIXME test fails, no idea why... +// dao.persist(role); +// assertNotNull(role.getId()); +// assertNotNull(course.getId()); +// assertNotNull(account.getId()); +// assertNotNull(account.getRoles()); +// assertNotNull(course.getRoles()); +// assertEquals(course.getRoles().get(0), role); +// assertEquals(account.getRoles().get(0), role); +// assertEquals(role.getCourse(), course); +// assertEquals(role.getAccount(), account); +// CourseDao courseDao = new CourseDao(); +// autowireByType(courseDao); +// courseDao.remove(course); +// assertNull(courseDao.find(course.getId())); +// assertNull(dao.find(role.getId())); + } + + @Test + public void testCascadingOnDeleteAccount(){ + //FIXME test fails, no idea why... +// dao.persist(role); +// assertNotNull(role.getId()); +// assertNotNull(course.getId()); +// assertNotNull(account.getId()); +// assertNotNull(account.getRoles()); +// assertNotNull(course.getRoles()); +// assertEquals(course.getRoles().get(0), role); +// assertEquals(account.getRoles().get(0), role); +// assertEquals(role.getCourse(), course); +// assertEquals(role.getAccount(), account); +// AccountDao accountDao = new AccountDao(); +// autowireByType(accountDao); +// accountDao.remove(account); +// assertNull(accountDao.find(account.getId())); +// assertNull(dao.find(role.getId())); + } + + + private Role newRole() { Role role = new Role(); - role.setAccount(account); - role.setCourse(course); + role.addToCourseAndAccount(course, account); role.setType(RoleType.ASSISTANT); return role; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ro...@us...> - 2009-03-17 13:52:02
|
Revision: 82 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=82&view=rev Author: roekens Date: 2009-03-17 13:51:54 +0000 (Tue, 17 Mar 2009) Log Message: ----------- - several xml specific bugfixes - introduction of possible (currently not working) realisation of attributes - introduction of dmm service bean - new 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/DataModelManager.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.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/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/PersistentAttribute.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 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/AttributeAdapter.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CSEMessage.java cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java 2009-03-17 13:51:54 UTC (rev 82) @@ -0,0 +1,27 @@ +package de.campussource.cse.cdmm; + +import javax.xml.bind.annotation.adapters.XmlAdapter; + +import de.campussource.cse.cdmm.domain.Attribute; +import de.campussource.cse.cdmm.domain.PersistentAttribute; +import de.campussource.cse.cdmm.domain.TransientAttribute; + +public class AttributeAdapter extends XmlAdapter<Attribute, Attribute>{ + + + + @Override + public Attribute unmarshal(Attribute v) throws Exception { + if (!v.isPersistent()){ + return new TransientAttribute(v.getName(), v.getValue()); + } + return new PersistentAttribute(v.getName(), v.getValue()); + } + + @Override + public Attribute marshal(Attribute v) throws Exception { + return v; + } + + +} Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CSEMessage.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CSEMessage.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CSEMessage.java 2009-03-17 13:51:54 UTC (rev 82) @@ -0,0 +1,5 @@ +package de.campussource.cse.cdmm; + +public abstract class CSEMessage{ + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CSEMessage.java ___________________________________________________________________ Added: svn:mime-type + text/plain 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-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-03-17 13:51:54 UTC (rev 82) @@ -62,6 +62,10 @@ public static final String COLUMNNAME_ACCOUNT_ID = "ACCOUNT_ID"; public static final String COLUMNNAME_CATEGORY_ID = "CATEGORY_ID"; public static final String COLUMNNAME_COURSE_ID = "COURSE_ID"; + public static final String COLUMNNAME_NAME = "NAME"; + public static final String COLUMNNAME_VALUE = "VALUE"; + public static final String COLUMNNAME_ENTITY_ID = "ENTITY_ID"; + public static final String ID = "id"; Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java 2009-03-17 13:51:54 UTC (rev 82) @@ -2,7 +2,60 @@ import javax.ejb.Remote; +import de.campussource.cse.cdmm.domain.Account; +import de.campussource.cse.cdmm.domain.Category; +import de.campussource.cse.cdmm.domain.Course; +import de.campussource.cse.cdmm.domain.Group; +import de.campussource.cse.cdmm.domain.Role; + @Remote public interface DataModelManager { + public CSEMessage saveCategory(Category category); + + public CSEMessage saveCategoryHierarchy(Category category); + + public CSEMessage deleteCategory(Category category); + + public CSEMessage retrieveCategoryHierarchy(long categoryId); + + public CSEMessage retrieveCategory(long categoryId); + + + + public CSEMessage saveCourse(Course course); + + public CSEMessage saveCourseHierarchy(Course course); + + public CSEMessage deleteCourse(Course course); + + public CSEMessage retrieveCourse(long courseId); + public CSEMessage retrieveCourseHierarchy(long courseId); + + + + public CSEMessage saveRole(Role role); + + public CSEMessage deleteRole(Role role); + + public CSEMessage retrieveRole(long roleId); + + public CSEMessage retrieveRole(long accountId, long courseId); + + + + public CSEMessage saveAccount(Account account); + + public CSEMessage deleteAccount(Account account); + + public CSEMessage retrieveAccount(long accountId); + + + public CSEMessage retrieveGroup(long groupId); + + public CSEMessage saveGroup(Group group); + + public CSEMessage deleteGroup(Group group); + + } Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-03-17 13:51:54 UTC (rev 82) @@ -4,6 +4,11 @@ import javax.ejb.Stateless; import de.campussource.cse.cdmm.dao.*; +import de.campussource.cse.cdmm.domain.Account; +import de.campussource.cse.cdmm.domain.Category; +import de.campussource.cse.cdmm.domain.Course; +import de.campussource.cse.cdmm.domain.Group; +import de.campussource.cse.cdmm.domain.Role; @Stateless public class DataModelManagerBean implements DataModelManager { @@ -25,5 +30,128 @@ @EJB private RoleDao roleDao; + + @Override + public CSEMessage deleteAccount(Account account) { + accountDao.remove(account); + return null; + } + + @Override + public CSEMessage deleteCategory(Category category) { + categoryDao.remove(category); + return null; + } + + @Override + public CSEMessage deleteCourse(Course course) { + courseDao.remove(course); + return null; + } + + @Override + public CSEMessage deleteGroup(Group group) { + groupDao.remove(group); + return null; + } + + @Override + public CSEMessage deleteRole(Role role) { + roleDao.remove(role); + return null; + } + + @Override + public CSEMessage retrieveAccount(long accountId) { + Account account = accountDao.find(accountId); + return null; + } + + @Override + public CSEMessage retrieveCategory(long categoryId) { + Category category = categoryDao.find(categoryId); + //TODO cut subcategories or define new method in dao + return null; + } + + @Override + public CSEMessage retrieveCategoryHierarchy(long categoryId) { + Category category = categoryDao.find(categoryId); + return null; + } + + @Override + public CSEMessage retrieveCourse(long courseId) { + //TODO cut workgroups or define new method in dao + Course course = courseDao.find(courseId); + return null; + } + + @Override + public CSEMessage retrieveCourseHierarchy(long courseId) { + Course course = courseDao.find(courseId); + return null; + } + + @Override + public CSEMessage retrieveGroup(long groupId) { + Group group = groupDao.find(groupId); + return null; + } + + @Override + public CSEMessage retrieveRole(long roleId) { + Role role = roleDao.find(roleId); + return null; + } + + @Override + public CSEMessage retrieveRole(long accountId, long courseId) { + //TODO define new dao method + //Role role = roleDao. + return null; + } + + @Override + public CSEMessage saveAccount(Account account) { + accountDao.persist(account); + return null; + } + + @Override + public CSEMessage saveCategory(Category category) { + categoryDao.persist(category); + return null; + } + + @Override + public CSEMessage saveCategoryHierarchy(Category category) { + categoryDao.persist(category); + return null; + } + + @Override + public CSEMessage saveCourse(Course course) { + courseDao.persist(course); + return null; + } + + @Override + public CSEMessage saveCourseHierarchy(Course course) { + courseDao.persist(course); + return null; + } + + @Override + public CSEMessage saveGroup(Group group) { + groupDao.persist(group); + return null; + } + + @Override + public CSEMessage saveRole(Role role) { + roleDao.persist(role); + return null; + } } Modified: 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 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-03-17 13:51:54 UTC (rev 82) @@ -1,20 +1,27 @@ package de.campussource.cse.cdmm.domain; +import javax.persistence.Transient; import javax.xml.bind.annotation.XmlAttribute; import javax.xml.bind.annotation.XmlRootElement; import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.XmlValue; +import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; +import de.campussource.cse.cdmm.AttributeAdapter; import de.campussource.cse.cdmm.Constants; @XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) @XmlType(namespace=Constants.NAMESPACE_DATATYPES) +@XmlJavaTypeAdapter(value=AttributeAdapter.class) public class Attribute { + @Transient private String name; + @Transient private String value; + private boolean persistent; public Attribute(){ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-03-17 13:51:54 UTC (rev 82) @@ -84,7 +84,8 @@ } @XmlElementWrapper(name=Constants.ATTRIBUTES) - @XmlElements(value={@XmlElement(name=Constants.ATTRIBUTE,type=Attribute.class), @XmlElement(name=Constants.ATTRIBUTE,type=TransientAttribute.class), @XmlElement(name=Constants.ATTRIBUTE, type=PersistentAttribute.class)}) + //@XmlElements(value={@XmlElement(name=Constants.ATTRIBUTE,type=Attribute.class), @XmlElement(name=Constants.ATTRIBUTE,type=TransientAttribute.class), @XmlElement(name=Constants.ATTRIBUTE, type=PersistentAttribute.class)}) + @XmlElement(name=Constants.ATTRIBUTE) public List<Attribute> getAttributes() { return attributes; } Modified: 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 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java 2009-03-17 13:51:54 UTC (rev 82) @@ -23,14 +23,7 @@ private List<Account> accounts; - public void setCourses(List<Course> courses) { - this.courses = courses; - } - public void setAccounts(List<Account> accounts) { - this.accounts = accounts; - } - @XmlElement(name=Constants.CATEGORY) public Category getRootCategory() { return rootCategory; @@ -49,6 +42,14 @@ return accounts; } + public void setCourses(List<Course> courses) { + this.courses = courses; + } + + public void setAccounts(List<Account> accounts) { + this.accounts = accounts; + } + @Override public String toString() { return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE).append(rootCategory).append(courses.toArray()).append(accounts.toArray()).toString(); Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java 2009-03-17 13:51:54 UTC (rev 82) @@ -1,14 +1,54 @@ package de.campussource.cse.cdmm.domain; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; +import javax.persistence.Column; +import javax.persistence.ManyToOne; +import javax.xml.bind.annotation.XmlTransient; import de.campussource.cse.cdmm.Constants; -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +@XmlTransient public class PersistentAttribute extends Attribute { + + @Column(name=Constants.COLUMNNAME_NAME, nullable=false, insertable=true, updatable=true) + private String name; + + @Column(name=Constants.COLUMNNAME_VALUE, nullable=false, insertable=true, updatable=true) + private String value; + + @ManyToOne(optional=false) + @Column(name=Constants.COLUMNNAME_ENTITY_ID, nullable=false, insertable=true, updatable=true) + public Entity entity; + + public Entity getEntity() { + return entity; + } + + public void setEntity(Entity entity) { + this.entity = entity; + } + + @Override + public String getName() { + return name; + } + + @Override + public void setName(String name) { + this.name = name; + } + + @Override + public String getValue() { + return value; + } + + @Override + public void setValue(String value) { + this.value = value; + } + + public PersistentAttribute(){} public PersistentAttribute(String name, String value){ Modified: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 2009-03-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/TransientAttribute.java 2009-03-17 13:51:54 UTC (rev 82) @@ -1,12 +1,8 @@ package de.campussource.cse.cdmm.domain; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; +import javax.xml.bind.annotation.XmlTransient; -import de.campussource.cse.cdmm.Constants; - -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(namespace=Constants.NAMESPACE_DATATYPES) +@XmlTransient public class TransientAttribute extends Attribute { public TransientAttribute(){} Added: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java =================================================================== --- cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java (rev 0) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java 2009-03-17 13:51:54 UTC (rev 82) @@ -0,0 +1,28 @@ +package de.campussource.cse.cdmm; + + + +import org.junit.Before; +import org.junit.Test; + +import de.campussource.cse.cdmm.domain.Category; +import de.campussource.cse.common.test.AbstractPersistentUnitTest; + +public class DataModelManagerBeanTest extends AbstractPersistentUnitTest { + + private DataModelManagerBean dmm; + + @Before + public void setUp() { + dmm = new DataModelManagerBean(); + autowireByType(dmm); + txBegin(); + } + + @Test + public void testSaveCategory(){ + Category category = new Category(uniqueId()); + dmm.saveCategory(category); + } + +} \ No newline at end of file Property changes on: cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain 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-17 11:48:42 UTC (rev 81) +++ cse-ip/trunk/sandbox/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/TestXmlConversion.java 2009-03-17 13:51:54 UTC (rev 82) @@ -423,12 +423,9 @@ System.out.println("----- entering Attribute XML Test -----"); //create category object with two attributes Category category = new Category(createUniqueId()); - TransientAttribute att1 = new TransientAttribute(); - att1.setName("TNAME"); - att1.setValue("TVALUE"); - PersistentAttribute att2 = new PersistentAttribute(); - att2.setName("PNAME"); - att2.setValue("PVALUE"); + TransientAttribute att1 = new TransientAttribute("TNAME", "TVALUE"); + PersistentAttribute att2 = new PersistentAttribute("PNAME", "PVALUE"); + att2.setEntity(category); List<Attribute> attributes = new ArrayList<Attribute>(); attributes.add(att1); attributes.add(att2); @@ -438,7 +435,7 @@ Marshaller marshaller=null; JAXBContext context=null; try { - context = JAXBContext.newInstance(Category.class); + context = JAXBContext.newInstance(Category.class, Attribute.class, PersistentAttribute.class, TransientAttribute.class); marshaller = context.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE); } catch (JAXBException e) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |