L'objectif est de maintenir la liste des Analysis
non seulement lors de l'exécution d'eP-Back mais également d'une exécution sur l'autre. Ceci permet de faire un refresh light afin de ne lire que les nouvelles acquisitions ….. D'un point de vue techno, le choix d'XStream a été fait.
Plutot que de gérer le cache d'une liste, nous avons choisi de maintenir un cache sur les Analysis
elles-mêmes.
( En effet, le cache de la liste oblige à faire automatiquement et/ou manuellement des refresh de la liste relativement souvent : dès qu'une nouvelle acquisition a été réalisée sur l'instrument par exemple …. )
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.
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.
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é.
L'interface DataFormat n'est pas modifié, par contre les implémentations utilisent un IFactory. : 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éé.
Changement de configuration et mise a jour du cache
: 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 !!!
(Continuez vers la suite de la documentation ⇒ epbackanalysis)