Import/Export-Ajouter des entités

Un article de DocAstairs.

Sommaire

[modifier] Implémentation d'un nouveau format de fichier

[modifier] En import

[modifier] En export

1)Etendre la classe ExportFile

Pour celà, créer une classe ExportXxxx où Xxxx est le type de fichier (exemple: Csv, Astairs, Xml, etc.) Cette classe permettra l'implémentation de méthodes et d'attributs communs à tous les types gérés par ce format.

2)Etendre la classe ExportXxxx

Pour chacuns de types de données que doit gérer se format, implémenter une classe ExportXxxxYyyy où Yyyy est le type de données (exemple: Qcm, Qrc, Sondage, RessourcesTextes, etc.) Ces classes permettrons l'implémentation de méthodes et d'attibuts propres à chacun des types gérés par ce format. Plus précisément, ces classes possèdent une méthode write() spécifique.

Pour les classes ExportAstairsYyyy, la méthode write() à pour rôle d'insérer les données en BDD. L'utilisation des classes Yyyy apparait donc judicieuse car elles possèdent des méthodes insertToDB() chargées des insertions, tout en effecuant des vérifications.

3)Etendre la classe ExportFileFactory

Créer une classe ExportXxxxFactory où Xxxx est le type de fichier (exemple: Csv, Astairs, Xml, etc.) Cette classe(Design Pattern Factory -Fabrique-) permettra d'instancier les classes ExportXxxxYyyy spécifiques à tous les types gérés par ce format.

4)Etendre la classe ExportStruct

Pour celà, créer une classe ExportStructXxxx où Xxxx est le type de fichier (exemple: Csv, Astairs, Xml, etc.) Cette classe permettra de définir des éléments de structure (méthodes et attributs) communs à tous les types gérés par ce format.

5)Etendre la classe TransfertBuilder (TEMPORAIREMENT)

Pour celà, créer une classe TransfertBuilderXxxxZzzz où Xxxx est le type de fichier (exemple: Csv, Astairs, Xml, etc.) pour l'import et Zzzz le type de fichier pour l'export. Cette classe permettra de définir des éléments communs (méthodes, attributs,..) à tous les types gérés par l'import d'un format Xxxx vers l'export au format Zzzz.

NB: A l'avenir, lorsque la correlation ne sera plus "en dur", seule la classe TransfertBuilder suffira, et aucune classe fille ne devrait etre nécessaire.

6)Etendre la classe TransfertBuilderXxxxZzzz (TEMPORAIREMENT)

Pour celà, créer une classe TransfertBuilderXxxxZzzzYyyy où Yyyy est le type de données (exemple: Qcm, Qrc, Sondage, RessourcesTextes, etc.) Cette classe permettra de définir les éléments (méthodes et d'attibuts) propres à chacun des types pour l'import d'un format Xxxx vers l'export au format Zzzz. Il s'agit pour l'essentiel de spécifier la classe de Correlation appropriée.

NB: A l'avenir, lorsque la correlation ne sera plus "en dur", seule la classe TransfertBuilder suffira, et aucune classe fille ne devrait etre nécessaire.

7)Etendre la classe CorrelationStruct (TEMPORAIREMENT) Pour celà, créer une classe CorrelationStructXxxxZzzzYyyy où Yyyy est le type de données (exemple: Qcm, Qrc, Sondage, RessourcesTextes, etc.) Cette classe permettra de définir la structure de corrélation propre à chacun des types de données pour l'import d'un format Xxxx vers l'export au format Zzzz. Il s'agit pour l'essentiel de spécifier la correspondance entre les libbéllé des attributs en import et les libéllés des attributs en export.

NB: A l'avenir, la correlation sera créée dynamiquement par un formulaire et une classe "en dur" ne sera plus nécessaire pour l'établir.

[modifier] Implémentation d'un nouveau type de données

[modifier] En import

[modifier] En export

1)Etendre la classe ExportXxxx

Pour que le format Xxxx gère un nouveau type de données, implémenter une classe ExportXxxxYyyy où Yyyy est le type de données (exemple: Qcm, Qrc, Sondage, RessourcesTextes, etc.) Cette classes permettra l'implémentation de méthodes et d'attibuts propres à ce nouveau type.

2)Etendre la classe ExportStructXxxx

Pour celà, créer une classe ExportStructXxxxYyyy où Yyyy est le type de données (exemple: Qcm, Qrc, Sondage, RessourcesTextes, etc.) Cette classe permettra de définir la structure des données nécessaire à la création d'une entité d'un tel type.

Plus précisément, cette classe doit contenir un attribut $struct, tableau définissant les champs requis et une méthode getVarValues() qui retourne les valeurs requises pour un champs particulier. Dans ce cas où un champ doit posséder les valeurs particulières, cette méthode retourne un tableau ordonné avec les différentes valeurs possibles. Ce tableau sera utilisé par la suite pour convertir les valeurs lues par celles-ci.

3)Compléter les classes d'objets Yyyy

Les classes ExportStructXxxxYyyy servent à définir des structures de données pour les entitées Yyyy (Qcm, Src,...) propres à un format de fichier Xxxx. Dans le cas de l'export vers la plate-forme, il faut donc définir un ensemble de classes ExportStructAstairsYyyy. Or, à chacun des types de données Yyyy corresponds dans la libraire (BO/lib) une classe Yyyy.

De plus, ces classes permettent la création et l'insertion en base de telles entités.

Il parait donc judicieux d'utiliser ces classes Yyyy pour définir les structures dans les ExportStructXxxxYyyy et d'utiliser leurs méthodes pour insérer les données.

Ainsi, les classes ExportStructXxxxYyyy devront utiliser 2 méthodes implémentées dans chacunes des classes Yyyy:

  • getRequiredVars(): Retourne un tableau contenant les libéllés des attributs requis pour la création d'un objet Yyyy.
  • getVarValues($var_name): Retourne un tableau ordonné des différentes valeurs que peut prendre l'attribut $var_name. (NB:ce libéllé d'attribut doit etre présent dans le tableau retourné par la méthode getRequiredVars().