mardi 4 août 2009

DATABINDING, WEB SERVICE et NETBEANS IDE

DATABINDING, WEB SERVICE et NETBEANS 6.7

Prerequis
- javaME
- Netbeans Visual Mobile Designer Tool
- Netbeans web service client wizard tool

databinding Component
L'element databinding de Netbeans 6.7 IDE est un outils simple d'emploi permettant de lier des variables entre elles afin que leur modifications soit synchrones. Il produira une architecture de liaison de donnée dans votre MIDlet et tout ce qu'il vous restera à faire c'est de spécifier qui est lié avec qui et qu'elles opérations auront lieu sur les variables liées.

Le web service
Dans ce tuto nous allons donc utiliser le databinding pour afficher les informations d'un service web préalablement créer avec Netbeans IDE. Notre web service se contente de vous dire juste .... bonjour. (on va faire simple c'est le principe qui compte)
et notre application mobile permet de fournir en paramètre votre nom au service web. Une variable sera alors lié (databinding) à ces différentes opérations et mettra à jour le résultat du service web à chaque fois que vous fournirez un nouveau paramètre.
C'est un exemple qui vous permettra juste de saisir le mode de fonctionnement de l'outil databinding présent dans Netbeans.

->Créer un nouveau projet web -> choisissez un serveur (tomcat par exemple) -> Une fois le projet créer faite un clique droit sur son noeud ->choisissez new file -> web service
->Un fichier se crée -> cliquez sur la petite ampoule notifiée par Netbeans et ajoutez une opération à votre web service.
Voici par exemple mon code final :
------------------------------------------------------------------------------------------------------
public class bonjourWS {

@WebMethod(operationName = "getMyPass")
public String operation(@WebParam(name = "nomParam")
String nomParam) {

return"Bonjour "+nomParam;
}
}
--------------------------------------------------------------------------------------------------------
faite un clique droit sur le fichier de votre web service et testez votre service web.

Client javaME
Utiliser le javaME web service client wizard de netbeans pour générer un client dans votre application mobile. Clique droit sur votre projet mobile ->javaME web service client -> ....
Aprè la génération du code vérifier si le Stub a lui aussi été généré sinon ouvrez le fichier .wsclient qui a été généré et cliquez sur "generate Stubs"



Flux de l'application
Avec l'outils Visual MIDlet concevez un flow simple comme celui ci



Screen de l'application
Ajoutez l'element dataSet de la palette dans votre application et dans ressources ajouter deux images au format PNG présent dans le repertoire de votre projet.



Placez les éléments de la palette de Netbeans comme vous le voyez dans l'image en dessous


Pour les numerotations voici en quoi consiste le travail à faire:

1 -> Clique droit -> propriété -> image -> databinding -> deroulez et selectionner dataSet[DataSet]
-> entrez dataSet.photo dans "EL Read" ceci signifie juste que c'est le terme "photo" qui nous permettra de lier l'image à afficher à celle d'une variable par le billet du databinding.

2 ->clique droit -> propriété -> text -> databinding -> deroulez et selectionner dataSet[DataSet]
-> entrez dataSet.nom dans "EL Read" ceci signifie juste que c'est le terme "nom" qui nous permettra de lier le texte de cet champ à une variable par le billet du databinding. C'est sur ce champ de texte que nous utiliserons notre web service.

3 - Comme nous l'avons fait avec l'ajout du composant DataSet dans notre projet faite pareil sur ressource pour ajouter des images dans le code.

Le code de l'application
Allez dans la section "Source" du Visual Mobile Designer et ajouter une déclaration d'une instance de la classe Stub que vous avez générez. Dans mon cas ça correspond à ce code :
-------------------------------------------------------------------------------------------------------------------------------------------
private bonjourWSService_Stub bews = new bonjourWSService_Stub();
-------------------------------------------------------------------------------------------------------------------------------------------

Recherchez la methode getValue et modifiez là en y insérant un code semblable à celui ci

------------------------------------------------------------------------------------------------------------------------------------------
public Object getValue(String name) throws IllegalStateException {

String a = choiceGroup.getString(choiceGroup.getSelectedIndex());

if (name.equals("nom")) {

/*Remarquez: Voici la Clause if qu'on utilisera pour spécifier quoi faire de l'element du databinding nommé dataSet.nom*/

try {
//VOILA NOTRE TOUT PETIT CODE
return bews.getMyPass(a);

/*Remarquez: bews est l'objet de la classe Stub que nous avons instancié. en tapant juste "bews." Netbeans vous propose la liste des methode disponible pour cet objet et parmis ces methodes il figure celle de notre web service. c'est donc elle que j'appelle et je lui passe en paramètre la valeur de la variable locale "a". comme vous l'aurez constaté, a contient la valeur du champ coché (nom du personnage choisi) */

} catch (RemoteException ex) {
ex.printStackTrace();
}
}
if (name.equals("photo")) {

/*Vous pouvez grace au databinding faire correspondre cette image à une image fournit par un web service, mais ça c'est une aute affaire .... */

}

}
return null;
}
--------------------------------------------------------------------------------------------------------------------------------------------

Tester votre application


L'application marche sans problème à present vous êtes capable de,manipuler éfficacement l'outil databinding de Netbeans dans vos applications mobile ... du moins je l'espère. Vos suggessions sont les biens venues.
[NOTE: Le databinding tel que nous l'avons fait ne se fera qu'au lancement de l'application. Pour la rendre plus dynamique attribuez à la commande "validez" une methode qui rafraîchira les variables. OU alors vous utilisez deux formulaires, un pour le choix de l'utilisateur et l'autre pour l'affichage du résultat. .. ce tuto est appellé à être amélioré à tout moment]
je voulais faire simple alors ...

Merci


Aucun commentaire:

Enregistrer un commentaire