CSV
Un article de DocAstairs.
Sommaire |
[modifier] Introduction
La réalisation de l'import CSV est la première étape du développement de ce module d'import/export. Il s'agit donc dans un premier temps d'une réalisation minimale qu'il convient de préciser.
Elle devra cependant s'inscrire au sein du développement du module complet, afin d'apporter un minimim de modifications de l'existant par la suite. Cette phase sera aussi l'occasion de relever les diverses problématiques n'ayant pu être traitées lors de la phase de conception initiale.
[modifier] Import
[modifier] Présentation
[modifier] But du module
Il ne s'agit pas ici de réaliser un module complet, mais un ensemble de scripts et de classes pouvant être utilisés tels quels par le module complet.
Ainsi, le but de ce développement est de permettre à l'équipe de production de créer des éléments de plate-forme à partir de fichiers CSV dont le format est imposé et clairement défini.
[modifier] Localisation
Ce premier développement devant être utilisé très ponctuelement par l'équipe de production uniquement, il devra être accessible d'un endroit qui lui est réservé:
Gestion des Ressources Administratives>>Utilitaires>>ImportCSV
Cette accès devra comporter une rescriction garantissant qu'il n'apparaitra pour les clients.
Les fichiers CSV seront copiés sur la plate-forme dans un répertoire spécifique, contenant un sous-répertoire par type d'entité à créer. Chacun des fichiers CSV correspondant à des entités d'un thème unique, cette organisation "temporaire" (qui sera différente de l'implémentation finale du module), permettra ainsi de connaitre le thème et la catégorie des données à importer.
[modifier] Réalisation
[modifier] Prérequis
Une condition est requise pour ce module:
- L'équipe de production doit disposer de fichiers CSV contenant l'ensemble des données à créer et respectant scrupuleusement les structures qu'elle à elle même définies.
[modifier] Cas d'utilisations
L'utilisation de cette partie 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/5/57/UseCaseImportCSV.jpg': No such file or directory. convert: missing an image filename `/usr/local/www/mediawiki/images/thumb/5/57/UseCaseImportCSV.jpg/600px-UseCaseImportCSV.jpg'. |
Ce shéma met en parallèle les actions propres à cette portion de module (à gauche) avec les actions du module complet (à droite).
- L'équipe de production convertit manuellement les fichiers excel au format CSV, en utilisant OpenOffice ou Excel.
- L'équipe de production copie manuellement les fichiers ainsi crées sur la plate-forme. Ces fichiers seront localisés dans des répertoires spécifiques à chacun des différents types de données à importer. (Rappel: 1 fichier == 1 type == 1 thème)
- L'équipe de production lance le script qui va traiter l'ensemble des fichiers CSV de la plate-forme. Chacun des fichiers contenu dans chacuns des repertoires de types sera traité indépendamment des autres. Si une erreur survient sur un fichier, seules la création des données qu'il contient sera annulée, et un message d'erreur sera affiché.
- La plate-forme fournit les structures de données de destination spécifiques à chacun des types de fichiers.
- La plate-forme fournit les structures de données sources spécifiques à chacun des types de fichiers.
- 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.
- La plate-forme crées les données et les référencie.
Rappels pour le module complet:
- 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.
- La plate-forme fournit les structures de données de destination spécifiques à chacun des types de fichiers.
- Le formateur upload son fichier. Un message d'erreur est affiché en cas d'erreur de téléchargement.
- 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.
- Le formateur établit une corrélation entre les structures detectées et corrélées.
- 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.
- 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/1/11/DiagrammeClassesImportCSV.jpg': No such file or directory. convert: missing an image filename `/usr/local/www/mediawiki/images/thumb/1/11/DiagrammeClassesImportCSV.jpg/600px-DiagrammeClassesImportCSV.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 l'attribut importStruct. Ici, en l'absence de correlation manuelle, la méthode retournera un importStruct "en dur".
- 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 valué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). Ici, en l'absence de correlation manuelle, la méthode retournera une correlationStruct "en dur".
- 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
Afin de simplifier au maximum les développements, les sctructures de données sources ont été imposées et sont donc statiques. Les différents types de données ont donné lieu à la création de modèles et une documentation indiquant leur utilisation à été élaborée.
Manuel utilisateur:
Media:ManuelUtilisateurImportExcelCSV.zip
Modèles OpenOfffice Calc:
Modèles Excel:
Modèles CSV: