VIII. Implémentation de la couche [métier] du serveur▲
VIII-A. Le projet Eclipse▲
- en [1] le projet Eclipse est un projet Maven [2] ;
- en [3], les dépendances Maven. On remarque la dépendance sur les deux projets précédents [domotique-entities] et [server-dao] ;
- en [4], le code source de la couche [métier].
VIII-B. Les dépendances Maven▲
Le fichier [pom.xml] du projet Maven est le suivant :
- lignes 5-8 : l'identité Maven du projet ;
- lignes 18-22 : il n'y a qu'une dépendance, celle sur le projet [server-dao] de la couche [DAO]. Les autres dépendances en découlent en cascade.
VIII-C. Le code▲
L'interface [] de la couche [metier] est la suivante :
- ligne 10 : pour lire la valeur d'une pin d'un Arduino :
- idCommande : identifiant de la commande - une chaîne de caractères quelconque qui permettra de retrouver la réponse dans des logs. La réponse reprend en effet l'identifiant de la commande,
- idArduino : l'identifiant de l'Arduino à qui est destinée la commande,
- pin : le n° de la pin à lire,
- mode : le mode de lecture : " a " pour analogique, " b " pour binaire ;
- ligne 12 : pour écrire une valeur sur la pin d'un Arduino :
- idCommande : identifiant de la commande,
- idArduino : l'identifiant de l'Arduino à qui est destinée la commande,
- pin : le n° de la pin à écrire,
- mode : le mode d'écriture : " a " pour analogique, " b " pour binaire,
- val : la valeur à écrire sur la pin ;
- ligne 14 : pour faire clignoter une led d'un Arduino :
- idCommande : identifiant de la commande,
- idArduino : l'identifiant de l'Arduino à qui est destinée la commande,
- pin : n° de la pin à laquelle est reliée la led,
- millis : durée en millisecondes d'un clignotement,
- nbIter : le nombre de clignotements à opérer ;
- lignes 8, 16, 18 : correspondent aux méthodes de mêmes noms dans la couche [DAO].
: écrire la classe [Metier] qui implémente l'interface [IMetier]. On lira auparavant les informations ci-dessous.
Pour les différentes méthodes, les chaînes JSON à envoyer à l'Arduino sont les suivantes :
Méthode |
commande JSON envoyée à l'Arduino |
Signification |
pinRead |
{"id":"0","parametres":{"pin":"3","mod":"b"},"action":"pr"} |
lire (action) la pin 3 (pin) en mode binaire (mod) |
pinWrite |
{"id":"0","parametres":{"val":"200","pin":"8","mod":"a"},"action":"pw"} |
écrire (action) la valeur 200 (val) sur la pin 8 (pin) en mode analogique (mod) |
faireClignoter |
{"id":"1","parametres":{"nb":"100","dur":"200","pin":"8"},"action":"cl"} |
faire clignoter (action) la pin 8 (pin) 100 fois (nb) avec une période de 200 ms (dur) |
L'objet [Commande] correspondant à la chaîne JSON de la méthode [pinRead] de l'exemple ci-dessus est le suivant :
Champ |
JSON |
String id |
"id":"0" |
String action |
"action":"pr" |
Map<String,String> parametres |
"parametres":{"pin":"3","mod":"b"} |
On respectera les contraintes suivantes :
Méthode |
|
pinRead |
|
pinWrite |
|
faireClignoter |
|
Si une contrainte n'est pas vérifiée, la méthode lancera une exception de type [DomotiqueException].
VIII-D. Tests de la couche [métier]▲
Dans le dossier [support] du TP, vous trouverez un projet Eclipse qui va vous permettre de tester les différents éléments du serveur :
- en [1] : le projet console de tests ;
- en [2] : les classes de test de la couche [métier].
Examinons le programme [Clignoter] qui fait clignoter une led :
- ligne 9 : le programme se lance avec trois arguments. Ceux-ci sont expliqués ligne 11 ;
- lignes 11-63 : la validité des trois arguments est vérifiée ;
- ligne 66 : la couche [métier] est instanciée à l'aide du fichier de configuration [metierContext.xml] suivant :
- lignes 6-20 : on retrouve la configuration de la couche [DAO] déjà expliquée ;
- lignes 22-24 : configuration de la couche [métier]. Celle-ci a une référence sur la couche [DAO] (ligne 23) ;
Retour au code du test :
- ligne 69 : la liste des Arduinos connectés est demandée à la couche [métier] ;
- lignes 70-75 : si celle-ci est vide, elle est redemandée toutes les secondes ;
- lignes 77-79 : on envoie la commande de clignotement à tous les Arduinos connectés à l'aide de la méthode [faireClignoter] de la couche [métier].
Les autres tests ont un code analogue.
Travail à faire : Assurez-vous que votre couche [métier] passe tous les tests.
Note : Pour passer des arguments à un programme, il faut créer une configuration d'exécution. Voici un exemple :
Ce processus a été décrit au paragraphe , page .