Dim 25/03/2012 - Actualités

Xavier
Administrateur du site
Messages : 817
Enregistré le : mer. 22 juin 2011 18:25

Dim 25/03/2012 - Actualités

Message non lu par Xavier »

Dim 25/03/2012 - Actualités


18:45

L'export de données au format XML fonctionne enfin ! :D

Après m'être cassé les dents pendant trois heures à boucler sur la liste des dossiers (affichée en hiérarchie mais stockée à plat), tenter d'analyser récursivement les dossiers parents pour savoir s'ils étaient déjà exportés, et m'appercevoir que je créais des objets orphelins, une approche radicalement différente a été décidée.

La boucle principale se fait désormais sur la copie des données et non plus sur la liste des dossiers affichés dans le ListView. Cela me donne accès à la récursivité. L'accès de la donnée à L'Item de la liste est assuré par le double lien mis en place entre la liste des dossiers et les objets :

Code : Tout sélectionner

			// Double lien
			Tool_Item.Data := Tool_Data;
			Tool_Data.Tag := Integer(Tool_Item);
Ainsi donc, pour chaque dossier :
  • Une analyse d'exportabilité est faite : si l'Item associé est coché, le dossier sera exporté avec ses données. Si l'Item n'est pas coché, l'analyse est lancée en récursif sur ses enfants dossiers jusqu'à ce que l'un soit exportable.
  • Si le dossier est exportable, une copie est réalisée. Une boucle récursive sur ses enfants permet d'ajouter les enfants à leur parent en permettant de ne jamais perdre le lien parental.
Au final, l'export XML travaille avec trois arbres de données :
  • L'arbre des données réelles dont l'ancêtre est XV_RootData.
  • L'arbre des données locales LV_ExportData, créé par duplication récursive de XV_RootData à l'ouverture de l'outil. Travailler avec une copie locale des données permet l'indépendance par rapport aux autres outils ouverts qui peuvent donc évoluer sans impacter l'export. Il est détruit lors de la fermeture.
  • Et enfin, l'arbre des données d'export reconstruit à partir des données locales selon l'algorithme décrit plus haut. Cet arbre d'export est construit par duplication sélective lors de l'export et est ensuite immédiatement détruit après avoir été écrit sur disque.
Denis
Messages : 180
Enregistré le : jeu. 23 juin 2011 09:21

Re: Dim 25/03/2012 - Actualités

Message non lu par Denis »

Je n'ai compris que la première ligne de ton laïus. C'est l’essentiel, hein ?
Répondre