Bonjour Pierre,
Finalement, je propose de renommer les "super-appareils" en "claviers", avec des boutons, car c'est vraiment à ça que ça correspond.
Pour un aiguillage simple, un clavier à 2 boutons (on ne gagne rien)
Pour une TJD, un clavier à 4 boutons (on ne gagne rien)
Pour une TJS, un clavier à 3 boutons (on gagne déjà un bouton)
Pour une bretelle double, on a un clavier à 3 boutons (on gagne 7 boutons).
Il y a, en effet, 5 appareils (4 aiguillages et une traversée) qui sont, chacun, à 2 boutons, soit 10 boutons.
Et, en combinaison de boutons, on a 2^5 = 32 combinaisons dont seulement 3 sont utiles !
Et j'insiste bien : dans la bretelle double, il y a bien les 7 zones (une par appareil + une section en haut et une section en bas).
Pour l'ancien "SU19", appelé maintenant "CLV19", pour "Clavier 19", on a 4 boutons.
Comme il y a 3 appareils à 2 boutons, on gagne 2 boutons, mais on passe de 2^3 = 8 possibilités à 4 seulement.
-----------------------------------------------------------------------------------------------------------------------------------------
Je vais maintenant expliquer, dans le détail, ce que j'ai compris de ton programme.
Tu utilises HashMap, ce qui permet de gérer des valeurs nulles.
On démarre dans le simple avec des zones qui ne gèrent que des signaux, pairs et impairs.
On lit l'objet "json", globalement.
On définit l'objet "zones", l'une des clés. Puis les autres objets (signaux, …).
Si j'ai bien compris, on devra citer tous les objets dans le JSON car HashMap n'accepte qu'une clé nulle. Mais leur valeur pourra être nulle.
Dit autrement, je devrai avoir une clé "itinéraire", même si je ne les définis pas. Cela explique peut-être pourquoi ça plantait.
Puis tu définis la HashMap "tableZones".
Si j'ai bien compris, la clé est une variable de type String, et la valeur est un objet "zone".
Puis tu fais une boucle forall. Après, la syntaxe est plus floue…
Tu balaie toutes les clés des zones en mettant en String le nom des zones ?
Le reste de la boucle est clair :
On crée une nouvelle zone.
On ajoute à TableZones un couple (z, zone), z étant une String, celle du balayage, et une zone vide en valeur.
Pareil pour TableSignaux avec un couple (z, signal).
Démarre la phase 2.
On rebalaie toutes les zones.
Là, j'ai encore un problème de syntaxe avec getString("signI", null). Je ne vois pas d'où sort le null.
Après, c'est clair : tu définis la zone, fonction de z, et tu remplis signalI et signalP
C'est une bonne idée d'avoir démarré par une zone et les signaux, car il n'y a que des objets. Quand on arrivera aux ArrayList, ça va être plus coton.
Merci Pierre
Denis
