Cette page donne les grandes lignes, à ceux qui veulent se lancer dans l'écriture de rapports (scripts) pour GenJ, à savoir :
Un rapport GenJ est un Java-type qui étend le type abstrait genj.report.Report. Écrire votre propre fonction commence par définir votre propre classe dans un fichier source qui sera placé dans le sous-répertoire « reports » (son nom doit débuter avec Report*).
Supposons que nous voulions écrire un rapport test nommé « Test ». D'abord, créons un fichier texte appelé ReportTest.java dans ./reports. Ensuite compilons-le en lançant le script de compilation dans le même répertoire : rcompile.*(bat, sh, cmd). Ce script lance javac (le compilateur java). Le résultat final est un fichier appelé ReportTest.class que GenJ peut charger et exécuter lorsqu'il sera sélectionné dans la Visualisation des Rapports.
Regardons le fichier exemple ReportTest.java. Il contient une définition de classe publique qui est conforme à la finalité du Rapport (extension de Rapport). Une partie de cette finalité est d'implanter un public void start(Object context) qui est le point d'entrée dans le Rapport. Nous pouvons utiliser toutes les méthodes fournies par le paquetage Report - (ici nous utilisons simplement la méthode « println »). println() envoie du texte dans un élément graphique (un "widget") que l'utilisateur peut voir quand il exécute le rapport.
Maintenant, nous voulons êtres sûrs que ce rapport
s'intègre parfaitement dans la Visualisation
des Rapports avec son nom, des informations de base, la
référence à l'auteur, son numéro de
version. Pour arriver à cela, nous créons un fichier
ReportTest.properties dans
le même répertoire et le remplissons avec l'information
nécessaire, ce qui va donner ceci :
Le rapport apparaît correctement maintenant mais nous devons
ajouter quelque chose au démarrage pour qu'il soit utilisable
par n'importe quel utilisateur. Par défaut, les rapports
peuvent être lancés uniquement dans un contexte Gedcom -
ceci implique que l'argument de démarrage () doit
être une instance du type Java Gedcom. Nous le permettons
avec context intanceofGedcom.
Une utilisation simple serait de rapporter le nombre d'individus dans
l'objet Gedcom. Nous le faisons en modifiant la méthode de
départ ainsi :
L'API pour genj.report Report et genj.gedcom.Gedcom GenJ contient plusieurs méthodes pour accéder et présenter l'information existante (voir les Javadocs GenJ pour en savoir plus).
Dans le but de permettre son internationalisation, votre rapport
NE doit PAS imprimer des chaînes fixes directement. Au lieu de
cela, il doit utiliser un fichier de propriétés pour
définir les chaînes à imprimer, et ensuite les
obtenir à partir de ce fichier. Ainsi, le ficher de
propriétés pourra être traduit dans d'autres
langages. Par exemple,
n'écrivez pas
cela : println("Birth Date is");
Faites plutôt :
Chaque rapport a un choix d'options, que vous pouvez facilement
utiliser, en créant des variables de classes publiques dans
votre classe de rapport et des propriétés
dans votre fichier de propriétés. Par exemple, laissez
votre rapport générer du texte par défaut, mais
aussi la possibilité de créer de l'HTML, et vous
permettrez aux utilisateurs de préciser eux-mêmes
ce qu'ils veulent. Commencez en créant une nouvelle variable
publique dans votre classe de rapport java :
Pour créer un menu déroulant avec plusieurs choix, utilisez les variables publiques :
Tout le code java dans le répertoire des rapports est compilé par le script de compilation, et tout est chargé dans GenJ. Ainsi, si vous souhaitez utiliser d'autres classes dans votre rapport, vous avez juste à copier les fichiers java ou les fichiers de classes dans votre rapport, et ils seront chargés en attendant que vous les utilisiez.
Par exemple, si vous souhaitez utiliser une classe DMSoundex, placez juste le fichier DMSoundex.java dans le répertoire des rapports et lancez rcompile. Il sera alors disponible pour vous, mais n'apparaîtra pas comme un rapport, car il n'est pas une sous-classe de genj.report.Report.
Les objets qui stockent l'information depuis le fichier GEDCOM possèdent des méthodes pour accéder aux noms, dates, enfants et parents (mais pas aussi nombreuses que vous pourriez le souhaiter). Quelques exemples figurent ci-dessous :
Beaucoup de données dans un fichier GEDCOM sont disponibles à partir de tags, plutôt que par des méthodes ou des objets. Par exemple, pour obtenir des informations sur la naturalisation d'une personne, vous n'avez pas à écrire ceci: indi.getNaturalization(). A la place, vous devriez écrire ceci :
Pour utiliser ces chaînes TagPath, vous avez besoin de
connaître quels codes de quatre lettres font partie du
standard GEDCOM. voici deux liens avec plus d'information pour
vous aider :
http://www.math.clemson.edu/~rsimms/genealogy/ll/gedcom55.pdf
http://www.gendex.com/gedcom55/55gcappa.htm
Voci un tableau memento des tags les plus communs :
Haut niveau : INDI (individu), FAM (Famille)
Evénements : BIRT (Naissance), DEAT (Décès),
IMMI (Immigration),NATU (Naturalisation), BAPT (Baptême)
Autres : CHIL (Enfant), FAMC (Famille de l'enfant), HUSB (Epoux),
WIFE (Epouse)
Composants: ADDR (adresse), DATE (date), NOTE (Note), PLAC (lieu)
La "Fenêtre d'Edition" dans sa fonction Editeur Gedcom (à l'inverse de l'Editeur Standard), montre exactement quels tags ont des données pour quelles entités, et c'est un bon moyen pour comprendre la structure et les éléments de GEDCOM.
Vous pouvez examiner le code source du rapports des Evenements pour voir comment ces Tags sont utilisés. Aussi, vous pouvez examiner le fichier GEDCOM lui-même pour voir quels tags sont des sous-tags d'autres tags.