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