|
From: <ro...@us...> - 2009-04-23 12:12:09
|
Revision: 164
http://cse-ip.svn.sourceforge.net/cse-ip/?rev=164&view=rev
Author: roekens
Date: 2009-04-23 12:11:35 +0000 (Thu, 23 Apr 2009)
Log Message:
-----------
- implementing DataModelManagerBean
- added several Messages
Modified 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/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/DataModelManagerBean.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/RoleMessage.java
Added Paths:
-----------
trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java
Modified: 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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/AccountMessage.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -1,5 +1,30 @@
package de.campussource.cse.cdmm;
-public class AccountMessage {
+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;
+ }
+
}
Modified: 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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CategoryMessage.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -1,7 +1,5 @@
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;
@@ -16,14 +14,10 @@
*/
@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES)
@XmlType(name=Constants.CATEGORY_MESSAGE_TYPE, propOrder={})
-public class CategoryMessage{
+public class CategoryMessage extends InputMessage{
private Category category;
- private InputEventType inputEvent;
-
- private Date eventTime;
-
@XmlElement(name=Constants.CATEGORY)
public Category getCategory() {
return category;
@@ -33,24 +27,4 @@
this.category = category;
}
-
- @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;
- }
-
-
-}
+}
\ No newline at end of file
Modified: 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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/Constants.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -89,6 +89,9 @@
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";
Modified: 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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/CourseMessage.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -1,7 +1,5 @@
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;
@@ -16,32 +14,10 @@
*/
@XmlRootElement(namespace=Constants.NAMESPACE_DATATYPES)
@XmlType(name=Constants.COURSE_MESSAGE_TYPE, propOrder={})
-public class CourseMessage{
+public class CourseMessage extends InputMessage{
private Course course;
- 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;
- }
-
@XmlElement(name=Constants.COURSE)
public Course getCourse() {
return course;
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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/DataModelManagerBean.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -13,8 +13,10 @@
import javax.jws.WebService;
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;
import de.campussource.cse.cdmm.domain.State;
import de.campussource.cse.common.exception.ServiceComponentException;
@@ -35,10 +37,72 @@
@EJB
private CourseDao courseDao;
+ @EJB
+ private RoleDao roleDao;
+
+ @EJB
+ private AccountDao accountDao;
+
+ @EJB
+ private GroupDao groupDao;
+
@Override
- public List<EventMessage> createOrUpdateCategory(CategoryMessage categoryMessage) {
- // TODO Auto-generated method stub
- return null;
+ @WebMethod(action="createOrUpdateCategory")
+ @WebResult(name="EventMessages")
+ public List<EventMessage> createOrUpdateCategory(
+ @WebParam(name="CategoryMessage") CategoryMessage categoryMessage) {
+
+ //init eventMessageList
+ List<EventMessage> events = new ArrayList<EventMessage>();
+ //get state of given object in persistence
+ State state = null;
+ Category loadedCategory = null;
+ try {
+ loadedCategory = categoryDao.find(categoryMessage.getCategory().getId());
+ state=loadedCategory.getState();
+ } catch (ServiceComponentException e1) {
+ //do nothing
+ }
+ //check if event time is before entity state time
+ if (loadedCategory == null || loadedCategory.getDate().after(categoryMessage.getEventTime())){
+ return events;
+ }
+
+ //handle different inputEvents
+ if (categoryMessage.getInputEvent()==InputEventType.CREATE_UPDATE){
+ //handle different states of entity
+ EventMessage eventMessage = new EventMessage();
+ Category category = categoryMessage.getCategory();
+ category.setState(State.EXISTS);
+ category.setDate(categoryMessage.getEventTime());
+ eventMessage.setEntity(category);
+ try {
+ categoryDao.persist(category);
+ } catch (ServiceComponentException e) {
+ //TODO handle me
+ }
+ if (state==State.EXISTS){
+ eventMessage.setOutputEvent(OutputEventType.UPDATE);
+ } else {
+ eventMessage.setOutputEvent(OutputEventType.CREATE);
+ }
+ eventMessage.setEventTime(new Date());
+ events.add(eventMessage);
+
+ createReferences(category);
+
+ } else if (categoryMessage.getInputEvent()==InputEventType.DELETE){
+ return deleteCategory(categoryMessage);
+ } else if (categoryMessage.getInputEvent()==InputEventType.CREATE_BY_REFERENCE){
+ Category knownCategory = categoryMessage.getCategory();
+ knownCategory.setState(State.KNOWN);
+ try {
+ categoryDao.persist(knownCategory);
+ } catch (ServiceComponentException e) {
+ // TODO handle me
+ }
+ }
+ return events;
}
@Override
@@ -83,21 +147,7 @@
eventMessage.setEventTime(new Date());
events.add(eventMessage);
- //traverse associated objects and create them
- //categories
- for (Category category : course.getCategories()){
- createByReference(category);
- }
- //workgroups
- for (Course workgroup : course.getWorkgroups()){
- createByReference(workgroup);
- }
- //parent
- createByReference(course.getParent());
- //roles
- for (Role role : course.getRoles()){
- createByReference(role);
- }
+ createReferences(course);
} else if (courseMessage.getInputEvent()==InputEventType.DELETE){
return deleteCourse(courseMessage);
@@ -110,11 +160,73 @@
// TODO handle me
}
}
-
-
return events;
}
+ private void createReferences(Course course) {
+ //traverse associated objects and create them
+ //categories
+ for (Category category : course.getCategories()){
+ createByReference(category);
+ }
+ //workgroups
+ for (Course workgroup : course.getWorkgroups()){
+ createByReference(workgroup);
+ }
+ //parent
+ createByReference(course.getParent());
+ //roles
+ for (Role role : course.getRoles()){
+ createByReference(role);
+ }
+ }
+
+ private void createReferences(Role role) {
+ //traverse associated objects and create them
+ //course
+ createByReference(role.getCourse());
+ //account
+ createByReference(role.getAccount());
+ }
+
+ private void createReferences(Category category) {
+ //traverse associated objects and create them
+ //categories
+ for (Category child : category.getChildren()){
+ createByReference(child);
+ }
+ //courses
+ for (Course course : category.getCourses()){
+ createByReference(course);
+ }
+ //parent
+ createByReference(category.getParent());
+ }
+
+ private void createReferences(Account account) {
+ //traverse associated objects and create them
+ //roles
+ for (Role role : account.getRoles()){
+ createByReference(role);
+ }
+ //groups
+ for (Group group : account.getGroups()){
+ createByReference(group);
+ }
+ }
+
+ private void createReferences(Group group) {
+ //traverse associated objects and create them
+ //roles
+ for (Role role : group.getRoles()){
+ createByReference(role);
+ }
+ //accounts
+ for (Account account : group.getMembers()){
+ createByReference(account);
+ }
+ }
+
private void createByReference(Category category) {
try {
@SuppressWarnings("unused")
@@ -141,9 +253,45 @@
}
}
+ private void createByReference(Group group) {
+ try {
+ @SuppressWarnings("unused")
+ Group loadedGroup = groupDao.find(group.getId());
+ } catch (ServiceComponentException e) {
+ GroupMessage gm = new GroupMessage();
+ gm.setGroup(group);
+ gm.setInputEvent(InputEventType.CREATE_BY_REFERENCE);
+ gm.setEventTime(new Date());
+ createOrUpdateGroup(gm);
+ }
+ }
+
+ private void createByReference(Account account) {
+ try {
+ @SuppressWarnings("unused")
+ Account loadedAccount = accountDao.find(account.getId());
+ } catch (ServiceComponentException e) {
+ AccountMessage am = new AccountMessage();
+ am.setAccount(account);
+ am.setInputEvent(InputEventType.CREATE_BY_REFERENCE);
+ am.setEventTime(new Date());
+ createOrUpdateAccount(am);
+ }
+ }
+
private void createByReference(Role role) {
- //FIXME implement me
+ try {
+ @SuppressWarnings("unused")
+ Role loadedRole = roleDao.find(role.getId());
+ } catch (ServiceComponentException e) {
+ RoleMessage rm = new RoleMessage();
+ rm.setRole(role);
+ rm.setInputEvent(InputEventType.CREATE_BY_REFERENCE);
+ rm.setEventTime(new Date());
+ createOrUpdateRole(rm);
+ }
}
+
@Override
public List<EventMessage> deleteCategory(CategoryMessage categoryMessage) {
@@ -160,20 +308,168 @@
@Override
public List<EventMessage> createOrUpdateAccount(
AccountMessage accountMessage) {
- // TODO Auto-generated method stub
- return null;
+
+ //init eventMessageList
+ List<EventMessage> events = new ArrayList<EventMessage>();
+ //get state of given object in persistence
+ State state = null;
+ Account loadedAccount = null;
+ try {
+ loadedAccount = accountDao.find(accountMessage.getAccount().getId());
+ state=loadedAccount.getState();
+ } catch (ServiceComponentException e1) {
+ //do nothing
+ }
+ //check if event time is before entity state time
+ if (loadedAccount == null || loadedAccount.getDate().after(accountMessage.getEventTime())){
+ return events;
+ }
+
+ //handle different inputEvents
+ if (accountMessage.getInputEvent()==InputEventType.CREATE_UPDATE){
+ //handle different states of entity
+ EventMessage eventMessage = new EventMessage();
+ Account account = accountMessage.getAccount();
+ account.setState(State.EXISTS);
+ account.setDate(accountMessage.getEventTime());
+ eventMessage.setEntity(account);
+ try {
+ accountDao.persist(account);
+ } catch (ServiceComponentException e) {
+ //TODO handle me
+ }
+ if (state==State.EXISTS){
+ eventMessage.setOutputEvent(OutputEventType.UPDATE);
+ } else {
+ eventMessage.setOutputEvent(OutputEventType.CREATE);
+ }
+ eventMessage.setEventTime(new Date());
+ events.add(eventMessage);
+
+ createReferences(account);
+
+ } else if (accountMessage.getInputEvent()==InputEventType.DELETE){
+ return deleteAccount(accountMessage);
+ } else if (accountMessage.getInputEvent()==InputEventType.CREATE_BY_REFERENCE){
+ Account knownAccount = accountMessage.getAccount();
+ knownAccount.setState(State.KNOWN);
+ try {
+ accountDao.persist(knownAccount);
+ } catch (ServiceComponentException e) {
+ // TODO handle me
+ }
+ }
+ return events;
}
@Override
public List<EventMessage> createOrUpdateGroup(GroupMessage groupMessage) {
- // TODO Auto-generated method stub
- return null;
+ //init eventMessageList
+ List<EventMessage> events = new ArrayList<EventMessage>();
+ //get state of given object in persistence
+ State state = null;
+ Group loadedGroup = null;
+ try {
+ loadedGroup = groupDao.find(groupMessage.getGroup().getId());
+ state=loadedGroup.getState();
+ } catch (ServiceComponentException e1) {
+ //do nothing
+ }
+ //check if event time is before entity state time
+ if (loadedGroup == null || loadedGroup.getDate().after(groupMessage.getEventTime())){
+ return events;
+ }
+
+ //handle different inputEvents
+ if (groupMessage.getInputEvent()==InputEventType.CREATE_UPDATE){
+ //handle different states of entity
+ EventMessage eventMessage = new EventMessage();
+ Group group = groupMessage.getGroup();
+ group.setState(State.EXISTS);
+ group.setDate(groupMessage.getEventTime());
+ eventMessage.setEntity(group);
+ try {
+ groupDao.persist(group);
+ } catch (ServiceComponentException e) {
+ //TODO handle me
+ }
+ if (state==State.EXISTS){
+ eventMessage.setOutputEvent(OutputEventType.UPDATE);
+ } else {
+ eventMessage.setOutputEvent(OutputEventType.CREATE);
+ }
+ eventMessage.setEventTime(new Date());
+ events.add(eventMessage);
+
+ createReferences(group);
+
+ } else if (groupMessage.getInputEvent()==InputEventType.DELETE){
+ return deleteGroup(groupMessage);
+ } else if (groupMessage.getInputEvent()==InputEventType.CREATE_BY_REFERENCE){
+ Group knownGroup = groupMessage.getGroup();
+ knownGroup.setState(State.KNOWN);
+ try {
+ groupDao.persist(knownGroup);
+ } catch (ServiceComponentException e) {
+ // TODO handle me
+ }
+ }
+ return events;
}
@Override
public List<EventMessage> createOrUpdateRole(RoleMessage roleMessage) {
- // TODO Auto-generated method stub
- return null;
+ //init eventMessageList
+ List<EventMessage> events = new ArrayList<EventMessage>();
+ //get state of given object in persistence
+ State state = null;
+ Role loadedRole = null;
+ try {
+ loadedRole = roleDao.find(roleMessage.getRole().getId());
+ state=loadedRole.getState();
+ } catch (ServiceComponentException e1) {
+ //do nothing
+ }
+ //check if event time is before entity state time
+ if (loadedRole == null || loadedRole.getDate().after(roleMessage.getEventTime())){
+ return events;
+ }
+
+ //handle different inputEvents
+ if (roleMessage.getInputEvent()==InputEventType.CREATE_UPDATE){
+ //handle different states of entity
+ EventMessage eventMessage = new EventMessage();
+ Role role = roleMessage.getRole();
+ role.setState(State.EXISTS);
+ role.setDate(roleMessage.getEventTime());
+ eventMessage.setEntity(role);
+ try {
+ roleDao.persist(role);
+ } catch (ServiceComponentException e) {
+ //TODO handle me
+ }
+ if (state==State.EXISTS){
+ eventMessage.setOutputEvent(OutputEventType.UPDATE);
+ } else {
+ eventMessage.setOutputEvent(OutputEventType.CREATE);
+ }
+ eventMessage.setEventTime(new Date());
+ events.add(eventMessage);
+
+ createReferences(role);
+
+ } else if (roleMessage.getInputEvent()==InputEventType.DELETE){
+ return deleteRole(roleMessage);
+ } else if (roleMessage.getInputEvent()==InputEventType.CREATE_BY_REFERENCE){
+ Role knownRole = roleMessage.getRole();
+ knownRole.setState(State.KNOWN);
+ try {
+ roleDao.persist(knownRole);
+ } catch (ServiceComponentException e) {
+ // TODO handle me
+ }
+ }
+ return events;
}
@Override
Modified: 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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/GroupMessage.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -1,5 +1,30 @@
package de.campussource.cse.cdmm;
-public class GroupMessage {
+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;
+ }
+
}
Added: 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 (rev 0)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -0,0 +1,29 @@
+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;
+ }
+}
Property changes on: trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/InputMessage.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: 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-23 09:41:48 UTC (rev 163)
+++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/RoleMessage.java 2009-04-23 12:11:35 UTC (rev 164)
@@ -1,5 +1,30 @@
package de.campussource.cse.cdmm;
-public class RoleMessage {
+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
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|