From: <id...@us...> - 2009-04-27 11:31:40
|
Revision: 181 http://cse-ip.svn.sourceforge.net/cse-ip/?rev=181&view=rev Author: idueppe Date: 2009-04-27 11:30:54 +0000 (Mon, 27 Apr 2009) Log Message: ----------- IN PROGRESS: Refactoring of cdmm... Should be compilable and tests are green Modified Paths: -------------- 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/ModelMergerBean.java Modified: 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 2009-04-27 11:30:28 UTC (rev 180) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/EventBuilderBean.java 2009-04-27 11:30:54 UTC (rev 181) @@ -11,7 +11,7 @@ import de.campussource.cse.cdmm.messages.OutputEventType; /** - * + * Default implementation of an Event Builder * @author Ingo Dueppe * */ Modified: 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 2009-04-27 11:30:28 UTC (rev 180) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManager.java 2009-04-27 11:30:54 UTC (rev 181) @@ -5,6 +5,13 @@ import de.campussource.cse.cdmm.messages.EventMessage; import de.campussource.cse.cdmm.messages.InputMessage; +/** + * Canonical Data Model Manager + * + * @author Ingo Dueppe + * @author Sebastian Roekens + * + */ public interface ModelManager { public List<EventMessage> createOrUpdate(InputMessage message); Modified: 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 2009-04-27 11:30:28 UTC (rev 180) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelManagerBean.java 2009-04-27 11:30:54 UTC (rev 181) @@ -11,10 +11,16 @@ 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; +/** + * Canonical Data Model Manager implementation + * + * + * @author Ingo Dueppe + * + */ @Stateless @Remote(ModelManager.class) public class ModelManagerBean implements ModelManager { @@ -26,13 +32,18 @@ @Override public List<EventMessage> createOrUpdate(InputMessage message) { + if (logger.isDebugEnabled()) { + logger.debug("Receive create or update message: "+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); + ModelMerger merger = new ModelMergerBean(); + merger.merge(input); entityDao.persist(loaded); } @@ -40,40 +51,6 @@ 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) { Modified: 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 2009-04-27 11:30:28 UTC (rev 180) +++ trunk/cse-ip/sc-cdmm/src/main/java/de/campussource/cse/cdmm/ModelMergerBean.java 2009-04-27 11:30:54 UTC (rev 181) @@ -9,7 +9,7 @@ import de.campussource.cse.cdmm.domain.Visitor; /** - * + * Merger * @author Ingo Dueppe * */ @@ -25,38 +25,42 @@ return entity; } + /* + * TODO + * 1. Traverse all references of the input message and select them in a list + * 2. Traverse all references of the entity and check if there in this list + * 3. Remove all not existing references + */ + private <E extends Entity> void mergeEntities(E input, E loaded) { switch (loaded.getState()) { case NOT_EXISTS: eventBuilder.addCreateEvent(loaded); + checkReferences(input, 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); + checkReferences(input, loaded); loaded.setAttributes(input.getAttributes()); loaded.setDate(input.getDate()); break; case KNOWN: eventBuilder.addCreateEvent(loaded); - // create references + checkReferences(input, loaded); loaded.setAttributes(input.getAttributes()); loaded.setDate(input.getDate()); loaded.setState(State.EXISTS); - break; case DELETED: eventBuilder.addDeleteEvent(loaded); - + checkReferences(input, loaded); loaded.setAttributes(input.getAttributes()); loaded.setDate(input.getDate()); loaded.setState(State.DELETED); - break; } } @@ -69,11 +73,9 @@ if (entity.getState() == State.NOT_EXISTS) { entity.setState(State.KNOWN); entity.setDate(input.getDate()); - } + } loaded.accept(new AddReferenceVisitor(entity, type)); } - - }; input.accept(visitor); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |