JMRI: Adding A New Data Type
Author: Bob Jacobsen
Keywords: JMRI technical type add

# JMRI: Ajouter un Nouveau Type de Données

Cette page décrit les étapes pour ajouter un nouvelle donnée-types, par exemple, Aiguillage, à JMRI.

Elle utilise comme exemple l'ajout du type Rapport en Juillet 2004. Rapport est un nouveau type de NamededBean utilisé pour apporter des informations complexes en retour du réseau ferré .

Nous listons les fichiers qui sont modifiés et créés dans l' ordre dans lequel ils ont été fait dans ce cas, des ordres différents peuvent aussi travailler, et vous ne pourriez pas avoir besoin de faire tout cela.

Dans ce cas particulier, notre première mise en oeuvre est un seul système matériel (LocoNet). Cela influe sur la façon dont nous avons ordonné cela, et réduit la nécessité d'avoir des tests unitaires en place au début. En travaillant à travers la première implémentation de LocoNet , nous pourrions avoir une meilleure idée de savoir si l'interface Reporter proposée a fait ce qui était nécessaire. Si vous créez un nouveau type que plusieurs système auront besoin dans un premier temps, vous devez également créer des tests unitaires au début du processus pour encoder ce que vous pensez être le comportement commun.

. En général, les nouvelles classes et interfaces définies ci-dessous peuvent plus facilement être faites en copiant un modèle existant. Dans ce cas, on copie le fichier "* Turnout*" pour correspondre à un fichier "*Reporter*".

  ### Definir le Nouveau Type et son Gestionnaire

Reporter (Rapport)

  Cette interface définit les propriétés nécessaires. Il doit hériter de NamedBean, vous pouvez ajouter des accessoires nouveaux comme vous le souhaitez.

ReporterManager

  Cette interface fournit des méthodes pour obtenir un objet Rapport soit seulement à partir du nom du système (de préférence) ou avec des paramètres supplémentaires

  A ce stade, assurez-vous que vous pouvez compiler.

doc/technical/Names.shtml

  mise à jour de la discussion de la dénomination pour inclure la lettre-type dans votre nouveau type. Pendant que vous y êtes mettez à jour les pages de dénomination spécifiques au système en fonction des besoins. .

AbstractReporter

  Il s'agit d'une application de base.

AbstractReporterManager

  Application de base; choses qui est utile à toutes les applications spécifiques au système

  A ce stade, assurez-vous que vous pouvez compiler.

managers.ProxyReporterManager

  Ces traitements ayant plus d'un système fournissant des objets Rapport. Il prend soit aucune ou plusieurs réalisation ReporterManager, et et achemine les demandes d'accès au bon Rapport .

InstanceManager

  Il existe plusieurs façons historiques d'installer des choses dans l'InstanceManager. La procédure actuelle est d'utiliser des "proxies" pour permettre l'utilisation de multiples systèmes de réseaux ferrés, donc s'il vous plaît copier l'Aiguillage en tant que modèle.

  A ce stade, assurez-vous que vous pouvez compiler.

  ### Fournir la Première réalisation spécifique système

jmrix.loconet.LnReporterManager

  Cette classe écoute l'activité indiquant un nouveau Rapport spécifique-LocoNet , et appelle à en créer un si nécessaire. Autrement, elle fournit la bonne lettre spécifique au système ('L' par exemple), ce n'est juste qu'une une copie directe.

jmrix.loconet/LnReporter

  Convertit les message spécifiques dans le Rapport actions et en rapport. Tout le reste de la substance est juste pour mettre cela en place.

  A ce stade, assurez - vous que vous pouvez compiler. Rien ne se passera lorsque vous exécutez jusqu'à la prochaine étape.

jmrix.loconet.LnPortController

  ici (ou peut-être ailleurs dans un autre système), vous créer une instance de la classe ReporterManager correcte au démarrage du système et l'installer dans l' InstanceManager.

  ### Ajouter à la Charge des Scripts

jython/jmri_defaults.py

  Ajouter une nouvelle variable pour donner un accès facile au nouveau gestionnaire.

doc/technical/Jython.shtml

  Mise à jour de celle-ci pour se référer à la nouvelle variable Jython (Il peut y avoir d'autres pages web aussi!)

  A ce stade, vous devriez être en mesure de compiler et d'exécuter tester le nouveau code de la ligne de commande jython

  ### Ajouter un Nouveau Tableau d'Outils d'Accès (en option

jmrit.beantable.ReporterTableAction

  Créez un nouveau "tableau" pour regarder celui-ci en action.

  Dans ce cas particulier, le code a dû être un peu modifié (au lieu d'être simplement copié) parce qu'un Rapport n'a pas vraiment eu moyen de supporter les "clic pour changer"

jmrit/beantable/BeanTableBundle.properties

  Ajouter des chaînes pour les propriétés nouvelles que vous avez définies à l'étape précédente. Vous pouvez également traduire celles-ci dans les autres propriétés des fichiers lorsque cela est possible.

jmrit.ToolsMenu

  Ajoutez la nouvelle classe ReporterTableAction au menu.

jmrit/JmritToolsBundle.properties

  Ajouter des chaînes pour la nouvelle propriété que vous avez défini à l'étape précédente. Vous pouvez également traduire celle dans les autres propriétés des fichiers lorsque cela est possible.

  A ce stade, vous devriez être en mesure de compiler et d'exécuter le test du nouveau tableau.

  ### Donner de la Persistance aux Types Objets et au Gestionnaire

configxml.AbstractReporterManagerConfigXML

  Charger et enregistrer la date de configuration des applications ReporterManager

jmrix.loconet.configurexml.LnReporterManagerXml

  Charger et stocker l'info spécifique-système Gestionnaire Rapport LocoNet

xml/DTD/layout-config.dtd

  Ajouter de nouveaux éléments et attributs XML à la DTD

  ### Donner une Classe d'Affichage Icône Aappropriée (facultatif)

jmrit.display.ReporterIcon

  discussion

jmrit.display.configxml.ReporterIconXml

  discussion

xml/DTD/layout-config.dtd

  discussion

  ### Complèter la Documentation

ant javadoc

  Créer des Javadocs, et résoudre les éventuels nouveaux problèmes (ou anciens).