Architecture Fudaa-Crue

Architecture technique de Fudaa-Crue

 

Le projet Fudaa-Crue root est découpé en deux parties :

- dodico : ce répertoire contient les objets qui gèrent la persistance des données (fichiers de type XML, texte ou binaire ainsi que les données métier EMH)

- fudaa : ce répertoire contient toute la gestion de l’IHM

 

  1. Description des packages de dodico

    1. Code java : src/main/java

 

org.fudaa.dodico.crue.io.dao : ce package gère la conversion des fichiers XML Crue 10 en objets métier (lors de la lecture des fichiers XML) ou des objets métier vers un fichier XML Crue 10. Pour cela, il y a des objets CrueDao* et CrueDaoStructure* qui vont permettre de stocker les données lues du fichier XML par XStream. Il y a également des objets CrueConverter* qui permettent la conversion des objets CrueDao* / CrueDaoStructure* en objets EMH et inversement.

A noter la classe CrueXmlReaderWriterImpl qui est le lecteur/écrivain des fichiers Crue 10. C’est cet objet qui fait le lien entre une classe CrueDaoStructure* et son converter associé. Lors de la lecture d’un fichier XML, une des méthodes readXML est appelée, qui lit d’abord le fichier XML et le transforme en objets DAO (par la méthode readDao) puis le converter est appelé pour transformer l’objet DAO en objets métier. Lors de l’écriture d’un fichier XML, une des méthodes writeXML est appelée qui appelle d’abord le converter qui va transformer les objets métier en objet DAO puis cet objet DAO sera écrit dans un fichier XML (par la méthode writeDao). Cet objet permet également la validation unitaire d’un fichier XML par sa XSD (ou grammaire) associée.

org.fudaa.dodico.crue.io : ce package contient des objets *FileFormat et *FileFormatFactory aussi bien pour Crue 9 que Crue 10.

Les *FileFormat permettent de définir les extensions autorisées pour les fichiers lus (fichiers XML, fichiers texte ou binaires). En Crue 10, il encapsule l’objet écrivain/lecteur (CrueXmlReaderWriterImpl) et ses opérations de lecture, écriture et validation unitaire des fichiers XML. Alors qu’en Crue 9, il définit seulement l’objet écrivain et l’objet lecteur mais les opérations de lecture et écriture sont définies dans la classe mère AbstractCrue9FileFormat.

Les *FileFormatFactory permettent de créer les *FileFormat pour chaque fichier.

org.fudaa.dodico.crue.io.neuf : Ce package contient tous les lecteurs et tous les écrivains utilisés pour Crue 9 (fichiers binaires FCB, STO et STR ou texte DC, DH écrits par Fortran).

org.fudaa.dodico.crue.io.common : ce package contient des éléments communs à Crue 9 et Crue 10, comme par exemple, la gestion des messages d’erreur (Messages), l’ensemble des fichiers à traiter dans Crue (CrueConstants) ou encore un converter qui traduit les objets de type enum en leur valeur littérale (EnumConverter).

org.fudaa.dodico.crue.metier.emh : contient tous les objets décrits dans le modèle objet et représentent toutes les données EMH (Entité de Modélisation Hydraulique) de Fudaa-Crue.

org.fudaa.dodico.crue.metier : objets qui manipulent des objets EMH.

CrueDataImpl permet de regrouper toutes les données récupérées lors de la lecture de différents fichiers.

CrueDate permet de gérer les dates/durées à la façon Crue (nombre de jours, d’heures, de minutes et de secondes).

Toutes les classes ManagerEMH* et EMH* permettent de stocker les données lues du fichier ETU pour ensuite pouvoir charger un scénario avec les fichiers de niveau scénario et ses modèles, qui eux-mêmes sont composés de fichiers de niveau modèle et de sous-modèles, qui eux-mêmes sont composés de fichiers de niveau sous-modèle.

org.fudaa.dodico.crue.metier.helper : package qui contient des objets qui permettent de centraliser des traitements métier qui sont répétés souvent (par exemple, retrouver une donnée emh dans une liste de données à partir d’un nom, créer une Loi…).

org.fudaa.dodico.crue.validation : package qui s’occupe de la validation globale d’un scénario. Ajout de préfixes aux noms des données EMH qui sont en mémoire (CruePrefix), validation globale de tous les fichiers XML chargés pour un scénario en concaténant tous les fichiers XML et en validant ce nouveau fichier XML avec une XSD globale qui permet la cohérence globale de tous les fichiers entre eux (ScenarioWriter et ValidateModeleScenario). Validation également des valeurs des données numériques écrites dans chaque XML qui doivent se trouver dans un certain rang de valeurs pour être valides (tous les autres objets du package)

com.memoire.fu : ce package définit la log Crue

org.fudaa.ctulu : package qui contient les objets gérant les messages de quatre types de sévérité : erreur fatale, erreur, warning, et information.

 

    1. Ressources : src/main/resources

 

org.fudaa.dodico.crue.io : package qui contient le fichier de tous les messages (associés à un code) de l’application Fudaa-Crue de la partie dodico (messages.properties).

org.fudaa.dodico.crue.validation : package qui contient le fichier détenant toutes les valeurs de validité / normalité des données numériques à valider (fichier texte de type csv : validation.txt).

xsd : package qui contient tous les fichiers de grammaire unitaires ainsi que le fichier XSD de validation globale (scenario-1.0.0.xsd). Tous les fichiers XML ont une partie commune (les attributs VersionCrue, Commentaire et Description) qui est validée par common-1.0.0.xsd. Ce fichier XSD est donc inclus dans tous les fichiers XSD. Il est utilisé également pour regrouper des types de données utilisées dans plusieurs autres XSD, comme, par exemple, les LoiDF et LoiFF.

 

    1. Tests : src/test/java

 

org.fudaa.dodico.crue.common : package qui définit la classe mère des tests JUnit.

org.fudaa.dodico.crue.io : package où chaque classe permet de lancer un ensemble de tests JUnit pour un fichier donné. Les tests unitaires réalisés sont la lecture avec vérification de certaines données lues, la lecture suivie de l’écriture des données lues dans un fichier temporaire. Pour les fichiers Crue 10, un test de lecture + écriture + lecture + vérification des données est également lancé ; Pour les fichiers Crue 9, les fonctionnalités « lecture Crue 9 + écriture Crue 10 » ou « lecture Crue 10 + écriture Crue 9 » sont également testées.

org.fudaa.dodico.crue.validation : package qui contient le test de validation globale d’un scénario et ceux qui permettent de valider les valeurs numériques des fichiers Crue 10.

 

  1. Description des packages de fudaa

    1. Code java : src/main/java

 

org.fudaa.fudaa.crue : package qui contient la classe de lancement de l’application Fudaa-Crue (Crue).

org.fudaa.fudaa.crue.explorer : package qui contient la classe qui gère la recherche des fichiers Crue (CrueExplorer).

 

org.fudaa.fudaa.crue.builder : package

org.fudaa.fudaa.crue.common : package

org.fudaa.fudaa.crue.projet : package qui contient la classe qui contient le contenu du fichier xml ETU lu et gère les scénarios, modèles et sous-modeles Crue au sein de l'application Fudaa (CrueProjet). Il contient également la classe qui sert au chargement d’un scénario à partir des fichiers paramétrés dans ETU (ScenarioLoader) et la classe qui sauvegarde un scénario en écrivant les fichiers Crue 9 ou Crue 10 selon le choix de l’utilisateur (ScenarioSaver).

 

org.fudaa.fudaa.crue.view : package

org.fudaa.fudaa.crue.test : package qui contient des tests pour l’IHM sur les fonctionnalités de lecture / écriture des fichiers et de validation XSD.

 

    1. Ressources : src/main/resources

 

org.fudaa.fudaa.crue.common : package qui contient le fichier de tous les messages (associés à un code) de l’application Fudaa-Crue de la partie fudaa (messages.properties), ainsi qu’une image apparaissant dans l’IHM.