User Tools

Site Tools


wiki:epims4_0m2:developer:epbackcache

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
wiki:epims4_0m2:developer:epbackcache [2008/08/13 17:29]
barthe
wiki:epims4_0m2:developer:epbackcache [2008/10/02 10:21] (current)
Line 1: Line 1:
 ===== Cache pour les objets Analysis ===== ===== Cache pour les objets Analysis =====
 +
  
  
Line 12: Line 13:
 Une **configuration** est une association instrument, donc type de format, et répertoire source (entre autres... voir chapitre [[epbackconfig]]). ​ Une **configuration** est une association instrument, donc type de format, et répertoire source (entre autres... voir chapitre [[epbackconfig]]). ​
 \\ \\
-Lors de l'​accès à une configuration donnée, le !DataFormat associé doit permettre d'​obtenir la liste des ''​Analysis''​ pour le répertoire source spécifié. Ce sont donc aux implémentations de !DataFormat (ou aux factory qu'ils utilisent ) de s'​assurer que les ''​Analysis''​ qu'ils référencent ne sont pas dans le cache avant de les créer effectivement. Pour cela, ils font appel à un gestionnaire de cache qui permet de récupérer les ''​Analysis''​ qui ont déjà été créées. Par conséquent,​ seules les ''​Analysis''​ n'​ayant jamais été accédées sont créées. ​+Lors de l'​accès à une configuration donnée, le DataFormat associé doit permettre d'​obtenir la liste des ''​Analysis''​ pour le répertoire source spécifié. Ce sont donc aux implémentations de DataFormat (ou aux factory qu'ils utilisent ) de s'​assurer que les ''​Analysis''​ qu'ils référencent ne sont pas dans le cache avant de les créer effectivement. Pour cela, ils font appel à un gestionnaire de cache qui permet de récupérer les ''​Analysis''​ qui ont déjà été créées. Par conséquent,​ seules les ''​Analysis''​ n'​ayant jamais été accédées sont créées. ​
  
 Le gestionnaire de cache enregistre les caractéristiques des ''​Analysis''​ de chaque configuration dans un fichier séparé. Si l'on souhaite un rafraîchissement complet, il suffit de supprimer le fichier cache associé à la configuration avant l'​ouverture d'​eP-Back. Le gestionnaire de cache enregistre les caractéristiques des ''​Analysis''​ de chaque configuration dans un fichier séparé. Si l'on souhaite un rafraîchissement complet, il suffit de supprimer le fichier cache associé à la configuration avant l'​ouverture d'​eP-Back.
  
-Le gestionnaire de cache (!CacheManager) gère une liste d'''​Analysis''​ pour chaque configuration. Lors du premier accès à une configurations,​ le !CacheManager crée son cache à partir du fichier correspondant à la configuration. Par la suite, il doit permettre une mise à jour et la sauvegarde dans le fichier cache de cette liste. La mise à jour comprend l'​ajout de nouvelles acquisitions mais également la suppression des acquisitions qui ont été supprimées physiquement ....  Il a été choisi de sauvegarder les changements dans le fichier "​cache"​ lors d'un changement de configuration et à la fin de l'​application. ​+Le gestionnaire de cache (CacheManager) gère une liste d'''​Analysis''​ pour chaque configuration. Lors du premier accès à une configurations,​ le CacheManager crée son cache à partir du fichier correspondant à la configuration. Par la suite, il doit permettre une mise à jour et la sauvegarde dans le fichier cache de cette liste. La mise à jour comprend l'​ajout de nouvelles acquisitions mais également la suppression des acquisitions qui ont été supprimées physiquement ....  Il a été choisi de sauvegarder les changements dans le fichier "​cache"​ lors d'un changement de configuration et à la fin de l'​application. ​ 
 + 
  
 ==== Implem ==== ==== Implem ====
Line 23: Line 26:
 ** Architecture globale de eP-Back** ** Architecture globale de eP-Back**
  
-Modification de l'​interface ''​Analysis''​ pour que toutes les informations soient présentes (la sérialisation/​désérialisation d'un objet ''​Analysis''​ permet donc de conserver l'​ensemble des infos nécessaire). Deux propriétés sont exclus lors de la sauvegarde des objets ''​Analysis''​ dans le fichier cache : le !DataFormat (présent dans les implémentations de ''​Analysis''​) et les fichiers associés. Néanmoins, les fichiers attachés sont recalculés une seule fois lors du premier accès à cette propriété.+Modification de l'​interface ''​Analysis''​ pour que toutes les informations soient présentes (la sérialisation/​désérialisation d'un objet ''​Analysis''​ permet donc de conserver l'​ensemble des infos nécessaire). Deux propriétés sont exclus lors de la sauvegarde des objets ''​Analysis''​ dans le fichier cache : le DataFormat (présent dans les implémentations de ''​Analysis''​) et les fichiers associés. Néanmoins, les fichiers attachés sont recalculés une seule fois lors du premier accès à cette propriété.
  
-L'​interface ​!DataFormat n'est pas modifié, par contre les implémentations utilisent un !IFactory. FIXME: A mettre au niveau de l'​interface ?! Une implémentation abstraite de !IFactory utilise, dans un premier temps, le cache pour récupérer les ''​Analysis''​ et fait ensuite appel si nécessaire à la méthode abstraite createAnalysis (spécifique au format des données). Le gestionnaire de cache gère une Map par configuration,​ cette Map étant référencée par le nom de la configuration. Chaque Map, contient une liste d'''​Analysis''​ par nom de fichier résultat d'​acquisition. Le nom de fichier résultat d'​acquisition est absolue. Dans le cas où le répertoire source associé à la configuration change de path, le fichier cache devra être recréé. ​+L'​interface DataFormat n'est pas modifié, par contre les implémentations utilisent un IFactory. FIXME: A mettre au niveau de l'​interface ?! Une implémentation abstraite de IFactory utilise, dans un premier temps, le cache pour récupérer les ''​Analysis''​ et fait ensuite appel si nécessaire à la méthode abstraite createAnalysis (spécifique au format des données). Le gestionnaire de cache gère une Map par configuration,​ cette Map étant référencée par le nom de la configuration. Chaque Map, contient une liste d'''​Analysis''​ par nom de fichier résultat d'​acquisition. Le nom de fichier résultat d'​acquisition est absolue. Dans le cas où le répertoire source associé à la configuration change de path, le fichier cache devra être recréé. ​
  
 {{ epb_cachemgmt.jpg }} {{ epb_cachemgmt.jpg }}
 ** Changement de configuration et mise a jour du cache ** ** Changement de configuration et mise a jour du cache **
  
-FIXME: Pour le noter quelque part pour le moment : Lors de la création des objets ''​Analysis''​ depuis le fichier cache, on utilise XStream. La propriété ​!DataFormat n'a pas été sauvegardé (positionnée comme transiant) et est par conséquent nulle ! Ce qui pose problème lors de l'​exécution de certaine méthode ! **Pour le moment, mais à revoir !!**; les implémentations d'''​Analysis''​ (nécessitant que cette propriété soit positionnée) doivent implémenter la méthode ''​setDataFormat''​. Lorsque les objets ''​Analysis''​ sont retournés par le !CacheManager,​ la classe ​!AbstractCacheFactory vérifie (en utilisant l'​introspection) que la méthode existe et positionne la valeur dans l'​affirmative. **Le problème** est que cette méthode est appelé à chaque fois que l'on accède à l'​analyse dans le cache et non pas QUE la première fois que l'​objet est créé à partir du fichier !!!+FIXME: Pour le noter quelque part pour le moment : Lors de la création des objets ''​Analysis''​ depuis le fichier cache, on utilise XStream. La propriété DataFormat n'a pas été sauvegardé (positionnée comme transiant) et est par conséquent nulle ! Ce qui pose problème lors de l'​exécution de certaine méthode ! **Pour le moment, mais à revoir !!**; les implémentations d'''​Analysis''​ (nécessitant que cette propriété soit positionnée) doivent implémenter la méthode ''​setDataFormat''​. Lorsque les objets ''​Analysis''​ sont retournés par le CacheManager,​ la classe AbstractCacheFactory vérifie (en utilisant l'​introspection) que la méthode existe et positionne la valeur dans l'​affirmative. **Le problème** est que cette méthode est appelé à chaque fois que l'on accède à l'​analyse dans le cache et non pas QUE la première fois que l'​objet est créé à partir du fichier !!!
  
 \\ \\
Line 37: Line 40:
 ---- ----
  
-**(Continuez vers la suite de la documentation => [[.:epBackCache]])**+**(Continuez vers la suite de la documentation => [[.:epbackanalysis]])**
wiki/epims4_0m2/developer/epbackcache.1218641361.txt.gz · Last modified: 2008/09/24 15:35 (external edit)