Import/Export

Un article de DocAstairs.

Sommaire

[modifier] Introduction

D'une manière générale, la réalisation du module d'import-export doit fonctionner à l'identique pour l'import et l'export quelque soit le sens. C'est à dire que l'interface unique doit permettre un choix destination/source ou la destination et la source peuvent être :

  • Fichier/Plate-fome (import)
  • Plate-forme/fichier (export)
  • Fichier/Fichier (conversion ou copie)
  • Plate-forme/Plate-forme (copie)

Cela quelque soit le type de fichier (CSV, Excel, XML, ...)

Celà permettra d'ajuster la réalisation des développemments aux besoins clients et de réaliser par de la même la copie, qui reste à implémenter sur Astairs v2.

[modifier] Import

[modifier] Présentation

[modifier] But du module

Ce module doit permettre à un formateur de créer des éléments de plate-forme à partir de fichiers formatés de formats quelquonque parmis ceux supportés par la plate-forme (CSV, XML, Excel,...).

[modifier] Localisation

Compte-tenu du fait que le module sert à injecter des données dans la plate-forme, il devrait être accessible à parti du gestionnaire de contenu. Celui-ci permettant en plus de selectionner thème et type de données.

Ce module pouvant servir à l'import de tout type de données, dans la limite des prérequis, il doit être suffisament modulaire pour etre utilisé dans des modules autres que le gestionnaire de contenus.

[modifier] Réalisation

[modifier] Prérequis

Deux conditions sont requises pour ce module:

  1. La plate-forme doit disposer d'une structure de données requises et facultatives pour chacun des éléments de plate-forme à importer et pour chacuns des types.
  2. Le formateur doit disposer d'un fichier contenant l'ensemble des données requises. Ce fichier devra être structuré et d'un type supporté par la plate-forme.

[modifier] Cas d'utilisations

L'utilisation du module peut se faire ainsi:

Erreur lors de la création de la miniature : convert: unable to open image `/usr/local/www/mediawiki/images/0/02/UseCaseImport.jpg': No such file or directory.
convert: missing an image filename `/usr/local/www/mediawiki/images/thumb/0/02/UseCaseImport.jpg/600px-UseCaseImport.jpg'.


  1. Le formateur se rend dans le gestionnaire de contenus, en choisissant un thème et une catégorie. La catégorie permettant de déterminer le type des données qu'il souhaite importer et le thème permettant leur référencement sur la plate-forme.
  2. La plate-forme fournit les structures de données de destination spécifiques à chacun des types de fichiers.
  3. Le formateur upload son fichier. Un message d'erreur est affiché en cas d'erreur de téléchargement.
  4. La plate-forme analyse ce fichier, detecte une structure de données, et l'affiche avec la structure de données attendue. Un message d'erreur est affiché si le fichier n'a pas de structure cohérente.
  5. Le formateur établit une corrélation entre les structures detectées et corrélées.
  6. La plate-forme vérifie la corrélation par la vérification des données du fichier.Un message d'erreur est affiché en cas de données non valide.
  7. La plate-forme crées les données et les référence.

[modifier] Diagramme de classes

Compte tenu de ces besoins fonctionnels, un diagramme de classes en découle:

Erreur lors de la création de la miniature : convert: unable to open image `/usr/local/www/mediawiki/images/3/3f/DiagrammeClassesImport.jpg': No such file or directory.
convert: missing an image filename `/usr/local/www/mediawiki/images/thumb/3/3f/DiagrammeClassesImport.jpg/600px-DiagrammeClassesImport.jpg'.


[modifier] Commentaires

[modifier] ExportFileFactory:

Fabrique d'objets implémentant la classe abstraite ExportFile

[modifier] ImportFileFactory:

Fabrique d'objets implémentant la classe abstraite ImportFile.

[modifier] ExportFile:

Classe abstraite indiquant les méthodes que doivent implémenter les objets d'export.

  • write(): Ecrit l'ensemble des lignes et des colonnes nécessaire à la création d'une et une seule entité. Le prochain appel à cette méthode écrit l'ensemble suivant.
[modifier] ImportFile:

Classe abstraite indiquant les méthodes que doivent implémenter les objets d'import.

  • importStruct : structure de données crée par la méthode analyse().
  • importFile(dataFile): Constructeur de la classe. Initalise le fichier traité par l'objet.
  • analyse():importStruct  : méthode dont le role est de valuer dynamiquement l'attribut importStruct.
  • parse(): bool : Lecture du dataFile vers le format intermédiaire.
  • read(): Lit l'ensemble de lignes et de colonnes nécessaire à la création d'une et une seule entité. Le prochain appel à cette méthode lit l'ensemble suivant.
[modifier] ExportXXXXX:

Classe concrète implémentant la classe ExportFile.

  • exportStruct: structure prédeterminée et invariante, spécifique au type du fichier et imposée par Astairs.
[modifier] ImportXXXXX:

Classe concrète implémentant la classe importFile.

  • importStruct: structure de données valée par la méthode analyse().
[modifier] TransfertBuilder:

Cet objet permet de créer des données exportFile(fichier d'export) à partir d'un importFile (fichier d'import), en utilisant une correlationStruct (structure de correlation).

  • setImportFile(importFile): Affecte l'ImportFile.
  • setExportFile(exportFile): Affecte l'ExportFile.
  • correlate():correlationStruct : Affecte la correlationStruct (structure de correlation).Les données néssaires à la correlation sont récupérées à partir d'un formulaire.
  • verify(): Vérifie la cohérence entre la correlationStruct (structure de correlation) et le dataFile (données du fichier d'import (ImportFile) ) Types des données, valeurs obligatoires,...
  • create(): Utilise les données de l'ImportFile (dataFile) pour créer les données de l'ExportFile.
  • reference(theme): Enregistre les données crées dans un Thème.

[modifier] Points remarquables

Le transfert de données d'un type de fichier vers un autre implique l'utilisation d'une structure intermédiaire. Cette structure pouvant être de format quelquonque, XML, CSV, tableaux ou classes PHP.

Le choix de ce format importe peu si ce n'est qu'il doit fournir de bonnes performances, en termes de simplicité d'utilisation et de rapidité. A priori, l'utilisation de tableaux PHP est la solution la plus souple et la plus simple.

[modifier] Export


[modifier] Informations spécifiques

CSV

XML

Word

Excel

SCORM

PDF

etc...