From: <id...@us...> - 2009-04-24 20:07:23
|
Revision: 173 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=173&view=rev Author: idueppe Date: 2009-04-24 20:07:11 +0000 (Fri, 24 Apr 2009) Log Message: ----------- IN PROGRESS: Refactoring of cdmm... Should be compilable and tests are green Modified Paths: -------------- trunk/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/EntityContainer.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Group.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/PersistentAttribute.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Role.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/RoleType.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/State.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Visitor.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DataModelManagerBeanTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/webservice/DataModelManagerWebServiceTest.java Added Paths: ----------- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMerger.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMergerBean.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilder.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilderBean.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManager.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManagerBean.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMerger.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMergerBean.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDaoJPA.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AddReferenceVisitor.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AttributeAdapter.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Constants.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/IdAdapter.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/ReferenceType.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/ReferencesVisitor.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/AccountMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/CategoryMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/CourseMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/EventMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/GroupMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/InputEventType.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/InputMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/OutputEventType.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/messages/RoleMessage.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/EventBuilderBeanTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/MessageSchemaTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/ModelManagerTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/ModelMergerTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/ trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/AccountDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/CategoryDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/CourseDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/DaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/EntityDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/dao/RoleDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/domain/ trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/domain/AddReferenceVisitorTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/domain/DomainTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/domain/ReferencesVisitorTest.java Removed Paths: ------------- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AccountMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CategoryMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CourseMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/GroupMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdAdapter.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputEventType.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/OutputEventType.java trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleMessage.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/AccountDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CategoryDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/CourseDaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DaoTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/DomainTest.java trunk/cse-ip/sc-cdmm/src/test/java/de/campussource/cse/cdmm/RoleDaoTest.java Modified: trunk/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java =================================================================== --- trunk/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/framework/test-utilities/src/main/java/de/campussource/cse/common/test/AbstractPersistentUnitTest.java 2009-04-24 20:07:11 UTC (rev 173) @@ -95,6 +95,5 @@ protected Long uniqueId() { return currentTimeMillis++; } - - + } Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AccountMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AccountMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AccountMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,30 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.domain.Account; - -/** - * Account message object - * @author Sebastian Roekens - * - */ -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.ACCOUNT_MESSAGE_TYPE, propOrder={}) -public class AccountMessage extends InputMessage{ - - private Account account; - - @XmlElement(name=Constants.ACCOUNT) - public Account getAccount() { - return account; - } - - public void setAccount(Account account) { - this.account = account; - } - -} Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,32 +0,0 @@ -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; - -/** - * Attribute Adapter to map transient and persistent attributes - * @author Sebastian Roekens - * - */ -public class AttributeAdapter extends XmlAdapter<Attribute, Attribute>{ - - - - @Override - public Attribute unmarshal(Attribute v) throws Exception { - if (v.isTransient()){ - return new TransientAttribute(v.getName(), v.getValue()); - } - return new PersistentAttribute(v.getName(), v.getValue()); - } - - @Override - public Attribute marshal(Attribute v) throws Exception { - return v; - } - - -} Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CategoryMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CategoryMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CategoryMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,30 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.domain.Category; - -/** - * Category message object - * @author Sebastian Roekens - * - */ -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.CATEGORY_MESSAGE_TYPE, propOrder={}) -public class CategoryMessage extends InputMessage{ - - private Category category; - - @XmlElement(name=Constants.CATEGORY) - public Category getCategory() { - return category; - } - - public void setCategory(Category category) { - this.category = category; - } - -} \ No newline at end of file Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,100 +0,0 @@ -package de.campussource.cse.cdmm; - -/** - * - * Class containing all String of package to prevent multiple definitions of same Strings - * @author Sebastian Roekens - * - */ -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"; - public static final String ENTITY = "entity"; - - //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"; - 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_PARENT = "parent"; - 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_TRANSIENT = "transient"; - public static final String PROPERTY_STATE = "state"; - - //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_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"; - 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 COLUMNNAME_NAME = "NAME"; - public static final String COLUMNNAME_VALUE = "VALUE"; - public static final String COLUMNNAME_ENTITY_ID = "ENTITY_ID"; - public static final String COLUMNNAME_STATE = "STATE"; - - public static final String ID = "busId"; - - public static final String ENTITY_TYPE = "entityType"; - public static final String ACCOUNT_TYPE = "accountType"; - public static final String CATEGORY_TYPE = "categoryType"; - public static final String COURSE_TYPE = "courseType"; - public static final String GROUP_TYPE = "groupType"; - public static final String ATTRIBUTE_TYPE = "attributeType"; - public static final String ROLE_TYPE = "roleType"; - public static final String ENTITYCONTAINER_TYPE = "entityContainerType"; - public static final String ROLE_TYPE_TYPE = "roleTypeType"; - - public static final String OUTPUT_EVENT_TYPE = "outputEventType"; - public static final String INPUT_EVENT_TYPE = "inputEventType"; - public static final String COURSE_MESSAGE_TYPE = "courseMessageType"; - public static final String GROUP_MESSAGE_TYPE = "groupMessageType"; - public static final String ACCOUNT_MESSAGE_TYPE = "accountMessageType"; - public static final String ROLE_MESSAGE_TYPE = "roleMessageType"; - public static final String CATEGORY_MESSAGE_TYPE = "categoryMessageType"; - public static final String EVENT_MESSAGE_TYPE = "eventMessageType"; - public static final String INPUT_EVENT = "inputEvent"; - public static final String OUTPUT_EVENT = "outputEvent"; - public static final String EVENT_TIME = "eventTime"; -} \ No newline at end of file Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CourseMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CourseMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CourseMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,30 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.domain.Course; - -/** - * Course message object - * @author Sebastian Roekens - * - */ -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.COURSE_MESSAGE_TYPE, propOrder={}) -public class CourseMessage extends InputMessage{ - - private Course course; - - @XmlElement(name=Constants.COURSE) - public Course getCourse() { - return course; - } - - public void setCourse(Course course) { - this.course = course; - } - -} Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManager.java 2009-04-24 20:07:11 UTC (rev 173) @@ -2,6 +2,13 @@ import java.util.List; +import de.campussource.cse.cdmm.messages.AccountMessage; +import de.campussource.cse.cdmm.messages.CategoryMessage; +import de.campussource.cse.cdmm.messages.CourseMessage; +import de.campussource.cse.cdmm.messages.EventMessage; +import de.campussource.cse.cdmm.messages.GroupMessage; +import de.campussource.cse.cdmm.messages.RoleMessage; + /** * Service bean for CDMM package * @author Sebastian Roekens Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-04-24 20:07:11 UTC (rev 173) @@ -21,6 +21,14 @@ import de.campussource.cse.cdmm.domain.Group; import de.campussource.cse.cdmm.domain.Role; import de.campussource.cse.cdmm.domain.State; +import de.campussource.cse.cdmm.messages.AccountMessage; +import de.campussource.cse.cdmm.messages.CategoryMessage; +import de.campussource.cse.cdmm.messages.CourseMessage; +import de.campussource.cse.cdmm.messages.EventMessage; +import de.campussource.cse.cdmm.messages.GroupMessage; +import de.campussource.cse.cdmm.messages.InputEventType; +import de.campussource.cse.cdmm.messages.OutputEventType; +import de.campussource.cse.cdmm.messages.RoleMessage; import de.campussource.cse.common.exception.ServiceComponentException; /** Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMerger.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMerger.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMerger.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,5 @@ +package de.campussource.cse.cdmm; + +public interface EntityMerger { + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMerger.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMergerBean.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMergerBean.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMergerBean.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,5 @@ +package de.campussource.cse.cdmm; + +public class EntityMergerBean implements EntityMerger { + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EntityMergerBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilder.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilder.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilder.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,46 @@ +package de.campussource.cse.cdmm; + +import java.util.Date; +import java.util.List; + +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.cdmm.messages.EventMessage; + +/** + * Builder to create events lists during entity merge analyse. + * + * @author Ingo Dueppe + * + */ +public interface EventBuilder { + + /** + * Add createEvent to the event list. + * @param source instance of a Entity + */ + public void addCreateEvent(Entity source); + + /** + * Add update event to the event list. + * @param source instance of a Entity + */ + public void addUpdateEvent(Entity source); + + /** + * Add delete event to the event list. + * @param source instance of a Entity + */ + public void addDeleteEvent(Entity source); + + /** + * Retrieve List of EventMessage created by the builder + * @return List of Events. If no events were added the list is empty. + */ + public List<EventMessage> build(); + + /** + * Define the Event time + * @param date + */ + public void setEventTime(Date date); +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilder.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilderBean.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilderBean.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilderBean.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,75 @@ +package de.campussource.cse.cdmm; + +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import org.apache.log4j.Logger; + +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.cdmm.messages.EventMessage; +import de.campussource.cse.cdmm.messages.OutputEventType; + +/** + * + * @author Ingo Dueppe + * + */ +public class EventBuilderBean implements EventBuilder { + + private List<EventMessage> events; + + private Date eventTime; + + private static final Logger logger = Logger.getLogger(EventBuilderBean.class); + + public EventBuilderBean() { + events = new ArrayList<EventMessage>(); + } + + @Override + public List<EventMessage> build(){ + // FIXME Strategy to create events structure must be implemented here + return events; + } + + @Override + public void addCreateEvent(Entity source) { + addEvent(source, OutputEventType.CREATE); + } + + @Override + public void addDeleteEvent(Entity source) { + addEvent(source, OutputEventType.DELETE); + } + + @Override + public void addUpdateEvent(Entity source) { + addEvent(source, OutputEventType.UPDATE); + } + + private void addEvent(Entity entity, OutputEventType type) { + assert type != null; + if (eventTime == null) { + throw new IllegalStateException("EventTime must be defined first!"); + } + if (entity == null) { + throw new IllegalArgumentException("Parameter source must not be null!"); + } + + EventMessage event = new EventMessage(); + + event.setEventTime(eventTime); + event.setEntity(entity); + event.setOutputEvent(type); + + events.add(event); + if (logger.isDebugEnabled()) + logger.debug("Created output event message "+event); + } + + @Override + public void setEventTime(Date eventTime) { + this.eventTime = eventTime; + } +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilderBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,54 +0,0 @@ -package de.campussource.cse.cdmm; - -import java.util.Date; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.domain.Entity; - -/** - * Event message object - * @author Sebastian Roekens - * - */ -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.EVENT_MESSAGE_TYPE, propOrder={}) -public class EventMessage{ - - private Entity entity; - - private Date eventTime; - - private OutputEventType outputEvent; - - @XmlElement(name=Constants.ENTITY) - public Entity getEntity() { - return entity; - } - - public void setEntity(Entity entity) { - this.entity = entity; - } - - @XmlElement(name=Constants.OUTPUT_EVENT) - public OutputEventType getOutputEvent() { - return outputEvent; - } - - public void setOutputEvent(OutputEventType outputEvent) { - this.outputEvent = outputEvent; - } - - @XmlElement(name=Constants.EVENT_TIME) - public Date getEventTime() { - return eventTime; - } - - public void setEventTime(Date eventTime) { - this.eventTime = eventTime; - } - -} Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/GroupMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/GroupMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/GroupMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,30 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.domain.Group; - -/** - * Group message object - * @author Sebastian Roekens - * - */ -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.GROUP_MESSAGE_TYPE, propOrder={}) -public class GroupMessage extends InputMessage{ - - private Group group; - - @XmlElement(name=Constants.ROLE) - public Group getGroup() { - return group; - } - - public void setGroup(Group group) { - this.group = group; - } - -} Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdAdapter.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdAdapter.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/IdAdapter.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,25 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.adapters.XmlAdapter; - -/** - * Adapter class to convert ids from String to Long and back - * @author Sebastian Roekens - * - */ -public class IdAdapter extends XmlAdapter<String, Long>{ - - - - @Override - public Long unmarshal(String v) throws Exception { - return Long.parseLong(v); - } - - @Override - public String marshal(Long v) throws Exception { - return String.valueOf(v); - } - - -} Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputEventType.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputEventType.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputEventType.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,24 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlTransient; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; - -/** - * - * @author Sebastian Roekens - * - */ -@XmlEnum -@XmlType(name=Constants.INPUT_EVENT_TYPE, namespace=Constants.NAMESPACE_DATATYPES) -public enum InputEventType{ - @XmlEnumValue(value="CREATE_UPDATE") - CREATE_UPDATE, - @XmlEnumValue(value="DELETE") - DELETE, - @XmlTransient - CREATE_BY_REFERENCE -} \ No newline at end of file Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,29 +0,0 @@ -package de.campussource.cse.cdmm; - -import java.util.Date; - -import javax.xml.bind.annotation.XmlElement; - -public abstract class InputMessage { - private Date eventTime; - - private InputEventType inputEvent; - - @XmlElement(name=Constants.EVENT_TIME) - public Date getEventTime() { - return eventTime; - } - - public void setEventTime(Date eventTime) { - this.eventTime = eventTime; - } - - @XmlElement(name=Constants.INPUT_EVENT) - public InputEventType getInputEvent() { - return inputEvent; - } - - public void setInputEvent(InputEventType inputEvent) { - this.inputEvent = inputEvent; - } -} Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManager.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManager.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManager.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,14 @@ +package de.campussource.cse.cdmm; + +import java.util.List; + +import de.campussource.cse.cdmm.messages.EventMessage; +import de.campussource.cse.cdmm.messages.InputMessage; + +public interface ModelManager { + + public List<EventMessage> createOrUpdate(InputMessage message); + + public List<EventMessage> delete(InputMessage message); + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManager.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManagerBean.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManagerBean.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManagerBean.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,84 @@ +package de.campussource.cse.cdmm; + +import java.util.List; + +import javax.ejb.EJB; +import javax.ejb.Remote; +import javax.ejb.Stateless; + +import org.apache.commons.lang.NotImplementedException; +import org.apache.log4j.Logger; + +import de.campussource.cse.cdmm.dao.EntityDaoJPA; +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.cdmm.domain.State; +import de.campussource.cse.cdmm.messages.EventMessage; +import de.campussource.cse.cdmm.messages.InputMessage; + +@Stateless +@Remote(ModelManager.class) +public class ModelManagerBean implements ModelManager { + + @EJB + private EntityDaoJPA entityDao; + + private static final Logger logger = Logger.getLogger(ModelManagerBean.class); + + @Override + public List<EventMessage> createOrUpdate(InputMessage message) { + Entity input = message.getEntity(); + Entity loaded = entityDao.find(input.getClass(), input.getId()); + + EventBuilder eventBuilder = new EventBuilderBean(); + eventBuilder.setEventTime(message.getEventTime()); + if (loaded.isOlder(input.getDate())) { + mergeEntities(input, loaded, eventBuilder); + + entityDao.persist(loaded); + } + + return eventBuilder.build(); + } + + private void mergeEntities(Entity input, Entity loaded, EventBuilder eventBuilder) { + switch(loaded.getState()) { + case NOT_EXISTS: + eventBuilder.addCreateEvent(loaded); + loaded.setId(input.getId()); + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + loaded.setState(State.EXISTS); + + + break; + case EXISTS: + eventBuilder.addUpdateEvent(loaded); + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + break; + case KNOWN: + eventBuilder.addCreateEvent(loaded); + // create references + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + loaded.setState(State.EXISTS); + + break; + case DELETED: + eventBuilder.addDeleteEvent(loaded); + + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + loaded.setState(State.DELETED); + + break; + } + } + + @Override + public List<EventMessage> delete(InputMessage message) { + throw new NotImplementedException(); + // TODO Auto-generated method stub + } + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManagerBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMerger.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMerger.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMerger.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,15 @@ +package de.campussource.cse.cdmm; + +import de.campussource.cse.cdmm.domain.Entity; + +/** + * Merge the input domain entity model to the existing domain model + * + * @author Ingo Dueppe + * + */ +public interface ModelMerger { + + public <E extends Entity> E merge(E input); + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMerger.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMergerBean.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMergerBean.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMergerBean.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,90 @@ +package de.campussource.cse.cdmm; + +import de.campussource.cse.cdmm.dao.EntityDao; +import de.campussource.cse.cdmm.domain.AddReferenceVisitor; +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.cdmm.domain.ReferenceType; +import de.campussource.cse.cdmm.domain.ReferencesVisitor; +import de.campussource.cse.cdmm.domain.State; +import de.campussource.cse.cdmm.domain.Visitor; + +/** + * + * @author Ingo Dueppe + * + */ +public class ModelMergerBean implements ModelMerger { + + private EntityDao dao; + + private EventBuilder eventBuilder; + + public <E extends Entity> E merge(E input) { + E entity = (E) dao.find(input.getClass(), input.getId()); + mergeEntities(input, entity); + return entity; + } + + private <E extends Entity> void mergeEntities(E input, E loaded) { + switch (loaded.getState()) { + case NOT_EXISTS: + eventBuilder.addCreateEvent(loaded); + loaded.setId(input.getId()); + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + loaded.setState(State.EXISTS); + + checkReferences(input, loaded); + + break; + case EXISTS: + eventBuilder.addUpdateEvent(loaded); + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + break; + case KNOWN: + eventBuilder.addCreateEvent(loaded); + // create references + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + loaded.setState(State.EXISTS); + + break; + case DELETED: + eventBuilder.addDeleteEvent(loaded); + + loaded.setAttributes(input.getAttributes()); + loaded.setDate(input.getDate()); + loaded.setState(State.DELETED); + + break; + } + } + + public <E extends Entity> void checkReferences(final E input, final E loaded) { + Visitor visitor = new ReferencesVisitor() { + @Override + public void foundReference(Entity target, Entity source, ReferenceType type) { + Entity entity = dao.find(target.getClass(), target.getId()); + if (entity.getState() == State.NOT_EXISTS) { + entity.setState(State.KNOWN); + entity.setDate(input.getDate()); + } + loaded.accept(new AddReferenceVisitor(entity, type)); + } + + + }; + input.accept(visitor); + } + + public void setEntityDao(EntityDao dao) { + this.dao = dao; + } + + public void setEventBuilder(EventBuilder eventBuilder) { + this.eventBuilder = eventBuilder; + } + + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMergerBean.java ___________________________________________________________________ Added: svn:mime-type + text/plain Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/OutputEventType.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/OutputEventType.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/OutputEventType.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,27 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlEnum; -import javax.xml.bind.annotation.XmlEnumValue; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; - -/** - * Role Type to differentiate 3 types of roles: - * UNDEFINED - if role type cannot be defined - * PARTICIPANT - if account participates in a course - * ASSISTANT - if account is an assistant in a course - * - * @author Sebastian Roekens - * - */ -@XmlEnum -@XmlType(name=Constants.OUTPUT_EVENT_TYPE, namespace=Constants.NAMESPACE_DATATYPES) -public enum OutputEventType{ - @XmlEnumValue(value="CREATE") - CREATE, - @XmlEnumValue(value="UPDATE") - UPDATE, - @XmlEnumValue(value="DELETE") - DELETE -} \ No newline at end of file Deleted: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleMessage.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleMessage.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleMessage.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,30 +0,0 @@ -package de.campussource.cse.cdmm; - -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -import de.campussource.cse.cdmm.Constants; -import de.campussource.cse.cdmm.domain.Role; - -/** - * Role message object - * @author Sebastian Roekens - * - */ -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.ROLE_MESSAGE_TYPE, propOrder={}) -public class RoleMessage extends InputMessage{ - - private Role role; - - @XmlElement(name=Constants.ROLE) - public Role getRole() { - return role; - } - - public void setRole(Role role) { - this.role = role; - } - -} \ No newline at end of file Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,13 @@ +package de.campussource.cse.cdmm.dao; + +import de.campussource.cse.cdmm.domain.Entity; + +public interface EntityDao { + + public abstract <E extends Entity> E find(Class<E> clazz, Long primaryKey); + + public abstract void persist(Entity entity); + + public abstract void delete(Entity entity); + +} \ No newline at end of file Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDao.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDaoJPA.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDaoJPA.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDaoJPA.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,60 @@ +package de.campussource.cse.cdmm.dao; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; + +import de.campussource.cse.cdmm.domain.Entity; +import de.campussource.cse.cdmm.domain.State; + +/** + * + * @author Ingo Dueppe + * + */ +@Stateless +public class EntityDaoJPA implements EntityDao { + + @PersistenceContext + private EntityManager entityManager; + + /** + * {@inheritDoc} + */ + public <E extends Entity> E find(Class<E> clazz, Long primaryKey) { + E entity = entityManager.find(clazz, primaryKey); + if (entity == null) { + entity = createEntity(clazz, primaryKey, entity); + } + return entity; + } + + /** + * {@inheritDoc} + */ + public void persist(Entity entity) { + entityManager.persist(entity); + } + + /** + * {@inheritDoc} + */ + public void delete(Entity entity) { + entity.setState(State.DELETED); + entityManager.persist(entity); + } + + private <E extends Entity> E createEntity(Class<E> clazz, Long primaryKey, E entity) { + try { + entity = clazz.newInstance(); + entity.setId(primaryKey); + } catch (InstantiationException e) { + e.printStackTrace(); + } catch (IllegalAccessException e) { + e.printStackTrace(); + } + return entity; + } + + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/dao/EntityDaoJPA.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Account.java 2009-04-24 20:07:11 UTC (rev 173) @@ -21,7 +21,6 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; -import de.campussource.cse.cdmm.Constants; /** * Account entity object @@ -163,4 +162,8 @@ public void setGroups(List<Group> groups) { this.groups = groups; } + + public void accept(Visitor visitor) { + visitor.visit(this); + } } Added: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AddReferenceVisitor.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AddReferenceVisitor.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AddReferenceVisitor.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,68 @@ +package de.campussource.cse.cdmm.domain; + +import org.apache.commons.lang.NotImplementedException; + +/** + * Visitor to add Reference to an entity object. + * @author Ingo Dueppe + * + */ +public class AddReferenceVisitor implements Visitor { + + private ReferenceType type; + + private Entity target; + + /** + * + * @param target entity object to be add as reference + * @param type of reference that will be added + */ + public AddReferenceVisitor(Entity target, ReferenceType type) { + this.type = type; + this.target = target; + } + + @Override + public void visit(Account account) { + // TODO Auto-generated method stub + throw new NotImplementedException(); + } + + @Override + public void visit(Category category) { + // TODO Auto-generated method stub + throw new NotImplementedException(); + } + + @Override + public void visit(Course course) { + switch (type) { + case CATEGORY: + course.addToCategory((Category) target); + break; + case WORKGROUP: + ((Course) target).addAsWorkgroupTo(course); + break; + case PARENT: + course.setParent((Course) target); + break; + case ROLE: + course.addRole((Role)target); + break; + } + } + + @Override + public void visit(Group group) { + // TODO Auto-generated method stub + throw new NotImplementedException(); + } + + @Override + public void visit(Role role) { + // TODO Auto-generated method stub + throw new NotImplementedException(); + } + +} Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AddReferenceVisitor.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Attribute.java 2009-04-24 20:07:11 UTC (rev 173) @@ -6,8 +6,6 @@ import javax.xml.bind.annotation.XmlType; import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; -import de.campussource.cse.cdmm.AttributeAdapter; -import de.campussource.cse.cdmm.Constants; /** * Attribute entity object Copied: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AttributeAdapter.java (from rev 168, trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AttributeAdapter.java) =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AttributeAdapter.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AttributeAdapter.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,27 @@ +package de.campussource.cse.cdmm.domain; + +import javax.xml.bind.annotation.adapters.XmlAdapter; + + +/** + * Attribute Adapter to map transient and persistent attributes + * @author Sebastian Roekens + * + */ +public class AttributeAdapter extends XmlAdapter<Attribute, Attribute>{ + + @Override + public Attribute unmarshal(Attribute v) throws Exception { + if (v.isTransient()){ + 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: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/AttributeAdapter.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Category.java 2009-04-24 20:07:11 UTC (rev 173) @@ -19,7 +19,6 @@ import javax.xml.bind.annotation.XmlTransient; import javax.xml.bind.annotation.XmlType; -import de.campussource.cse.cdmm.Constants; /** * Category entity object @@ -40,10 +39,10 @@ private Category parent; @OneToMany(mappedBy = Constants.PARENT, cascade = { CascadeType.REMOVE }) - private List<Category> children; + private List<Category> children = new ArrayList<Category>(); @ManyToMany(mappedBy = Constants.CATEGORIES) - private List<Course> courses; + private List<Course> courses = new ArrayList<Course>(); public Category() { } @@ -146,5 +145,10 @@ public boolean isRoot() { return (parent == null); } + + public void accept(Visitor visitor) { + visitor.visit(this); + } + } Copied: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Constants.java (from rev 168, trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java) =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Constants.java (rev 0) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Constants.java 2009-04-24 20:07:11 UTC (rev 173) @@ -0,0 +1,100 @@ +package de.campussource.cse.cdmm.domain; + +/** + * + * Class containing all String of package to prevent multiple definitions of same Strings + * @author Sebastian Roekens + * + */ +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"; + public static final String ENTITY = "entity"; + + //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"; + 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_PARENT = "parent"; + 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_TRANSIENT = "transient"; + public static final String PROPERTY_STATE = "state"; + + //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_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"; + 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 COLUMNNAME_NAME = "NAME"; + public static final String COLUMNNAME_VALUE = "VALUE"; + public static final String COLUMNNAME_ENTITY_ID = "ENTITY_ID"; + public static final String COLUMNNAME_STATE = "STATE"; + + public static final String ID = "busId"; + + public static final String ENTITY_TYPE = "entityType"; + public static final String ACCOUNT_TYPE = "accountType"; + public static final String CATEGORY_TYPE = "categoryType"; + public static final String COURSE_TYPE = "courseType"; + public static final String GROUP_TYPE = "groupType"; + public static final String ATTRIBUTE_TYPE = "attributeType"; + public static final String ROLE_TYPE = "roleType"; + public static final String ENTITYCONTAINER_TYPE = "entityContainerType"; + public static final String ROLE_TYPE_TYPE = "roleTypeType"; + + public static final String OUTPUT_EVENT_TYPE = "outputEventType"; + public static final String INPUT_EVENT_TYPE = "inputEventType"; + public static final String COURSE_MESSAGE_TYPE = "courseMessageType"; + public static final String GROUP_MESSAGE_TYPE = "groupMessageType"; + public static final String ACCOUNT_MESSAGE_TYPE = "accountMessageType"; + public static final String ROLE_MESSAGE_TYPE = "roleMessageType"; + public static final String CATEGORY_MESSAGE_TYPE = "categoryMessageType"; + public static final String EVENT_MESSAGE_TYPE = "eventMessageType"; + public static final String INPUT_EVENT = "inputEvent"; + public static final String OUTPUT_EVENT = "outputEvent"; + public static final String EVENT_TIME = "eventTime"; +} \ No newline at end of file Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Constants.java ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Course.java 2009-04-24 20:07:11 UTC (rev 173) @@ -22,7 +22,6 @@ import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; -import de.campussource.cse.cdmm.Constants; /** * Course entity object @@ -41,17 +40,17 @@ private Course parent; @OneToMany(mappedBy=Constants.PARENT, cascade=CascadeType.REMOVE) - private List<Course> workgroups; + private List<Course> workgroups = new ArrayList<Course>(3); @ManyToMany(cascade={CascadeType.MERGE, CascadeType.PERSIST, CascadeType.REFRESH}) @JoinTable( name = Constants.TABLENAME_COURSE2CATEGORY, joinColumns={@JoinColumn(name=Constants.COLUMNNAME_CATEGORY_ID)}, inverseJoinColumns={@JoinColumn(name=Constants.COLUMNNAME_COURSE_ID)}) - private List<Category> categories; + private List<Category> categories = new ArrayList<Category>(2); @OneToMany(mappedBy=Constants.COURSE, cascade = {CascadeType.REMOVE}) - private List<Role> roles; + private List<Role> roles = new ArrayList<Role>(); public Course(){ } @@ -159,5 +158,17 @@ public void setRoles(List<Role> roles) { this.roles = roles; } + + public void accept(Visitor visitor) { + visitor.visit(this); + } + public void addRole(Role role) { + if (role != null) { + roles.add(role); + role.setCourse(this); + } + } + + } Modified: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java =================================================================== --- trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-04-24 10:15:25 UTC (rev 172) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/domain/Entity.java 2009-04-24 20:07:11 UTC (rev 173) @@ -1,6 +1,5 @@ package de.campussource.cse.cdmm.domain; - import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -8,8 +7,6 @@ import javax.persistence.Column; import javax.persistence.EnumType; import javax.persistence.Enumerated; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; @@ -29,77 +26,67 @@ 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; - /** * Entity object - super class of other entity types + * + * @author Ingo Dueppe * @author Sebastian Roekens - * + * */ -...@ja...rsistence.Entity(name=Constants.ENTITY) +...@ja...rsistence.Entity(name = Constants.ENTITY) @Table(name = Constants.TABLENAME_ENTITY) -@Inheritance(strategy=InheritanceType.JOINED) -@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES) -@XmlType(name=Constants.ENTITY_TYPE,propOrder={"id", Constants.PROPERTY_STATE, Constants.PROPERTY_ATTRIBUTES}, namespace=Constants.NAMESPACE_DATATYPES) -public class Entity{ - - @Id - @GeneratedValue(strategy = GenerationType.AUTO) +@Inheritance(strategy = InheritanceType.JOINED) +@XmlRootElement(namespace = Constants.NAMESPACE_DATATYPES) +@XmlType(name = Constants.ENTITY_TYPE, propOrder = { "id", Constants.PROPERTY_STATE, Constants.PROPERTY_ATTRIBUTES }, namespace = Constants.NAMESPACE_DATATYPES) +public abstract class Entity { + + @Id private Long id; - + @Transient private List<Attribute> attributes; - - @Column(name=Constants.COLUMNNAME_STATE, nullable=false, insertable=true, updatable=true) + + @Column(name = Constants.COLUMNNAME_STATE, nullable = false, insertable = true, updatable = true) @Enumerated(EnumType.STRING) - private State state = State.EXISTS; - + private State state = State.NOT_EXISTS; + @Version @SuppressWarnings("unused") private long version; - - @Column(name="LAST_UPDATE") + + @Column(name = "LAST_UPDATE") @Temporal(TemporalType.TIMESTAMP) private Date date; - - public Entity(){ + + public Entity() { } - - public Entity(Long id){ + + public Entity(Long id) { this.id = id; } - 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 State getState() { return state; } - @XmlElement(name=Constants.PROPERTY_STATE) + @XmlElement(name = Constants.PROPERTY_STATE) public void setState(State state) { this.state = state; } - + public void setId(Long id) { this.id = id; } @XmlID - @XmlJavaTypeAdapter(value=IdAdapter.class) - @XmlElement(name=Constants.ID) + @XmlJavaTypeAdapter(value = IdAdapter.class) + @XmlElement(name = Constants.ID) public Long getId() { return id; } - @XmlElementWrapper(name=Constants.ATTRIBUTES) - @XmlElement(name=Constants.ATTRIBUTE) + @XmlElementWrapper(name = Constants.ATTRIBUTES) + @XmlElement(name = Constants.ATTRIBUTE) public List<Attribute> getAttributes() { return attributes; } @@ -107,23 +94,19 @@ // TODO Check if this is correct public void setAttributes(List<Attribute> attributes) { List<Attribute> newAttributeList = new ArrayList<Attribute>(); - for (Attribute att : attributes){ - if (!att.isTransient()){ - newAttributeList.add(attribute2PersistentAttribute(att)); - } else{ - newAtt... [truncated message content] |