User Tools

Site Tools


wiki:epims4_1:developer:ep-pole

Guide d'implémentation d'eP-POLE

Introduction

eP-POLE est un module développé avec la technologie GWT (et l'extension graphique GWT-Ext). En ce qui concerne l'architecture générale du projet elle suit la structure habituelle d'un projet GWT. Pour plus de détails voir le chapitre Architecture dans le guide d'implémentation d'eP-Admin.

Structure des classes, fonctionnement

Package DTO

Un des “défaut” de GWT est que tout objet transitant entre le serveur et le client doit être sérialisable (voirici). Cela implique que tout les objets du domaine (d'ePims) qu'utilisera le client d'eP-POLE doivent implémenter l'interface IsSerializable. Ne voulant pas modifier les objets du domaine, nous avons créé dans eP-POLE un package DTO (Data Transfert Object) regroupant les copies de tout les objets utilisés par eP-POLE. Ces copies ont été modifiés afin de satisfaire aux besoins de GWT et de certains besoins annexes apparu lors du développement (et afin de les distinguer des originaux le suffixe “DTO” à été rajouté à leur nom)

Modifications apportées aux objets du domaine

ProtocolApplication & Plannings

Les classes ProtocolApplicationDTO, MassPlanningDTO et RobotPlanningDTO étendent désormais la classe ProcessStep. Cette classe n'a pas d'équivalent dans les objet du domaine (elle s'inspire de la classe ProcessStepBean anciennement présente dans eP-Web). Elle permet à eP-POLE de pouvoir traiter ensemble les planning et les protocol_application.

Divers
  • SampleDTO : Ajout de méthode clone() et copyFields(SampleDTO) afin de subvenir à des besoins côté client d'eP-POLE.
  • Plusieurs classe du domaine n'ont pas encore été transformé en DTO ce qui résulte en des champs parfois supprimé (en commentaire) dans certains classes :
    • Protocol
    • Robot
    • Instrument
    • (VirtualPlate & VirtualWell)

Conversion du domaine en DTO et inversement : classe DTOUtils

Les services d'eP-POLE fonctionnent avec les deux mondes : les objets du domaine provenant des services d'eP-Core et les objets DTO envoyés au client. Afin de faire les conversions une classe regroupant toutes les méthodes de conversions a été créé : DTOUtils. Ces méthodes se nomment comme suit :

  • [objet concerné]ConversionTo[monde vers lequel se fait la conversion : DTO ou Domain]
  • exemple : sampleConversionToDTO(Sample), runRobotConversionToDomain(RunRobotDTO)

Des méthodes acceptant des listes d'objet sont aussi présentes.

Se reporter aux javadoc des méthodes pour lesquelles il existe des particularités.

Architecture des classes "principales"

:!: Il y a pas mal de refactoring à faire côté serveur :!:

Le SampleCache et ses listes

La classe SampleCache garde en mémoire plusieurs “liste” permettant aux différents composants d'eP-POLE d'obtenir les données dont ils ont besoin sans avoir à faire de long traitement. Il y en a 4, et ce sont toutes des Map.

sampleMap

  • Type : Map<String, SampleDTO>
  • Clés (String) : Noms des échantillons
  • Valeurs (SampleDTO) : Les échantillons
  • Utilité : La liste complète des échantillons de l'étude en cours. Le nom des échantillons en clé permet de ne pas avoir à parcourir tout le temps la liste quand on sait quel échantillon on veut récupérer.

sampleMapByProcessStep

  • Type : Map<ProcessStep, List<SampleDTO»
  • Clés (ProcessStep) : L'ensemble des ProcessStep1) impliquant au moins un échantillon de l'étude en cours
  • Valeurs (List<SampleDTO>) : La liste des échantillon de l'étude impliqués dans le ProcessStep correspondant.
  • Utilité : Cette map permet d'avoir une liste des échantillons rangé par ProcessStep subit.

processStepMapBySample

  • Type : Map<SampleDTO, SortedSet<ProcessStep»
  • Clés (SampleDTO) : L'ensemble des échantillons de l'étude ayant subit au moins un ProcessStep (les échantillon venant d'être créé n'apparaissent pas dans cette liste).
  • Valeurs (SortedSet<ProcessStep>) : La liste ordonnée (sur la date grâce au ProcessStepDateComparator) de tout les processStep subit par l'échantillon correspondant.
  • Utilité : Permet d'avoir facilement une liste ordonnée de ce qu'a subit un échantillon durant sa vie au laboratoire.

sampleMapByLastProcessType

  • Type : Map<ProcessType, List<SampleDTO»
  • Clés (ProcessType) : La liste de tout les ProcessType2)
  • Valeurs (List<SampleDTO>) : La liste de tout les échantillon de l'étude dont le dernier ProcessStep subit est du type correspondant. Tout les échantillons n'ayant pas subit de ProcessStep sont inclus dans le type Nouveau.
  • Utilité : Permet la liste des échantillons de l'étude classés par type de process.

Organisation de l'interface

Ci-après est décrit l'organisation des panels formant l'interface d'eP-POLE (les noms sont ceux utilisés dans le code)

Pour faire le lien avec le schéma précédent montrant les classes “principales” d'eP-POLE :

  • CoreManager gère :
    • le fittingPanel,
    • le contentPanel,
    • le westPanel,
    • l'eastPanel.
  • SelectionPanelManager gère : tout ce qui est contenu dans le westPanel :
    • le selectionTabPanel,
    • le treeSelectPanel,
    • le processTypeSelectPanel (non montré sur le schéma)
    • le selectedSplPanel.
  • InformationPanelManager gère :
    • le samplePanel et tout ce qu'il contient :
    • sampleLowerPanel,
    • sampleUpperPanel,
    • sampleNamePanel,
    • sampleDetailsPanel,
    • processStepPanel (non montré sur le schéma)
    • genealogyPanel (non montré sur le schéma).
  • MesssagePanelManager gère :
    • le messagePanel
1)
Tout ProtocolApplication + MassPlanning + RobotPlanning
2)
Pool, Planning Masse, Nouveau, etc…
wiki/epims4_1/developer/ep-pole.txt · Last modified: 2009/10/29 16:23 (external edit)