lundi 14 mai 2012

Développement plugin de A à Z pour HomeAutomate Pachube/Cosm Partie 2

     Passons maintenant à la seconde étape, l'écriture du code JAVA nous permettant de réaliser la remontée automatique. 


     1ère phase


     Pachube/Cosm mettent à disposition une API Java (JPachube) téléchargeable ici. Malheureusement, cette API ne fait pas partie du repository MAVEN, dommage donc pour les dépendances dans le pom. J'ai donc décidé de l'incorporer dans le plugin en tant que tel (Les sources étant téléchargeables).

On se retrouve donc avec un package Pachube. Au passage j'ai modifié quelques classes afin d'améliorer le parsing SAX qui parfois fait un peu des siennes.






     2ème phase:


Explication de la classe CosmManager. Première chose à faire implémenter l'interface IUnitAware qui forcera notre objet à implémenter la méthode :


public void onEvent(IUnit unit)

      Donc pour finir, à chaque fois qu'une Unité (THN132, ou autre) au sens large du terme est mise à jour (par un médiateur), le système va invoquer cette méthode dans tous les objets "Aware". Notre CosmManager recevra donc en paramètre à chaque Event et comme par magie l'unité mise à jour.



Voici le programme : 


Et voilà, le programme faire 130 lignes de codes (sans les getter/setter).
Light non ?

Quelques explications sur le fonctionnement :

       A chaque event reçu, si l'unité est concernée (On peut paramétrer les unités à Feeder), on stocke alors la valeur de l'unité (récupérée à l'aide de getValue()) dans une Map. On a pris soin 'd'overrider' la méthode doTraitement() propre à chaque Manager. Cette méthode ne servira qu'à ouvrir les vannes pour les remontées. doTraitement() est appelé tous les x milliseconds appelé le heartBeat.

Le manager a donc trés peu d'attributs

      - Une liste d'unité¨s dont on souhaite remonter l'information.
      - Une apiKey, fournie par Cosm.
      - Un booléen pour permettre de remonter ou non les infos à chq battement de coeur du manager.
      - Une liste d'unités ayant fait l'objet d'événements.

Vous noterez l'annotation Editable avant chaque attribut. Cela permettra au plugin Reflexion de proposer ces attributs en configuration, on y reviendra dans la partie 3.



Notre manager est prêt, il faut maintenant faire un export sous forme de jar et placer le résultat dans notre répertoire de plugins.


Aucun commentaire:

Enregistrer un commentaire