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