Exporter les sujets des DiveBooks en tant que Marques

Dans le passé, nous avons construit un grand nombre de DiveBooks avec des Marques et des DivePlans internes. Cela nous a permis de collecter l'ensemble de nos "vues" en un seul endroit (le fichier DBK).

Au fil du temps cependant, nous avons vu que le maintien de DiveBooks devenait un problème : le DBK a été inondé d'informations et changer quelque chose dans l'endroit A pourrait influencer la façon dont les choses fonctionnent dans l'endroit B. En outre, corrompre une "Marque" (sujet) dans un DiveBook pouvait entraîner une perte totale du DiveBook.

En conséquence , nous avions décidé de ne plus utiliser les DiveBooks et de travailler strictement avec des Marques et des Diveplans. Mais nous avions encore à maintenir les systèmes existants qui utilisaient les DiveBooks. Exporter toutes les "Marques" (sujets) d'un DiveBook n'est pas une tâche facile, en fait c'est beaucoup de travail. Il faut ouvrir le DiveBook et passer par chaque répertoire, ouvrir chaque sujet et l'enregistrer en tant que Marque dans un fichier.

C'est pourquoi il était nécessaire de créer une fonction permettant une exportation facile en balayant tous les répertoires et tous les sujets, et en exportant chaque sujet en tant que Marque dans un fichier.

Cela a été fait en utilisant DIAL avec le script suivant :

//connect to diveline
diveline.connect("localhost", "admin", [adminpass]);
//get the arguments
dbk_name = arg.get(1);
mrk_dir = arg.get(2);
console.writeln(dbk_name + " contains:");
//open divebook
divebook.open(divebook,dbk_name);
// get total area
area_total = divebook.area_count(divebook);
area_index = 1;
// loop through the area's
while(area_index<=area_total) {
area_name = divebook.area_name(divebook, area_index);
console.writeln(area_name);
//retrieve the amount op topics in this area
topic_total = divebook.topic_count(divebook,area_name);
topic_index = 1;
// loop through the topics in this area
while(topic_index<=topic_total) {
topic_name = divebook.topic_name(divebook, area_name,topic_index);
console.writeln("- " + topic_name);
// open this topic
divebook.open_topic(divebook,model,area_name,topic_name);
// and save it as a marker
marker.save(model,mrk_dir+area_name+"-"+topic_name+".mrk");
topic_index=topic_index+1;
}
area_index=area_index+1;
}

Pour utiliser ce script, vous avez besoin d'un serveur DiveLine, puisque c'est ainsi que DIAL contacte vos DiveBooks. Vous avez besoin d'une version de DIAL qui correspond à la version Diver de votre DiveBook (c'est à dire qu'une version 6.2 de DBK doit correspondre avec une version 6.2 de DIAL). Vous pouvez trouver le numéro de version en ouvrant le DBK avec un bloc-notes / éditeur de texte, ce numéro se trouve dans la partie HEAD du fichier.

Utilisez la commande suivante pour lancer le script :

java -jar D:\di-solution\dial.jar script.dial [path-to-divebook.dbk] [path-to-marker-dir]