Index: topia2/src/java/org/codelutin/topia/event/TopiaTransactionEvent.java diff -u topia2/src/java/org/codelutin/topia/event/TopiaTransactionEvent.java:1.3 topia2/src/java/org/codelutin/topia/event/TopiaTransactionEvent.java:1.4 --- topia2/src/java/org/codelutin/topia/event/TopiaTransactionEvent.java:1.3 Mon Oct 23 15:01:57 2006 +++ topia2/src/java/org/codelutin/topia/event/TopiaTransactionEvent.java Wed Nov 22 20:20:56 2006 @@ -20,31 +20,62 @@ import java.util.EventObject; import java.util.HashSet; +import java.util.Map; import java.util.Set; +import org.apache.commons.collections.map.IdentityMap; import org.codelutin.topia.TopiaContext; +import org.codelutin.topia.framework.EntityState; import org.codelutin.topia.persistence.TopiaEntity; +import org.hibernate.util.IdentitySet; public class TopiaTransactionEvent extends EventObject { private static final long serialVersionUID = 1L; - private Set entities; + private Map entities = new IdentityMap(); - public TopiaTransactionEvent(Object source) { - super(source); - entities = new HashSet(); + public TopiaTransactionEvent(TopiaContext source) { + super(source); } - - public void addEntity(TopiaEntity entity) { - entities.add(entity); + + public TopiaTransactionEvent(TopiaContext source, Map entities) { + this(source); + this.entities.putAll(entities); } - + public Set getEntities() { - return entities; + return entities.keySet(); + } + + public boolean isLoad(TopiaEntity entity) { + EntityState state = entities.get(entity); + return state != null && state.isLoad(); + } + public boolean isRead(TopiaEntity entity) { + EntityState state = entities.get(entity); + return state != null && state.isRead(); + } + public boolean isCreate(TopiaEntity entity) { + EntityState state = entities.get(entity); + return state != null && state.isCreate(); + } + public boolean isUpdate(TopiaEntity entity) { + EntityState state = entities.get(entity); + return state != null && state.isUpdate(); + } + public boolean isDelete(TopiaEntity entity) { + EntityState state = entities.get(entity); + return state != null && state.isDelete(); + } + + public boolean isModification(TopiaEntity entity) { + EntityState state = entities.get(entity); + return state != null && + (state.isCreate() || state.isUpdate() || state.isDelete()); } - public TopiaContext getSource() { + public TopiaContext getTopiaContext() { return (TopiaContext) super.getSource(); } }