Index: topia/doc/Fonctionnement.rst diff -u topia/doc/Fonctionnement.rst:1.3 topia/doc/Fonctionnement.rst:1.4 --- topia/doc/Fonctionnement.rst:1.3 Tue Jul 26 14:32:05 2005 +++ topia/doc/Fonctionnement.rst Thu Aug 4 20:59:30 2005 @@ -180,7 +180,8 @@ créer car pour les méthodes **newSubTransaction** et **regenerateTransaction** il faut utiliser la méthode **getUniqueDate** du **TopiaTransactionFactory** - +On peut retrouver facilement le **TopiaContext** associé à un +**TopiaTransaction** grace a la methode **getContext(TopiaTransaction)** TopiaPersistenceStorage ======================= @@ -290,6 +291,15 @@ de l'objet si ce n'est pas déjà fait. Pour une modification on a pas besoin de lire l'objet et on peut faire la modification tout de suite. +Les events +========== + +Il y a 3 types d'event, ajout, modification, suppression. Un objet voulant +recevoir ses events doit implanter **TopiaEntityListener**. Il peut alors s'enregistrer soit sur un **TopiaPersistenceService**, soit sur un **TopiaContext** dans ce cas, il sera prevenu de toutes les modifications de tous les **TopiaPersistenceService**. + +Un **CategorisedListenerSet** est utilisé dans les contexts pour garder la trace des listeners, chaque **TopiaPersistenceService** est enregistre comme categorie avec la classe de l'objet gere par le **TopiaPersistenceService**. De cette facon durant toutes une transaction le context peut conserver tous les events et si l'on commit les faire suivre à son context pere en conservant bien la categorie a prevenir, ce qui est possible car la categorie est une classe et non pas une instance de **TopiaPersistenceService**, ce qui fait que tous les **CategorisedListenerSet** de tous les contexts ont les memes categories. Pour homogénéisé, le context qui est pere des autres categorie est lui aussi enregistrer avec sa classe. + +On utilise la classe du **TopiaEntity** et non pas du **TopiaPersistenceService**, car sinon la propagation a plus d'un niveau de transaction n'est pas possible, car on perdrait la categorie, alors que la il suffit de prendre une des entités de l'event pour retrouver la bonne catégorie. Distribution ============ Index: topia/doc/PersistenceImplantationTopia.rst diff -u topia/doc/PersistenceImplantationTopia.rst:1.1 topia/doc/PersistenceImplantationTopia.rst:1.2 --- topia/doc/PersistenceImplantationTopia.rst:1.1 Tue Jul 19 12:56:08 2005 +++ topia/doc/PersistenceImplantationTopia.rst Thu Aug 4 20:59:30 2005 @@ -24,3 +24,4 @@ le commit, mais prendre l'id de la transaction parente et l'utiliser pour les objets. +Lorsque la transaction parente est commiter ou rollbacker il faut aussi le faire sur les sous-transactions