Fred Deniger
2004-04-28
L'organisation des fichiers et le nommage des entités CORBA/IDL.

dodicoOrganisation et Nommage

IDL

Organisation des dossiers

les fichiers idl doivent être placés dans un des 3 sous-répertoires de dodico/idl. Voici la description des sous-répertoires:

DossierCommentaires
generalRassemble les modules de base utiles à tous les autres modules. Les modifications dans ce dossier sont rares.
metierLes modules métiers. Ces modules décrivent un domaine et sont indépendants des codes de calculs.
codeLes interfaces de communications des codes de calcul sont écrits dans ce dossier. Ces modules sont composés des structures de données et des 3 interfaces ( IParametres, IResultats et ICalcul) utiles à l'utilisation du code.

Les noms des fichiers idl sont toujours en minuscules. Ils doivent être simples,expressifs et tous différents... Pour les codes de calcul, ils reprennent le nom du code. Le module principal du fichier idl doit reprendre le nom du fichier.

Préfixes des entités

Toutes les entités idl vont générer des fichiers java dans le dossier build/java_genere. Ces fichiers doivent être compilés dans le package org.fudaa.dodico.corba. Voici une liste des préfixes de chaque entité utilisable dans les fichiers idl. La colonne "exemple" illustre la correspondance entre les entités IDL et leur utilisation dans le langage java.

PréfixeSignificationCorbaJavaExemplesCommentaires
Liste (énumeration)enum Classe contenant un tableau statique des valeurs de l'énumération.

idl:

enum LGroupeNavireType
{
  PASSAGER,
  FREYCINET,
  PLAISANCIER,
  CONVOI_POUSSE,
  PERSONNALISE
};
  

java :

LGroupeNavireType.PASSAGER
Liste de valeurs alternatives
SStructurestructClasse finale donnant accès aux données de la structure.

idl:

struct SPoint
{
  reel   x;
  reel   y;
  reel   z;
};
  

java :

SPoint p=newSPoint();
p.x=5;
p.y=6;
p.z=7;

Une structure permettant d'organiser les données.

VVecteursequencetableau 1 dimension

idl:

typedefsequence<SPoint> VSPoint;

struct SPolyligne
{
  VSPoint points;
};

java (création d'une polyligne):

SPoint[] ligne=new SPoint[2];
ligne[0]=p0;
ligne[1]=p1;
SPolyligne poly=newSPolyligne();
poly.points=ligne;

Le nom est trompeur: les données ne sont pas gérées comme dans un vecteur. Vous devez utiliser une ICollection ou un ITableau pour manipuler des tableaux dynamiquement.

IInterfaceinterfaceinterface 

idl:

interface INavireType :iobjet
{  attribute chaine type;
  attribute LGroupeNavireType groupeNavire;
  attribute reel    longueur;
  attribute reel    largeur;
};
    

java :

INavireType navire=
  CDodico.findUsine().creeNavireType();
navire.longueur(5);
navire.largueur(6);
navire.type("passagerV1");
navire.groupeNavire(LGroupeNavireType.PASSAGER);

L'interface générée à partir de l'idl doit être implantée en java.

Entête type

Vous trouverez ci-dessous une entête type pour les fichiers idl. L'exemple est pris pour le fichier geometrie.idl du dossier general.

/** * @file         geometrie.idl * @creation     1998-02-18 * @modification $Date: 2004/05/05 12:36:03 $ * @license      GNU General Public License 2 * @copyright    (c)1998-2001 CETMEF 2 bd Gambetta F-60231 Compiegne * @mail         fudaa-devel@lists.sourceforge.net */
Seules les lignes @file et @creation seront modifiées.
#ifndef _GEOMETRIE_IDL
#define _GEOMETRIE_IDL
Cette commande C est utilisée pour éviter de redéfinir inutilement la méme entité. Il suffit d'adapter le terme _GEOMETRIE_IDL à votre cas.
#include "general/mathematiques.idl"
#include "general/collection.idl"
les commandes #include permettent d'utiliser les entités définies dans d'autres fichiers ( mathématiques.idl et collection.idl dans ce cas).
/** * @version      $Id: nommage.xml,v 1.2 2004/05/05 12:36:03 deniger Exp $ * @author       Desnoix Guillaume  */
La ligne @version sera remplie automatiquement par CVS. Il reste à remplir la ligne @author et à ajouter d'éventuels commentaires.
module geometrie
{
Le début du module.

Fichiers Java

Dossiers et fichiers

Les fichiers java se trouvent tous dans le répertoire de base dodico/src. Les dossiers de chaque projet doit correspondre au module idl correspondant. Si vous créez un module dans idl/code/exemple.idl, le code d'implantation se trouvera dans le dossier src/org/fudaa/dodico/exemple/.

Préfixes des fichiers

En général, les classes créées sont des implantations d'interfaces idl et sont des classes déléguées d'où le préfixe D. Pour l'intégration d'un code de calcul, 3 classes seront créées: DParametresExemple.java, DCalculExemple.java et DResultatsExemple.java.

!!! Seule la première lettre de exemple doit être en majuscule.

Pour les objets métiers, il n'y a pas de préfixe à utiliser. Les noms des fichiers doivent être compréhensibles.

Les classes "utilitaires" du dossier objet, commençant par C, sont très rarement modifiées.

L'usine

L'usine (general/usine.idl et usine/DUsine.java) est générée à partir des fichiers idl (en partie) et des fichiers java. Seules les classes java publiques, non abstraites et ayant un constructeur publique sans argument seront ajoutées à l'usine.

!!!Vous devez toujours utiliser l'usine pour créer des objets corba

Afin de faciliter la génération, quelques règles doivent être suivies. Les déclarations de classe et de constructeur doivent tenir sur une seule ligne (cf l'exemple).

!!!Ne pas écrire ( ces lignes seront mal interprétées ):

publicclass
DTache

!!!Utiliser l'écriture suivante:

publicclass DTache

Intégration d'un code de calcul

Pourl'intégration d'un code de calcul monCode, voici les noms que vous devrez utiliser:

  • -Créer le fichier idl/exemple/exemple.idl,
  • -Dans ce fichier: créer le module exemple et les structures nécessaires,
  • -Ecrire également les 3 interfaces IParametresExemple, ICalculExemple et IResultatExemple.
  • -L'implantation java: Créer le dossier src/org/fudaa/dodico/exemple/.
  • -Dans ce dossier: remplir les 3 fichiers DParametresExemple,DCalculExemple et DResultatsExemple.