Index: topia2/src/java/org/codelutin/topia/persistence/TopiaDAODelegator.java diff -u topia2/src/java/org/codelutin/topia/persistence/TopiaDAODelegator.java:1.9 topia2/src/java/org/codelutin/topia/persistence/TopiaDAODelegator.java:1.10 --- topia2/src/java/org/codelutin/topia/persistence/TopiaDAODelegator.java:1.9 Thu Sep 28 15:46:10 2006 +++ topia2/src/java/org/codelutin/topia/persistence/TopiaDAODelegator.java Mon Oct 23 15:01:58 2006 @@ -23,9 +23,9 @@ * Created: 30 déc. 2005 22:28:48 * * @author poussin - * @version $Revision: 1.9 $ + * @version $Revision: 1.10 $ * - * Last update: $Date: 2006/09/28 15:46:10 $ + * Last update: $Date: 2006/10/23 15:01:58 $ * by : $Author: ruchaud $ */ @@ -36,7 +36,6 @@ import java.util.Map; import org.codelutin.topia.TopiaException; -import org.codelutin.topia.event.TopiaEntityListener; import org.codelutin.topia.framework.TopiaContextImplementor; @@ -87,14 +86,6 @@ return getParentDAO().getContext(); } - public void addTopiaEntityListener(TopiaEntityListener l) { - getParentDAO().addTopiaEntityListener(l); - } - - public void removeTopiaEntityListener(TopiaEntityListener l) { - getParentDAO().removeTopiaEntityListener(l); - } - public void commitTransaction() throws TopiaException { getParentDAO().commitTransaction(); } Index: topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java diff -u topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java:1.14 topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java:1.15 --- topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java:1.14 Mon Oct 16 15:38:20 2006 +++ topia2/src/java/org/codelutin/topia/persistence/TopiaDAOAbstract.java Mon Oct 23 15:01:58 2006 @@ -23,10 +23,10 @@ * Created: 31 déc. 2005 13:10:34 * * @author poussin - * @version $Revision: 1.14 $ + * @version $Revision: 1.15 $ * - * Last update: $Date: 2006/10/16 15:38:20 $ - * by : $Author: bpoussin $ + * Last update: $Date: 2006/10/23 15:01:58 $ + * by : $Author: ruchaud $ */ package org.codelutin.topia.persistence; @@ -45,7 +45,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.codelutin.topia.TopiaException; -import org.codelutin.topia.event.TopiaEntityListener; import org.codelutin.topia.framework.TopiaContextImplementor; import org.codelutin.topia.persistence.hibernate.TopiaDAOHibernate; import org.hibernate.HibernateException; @@ -206,15 +205,6 @@ return result; } - public void addTopiaEntityListener(TopiaEntityListener l) { - getContext().addTopiaEntityListener(entityClass, l); - } - - public void removeTopiaEntityListener(TopiaEntityListener l) { - getContext().removeTopiaEntityListener(entityClass, l); - } - - /** * Par defaut ne fait rien */ @@ -227,7 +217,6 @@ public void rollbackTransaction() throws TopiaException { } - /* (non-Javadoc) * @see org.codelutin.topia.TopiaDAO#create(java.lang.String, java.lang.Object, java.lang.Object) */ @@ -258,8 +247,6 @@ */ public Entity create(Map properties) throws TopiaException { Serializable id = getId(properties); - getContext().fireVetoableCreate(entityClass, id); - Entity result = instanciateNew(); // TODO reflechir s'il ne faudrait pas creer l'id avant l'event precedent @@ -268,8 +255,9 @@ if (result instanceof TopiaEntity) { String topiaId = TopiaId.create(entityClass); id = topiaId; - ((TopiaEntity)result).setTopiaId(topiaId); - + TopiaEntityAbstract entity = (TopiaEntityAbstract)result; + entity.setTopiaId(topiaId); + entity.setTopiaContext(getContext()); } try { for(Map.Entry e : properties.entrySet()) { @@ -285,8 +273,6 @@ throw new IllegalArgumentException("Can't put properties on new Object", eee); } - getContext().fireOnCreated(entityClass, id, result); - return result; } Index: topia2/src/java/org/codelutin/topia/persistence/TopiaDAO.java diff -u topia2/src/java/org/codelutin/topia/persistence/TopiaDAO.java:1.9 topia2/src/java/org/codelutin/topia/persistence/TopiaDAO.java:1.10 --- topia2/src/java/org/codelutin/topia/persistence/TopiaDAO.java:1.9 Thu Sep 28 15:46:10 2006 +++ topia2/src/java/org/codelutin/topia/persistence/TopiaDAO.java Mon Oct 23 15:01:58 2006 @@ -23,9 +23,9 @@ * Created: 30 déc. 2005 03:00:57 * * @author poussin - * @version $Revision: 1.9 $ + * @version $Revision: 1.10 $ * - * Last update: $Date: 2006/09/28 15:46:10 $ + * Last update: $Date: 2006/10/23 15:01:58 $ * by : $Author: ruchaud $ */ @@ -36,7 +36,6 @@ import java.util.Map; import org.codelutin.topia.TopiaException; -import org.codelutin.topia.event.TopiaEntityListener; import org.codelutin.topia.framework.TopiaContextImplementor; /** @@ -60,17 +59,6 @@ public abstract TopiaContextImplementor getContext(); /** - * Adds a new TopiaEntityListener to the subscribers list. - * @param l - the TopiaEntityListener to add to the subscribers list. - */ - public void addTopiaEntityListener(TopiaEntityListener l); - - /** - * Removes a TopiaEntityListener from the subscribers list. - * @param l - the TopiaEntityListener to remove from the subscribers. - */ - public void removeTopiaEntityListener(TopiaEntityListener l); - /** * appelé lorsque le context a eu un commit de fait * TODO il faudrait peut-etre plutot faire un commit a deux phase * car plusieurs type de persistence peuvent etre melangé, et il @@ -80,7 +68,6 @@ /** appelé lorsque le context a eu un commit de fait */ public void rollbackTransaction() throws TopiaException; - /** * Construit une nouvelle instance de l'objet géré par ce DAO * @param properties la liste des propriétés que doit avoir l'objet créé Index: topia2/src/java/org/codelutin/topia/persistence/TopiaEntityAbstract.java diff -u topia2/src/java/org/codelutin/topia/persistence/TopiaEntityAbstract.java:1.11 topia2/src/java/org/codelutin/topia/persistence/TopiaEntityAbstract.java:1.12 --- topia2/src/java/org/codelutin/topia/persistence/TopiaEntityAbstract.java:1.11 Fri Oct 20 00:26:25 2006 +++ topia2/src/java/org/codelutin/topia/persistence/TopiaEntityAbstract.java Mon Oct 23 15:01:58 2006 @@ -23,17 +23,15 @@ * * @author poussin * - * @version $Revision: 1.11 $ + * @version $Revision: 1.12 $ * - * Last update: $Date: 2006/10/20 00:26:25 $ by : $Author: bpoussin $ + * Last update: $Date: 2006/10/23 15:01:58 $ by : $Author: ruchaud $ */ package org.codelutin.topia.persistence; -import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; -import java.beans.PropertyVetoException; import java.beans.VetoableChangeListener; import java.beans.VetoableChangeSupport; import java.util.Date; @@ -43,7 +41,6 @@ import org.apache.commons.logging.LogFactory; import org.codelutin.topia.TopiaContext; import org.codelutin.topia.TopiaException; -import org.codelutin.topia.event.PropertyReadEvent; import org.codelutin.topia.framework.TopiaContextImplementor; /** @@ -67,30 +64,10 @@ transient protected TopiaContext topiaContext = null; - transient protected VetoableChangeSupport vetoableChangeSupport = - new VetoableChangeSupport(this); - - transient protected VetoableChangeSupport vetoableReadSupport = - new VetoableChangeSupport(this); - - transient protected PropertyChangeSupport propertyChangeSupport = - new PropertyChangeSupport(this); - - transient private boolean inPreloaded = false; - - /** - * Call after entity creation, getTopiaContext return non null context - * This method is called after dao.create() - * @throws TopiaException - */ - public void postCreate() throws TopiaException {} - - /** - * Call after entity loading, getTopiaContext return non null context - * @throws TopiaException - */ - public void postLoad() throws TopiaException {} - + transient protected VetoableChangeSupport readVetoables = new VetoableChangeSupport(this); + transient protected PropertyChangeSupport readListeners = new PropertyChangeSupport(this); + transient protected VetoableChangeSupport writeVetoables = new VetoableChangeSupport(this); + transient protected PropertyChangeSupport writeListeners = new PropertyChangeSupport(this); /** * (non-Javadoc) @@ -229,128 +206,98 @@ return getTopiaId().equals(other.getTopiaId()); } - - /** - * @return the inPreloaded - */ - public boolean isInPreloaded() { - return this.inPreloaded; + protected void fireOnPreRead(String propertyName, Object value) { + TopiaContextImplementor contextImplementor = (TopiaContextImplementor) getTopiaContext(); + contextImplementor.getFiresSupport().fireOnPreRead(readVetoables, this, propertyName, value); } - public void setInPreLoaded(boolean v) { - inPreloaded = v; + protected void fireOnPostRead(String propertyName, Object value) { + TopiaContextImplementor contextImplementor = (TopiaContextImplementor) getTopiaContext(); + contextImplementor.getFiresSupport().fireOnPostRead(readListeners, this, propertyName, value); } - protected void fireOnModifyProperty( - String propertyName, Object oldValue, Object newValue) { - if (isInPreloaded()) { - return; - } - propertyChangeSupport.firePropertyChange( - propertyName, oldValue, newValue); - if (topiaContext != null) { - ((TopiaContextImplementor)topiaContext).fireOnUpdated( - this.getClass(), getTopiaId(), this); - //FIXME vérifier que this.getClass() renvoie bien la bonne class et corriger sinon - } + protected void fireOnPostRead(String propertyName, int index, Object value) { + TopiaContextImplementor contextImplementor = (TopiaContextImplementor) getTopiaContext(); + contextImplementor.getFiresSupport().fireOnPostRead(readListeners, this, propertyName, index, value); } - - protected void fireOnModifyIndexedProperty( - String propertyName, int index, Object oldValue, Object newValue) { - if (isInPreloaded()) { - return; - } - propertyChangeSupport.fireIndexedPropertyChange( - propertyName, index, oldValue, newValue); - if (topiaContext != null) { - ((TopiaContextImplementor)topiaContext).fireOnUpdated( - this.getClass(), getTopiaId(), this); - //FIXME vérifier que this.getClass() renvoie bien la bonne class et corriger sinon - } + + protected void fireOnPreWrite(String propertyName, Object oldValue, Object newValue) { + TopiaContextImplementor contextImplementor = (TopiaContextImplementor) getTopiaContext(); + contextImplementor.getFiresSupport().fireOnPreWrite(writeVetoables, this, propertyName, oldValue, newValue); } - protected void fireOnModifyVetoable(String propertyName, Object oldValue, Object newValue) { - PropertyChangeEvent event = new PropertyChangeEvent(this, propertyName, oldValue, newValue); - try { - vetoableChangeSupport.fireVetoableChange(event); - } catch (PropertyVetoException eee) { - if (log.isWarnEnabled()) { - log.warn("Can't call fireOnModifyVetoable for this entity : " + this, eee); - } - } + protected void fireOnPostWrite(String propertyName, Object oldValue, Object newValue) { + TopiaContextImplementor contextImplementor = (TopiaContextImplementor) getTopiaContext(); + contextImplementor.getFiresSupport().fireOnPostWrite(writeListeners, this, propertyName, oldValue, newValue); } - protected T fireOnReadVetoable(String propertyName, T value) { - T result = value; - PropertyReadEvent event = new PropertyReadEvent(this, propertyName, value); - try { - vetoableReadSupport.fireVetoableChange(event); - if (event.getNewValue() != PropertyReadEvent.NOT_CHANGE) { - result = (T)event.getNewValue(); - } - } catch (PropertyVetoException eee) { - if (log.isWarnEnabled()) { - log.warn("Can't call fireOnReadVetoable for this entity : " + this, eee); - } - } - return result; + protected void fireOnPostWrite(String propertyName, int index, Object oldValue, Object newValue) { + TopiaContextImplementor contextImplementor = (TopiaContextImplementor) getTopiaContext(); + contextImplementor.getFiresSupport().fireOnPostWrite(writeListeners, this, propertyName, index, oldValue, newValue); } - public void addVetoableChangeListener(String propertyName, - VetoableChangeListener listener) { - vetoableChangeSupport.addVetoableChangeListener(propertyName, listener); + public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener) { + writeListeners.addPropertyChangeListener(propertyName, listener); } - public void addVetoableChangeListener(VetoableChangeListener listener) { - vetoableChangeSupport.addVetoableChangeListener(listener); + public void addPropertyChangeListener(PropertyChangeListener listener) { + writeListeners.addPropertyChangeListener(listener); } - public void addVetoableReadListener(String propertyName, - VetoableChangeListener listener) { - vetoableReadSupport.addVetoableChangeListener(propertyName, listener); + public void addVetoableChangeListener(String propertyName, VetoableChangeListener vetoable) { + writeVetoables.addVetoableChangeListener(propertyName, vetoable); } - - public void addVetoableReadListener(VetoableChangeListener listener) { - vetoableReadSupport.addVetoableChangeListener(listener); + + public void addVetoableChangeListener(VetoableChangeListener vetoable) { + writeVetoables.addVetoableChangeListener(vetoable); } - public void addPropertyListener(String propertyName, - PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(propertyName, listener); + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) { + writeListeners.removePropertyChangeListener(propertyName, listener); } - - public void addPropertyListener(PropertyChangeListener listener) { - propertyChangeSupport.addPropertyChangeListener(listener); + + public void removePropertyChangeListener(PropertyChangeListener listener) { + writeListeners.removePropertyChangeListener(listener); } - - public void removeVetoableReadListener(String propertyName, - VetoableChangeListener listener) { - vetoableReadSupport.removeVetoableChangeListener(propertyName, - listener); + + public void removeVetoableChangeListener(String propertyName, VetoableChangeListener vetoable) { + writeVetoables.removeVetoableChangeListener(propertyName, vetoable); } - public void removeVetoableReadListener(VetoableChangeListener listener) { - vetoableReadSupport.removeVetoableChangeListener(listener); + public void removeVetoableChangeListener(VetoableChangeListener vetoable) { + writeVetoables.removeVetoableChangeListener(vetoable); } - public void removeVetoableChangeListener(String propertyName, - VetoableChangeListener listener) { - vetoableChangeSupport.removeVetoableChangeListener(propertyName, - listener); + public void addPropertyListener(String propertyName, PropertyChangeListener listener) { + readListeners.addPropertyChangeListener(propertyName, listener); } - public void removeVetoableChangeListener(VetoableChangeListener listener) { - vetoableChangeSupport.removeVetoableChangeListener(listener); + public void addPropertyListener(PropertyChangeListener listener) { + readListeners.addPropertyChangeListener(listener); } - public void removePropertyListener(String propertyName, - PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(propertyName, - listener); + public void addVetoableListener(String propertyName, VetoableChangeListener vetoable) { + readVetoables.addVetoableChangeListener(propertyName, vetoable); + } + + public void addVetoableListener(VetoableChangeListener vetoable) { + readVetoables.addVetoableChangeListener(vetoable); } + public void removePropertyListener(String propertyName, PropertyChangeListener listener) { + readListeners.removePropertyChangeListener(propertyName, listener); + } + public void removePropertyListener(PropertyChangeListener listener) { - propertyChangeSupport.removePropertyChangeListener(listener); + readListeners.removePropertyChangeListener(listener); + } + + public void removeVetoableListener(String propertyName, VetoableChangeListener vetoable) { + readVetoables.removeVetoableChangeListener(propertyName, vetoable); + } + + public void removeVetoableListener(VetoableChangeListener vetoable) { + readVetoables.removeVetoableChangeListener(vetoable); } } //TopiaEntityAbstract Index: topia2/src/java/org/codelutin/topia/persistence/TopiaEntity.java diff -u topia2/src/java/org/codelutin/topia/persistence/TopiaEntity.java:1.8 topia2/src/java/org/codelutin/topia/persistence/TopiaEntity.java:1.9 --- topia2/src/java/org/codelutin/topia/persistence/TopiaEntity.java:1.8 Fri Oct 20 00:26:25 2006 +++ topia2/src/java/org/codelutin/topia/persistence/TopiaEntity.java Mon Oct 23 15:01:58 2006 @@ -23,15 +23,16 @@ * Created: 28 déc. 2005 22:48:10 * * @author poussin - * @version $Revision: 1.8 $ + * @version $Revision: 1.9 $ * - * Last update: $Date: 2006/10/20 00:26:25 $ - * by : $Author: bpoussin $ + * Last update: $Date: 2006/10/23 15:01:58 $ + * by : $Author: ruchaud $ */ package org.codelutin.topia.persistence; import java.beans.PropertyChangeListener; +import java.beans.VetoableChangeListener; import java.util.Date; import java.util.List; @@ -80,11 +81,36 @@ */ public List getAggregate() throws TopiaException; - public void addPropertyListener(String propertyName, - PropertyChangeListener listener); + public void addPropertyChangeListener(String propertyName, PropertyChangeListener listener); + + public void addPropertyChangeListener(PropertyChangeListener listener); + + public void addVetoableChangeListener(String propertyName, VetoableChangeListener vetoable); + + public void addVetoableChangeListener(VetoableChangeListener vetoable); + + public void removePropertyChangeListener(String propertyName, PropertyChangeListener listener); + + public void removePropertyChangeListener(PropertyChangeListener listener); + + public void removeVetoableChangeListener(String propertyName, VetoableChangeListener vetoable); + + public void removeVetoableChangeListener(VetoableChangeListener vetoable); + + public void addPropertyListener(String propertyName, PropertyChangeListener listener); + public void addPropertyListener(PropertyChangeListener listener); - public void removePropertyListener(String propertyName, - PropertyChangeListener listener); + + public void addVetoableListener(String propertyName, VetoableChangeListener vetoable); + + public void addVetoableListener(VetoableChangeListener vetoable); + + public void removePropertyListener(String propertyName, PropertyChangeListener listener); + public void removePropertyListener(PropertyChangeListener listener); + + public void removeVetoableListener(String propertyName, VetoableChangeListener vetoable); + public void removeVetoableListener(VetoableChangeListener vetoable); + } //TopiaEntity