ifproject - implémentation d'un Web Service financier et du client J2ME correspondant
4.3. Le développement du Web Service
4.3.1. Apéritif : écriture des méthodes
Le code métier du web service se scinde en deux parties :
En amont, nous avons une classe fournissant une connexion à la base de données wsdb-lt. Il s’agit de la classe Connection2mysql.java. Son unique champ est un objet java.sql.Connection, encapsulant la connexion avec la base de données. L’instanciation de cette connexion est faite par appel constructeur et peut être obtenu par l’accesseur getConnexion() .
En aval, nous avons une classe implémentant les opérations que proposera finalement le web service. Il s’agit de la classe Methodes.java. Ses méthodes publiques sont les suivantes :
- String[] getTitresDisponibles()
- String getDatePremiereCotation(String code)
- String getDevise(String code)
- String getMarche(String code)
- String[] getDates(String code, String dateIn, String dateFin)
- String[] getCours(String code, String dateIn, String dateFin)
- String[] getVolumes(String code, String dateIn, String dateFin)
- String[] getMoyenneMobileExponentielle(String code, String dateIn, String dateFin)
Le nom de chacune de ces méthodes est suffisamment explicite pour qu’il ne soit pas nécessaire de donner plus de détails quant à l’information qu’elles renvoient.
Elles sont généralement construites de la façon suivante :
- On définit, le cas échéant, la requête SQL qui devra récupérer les données nécessaires au calcul effectué par la méthode.
- Par l’appel d’une méthode privée executeRequete(String requete) qui crée une connexion avec la base de données, on execute la requête et retourne le ResultSet correspondant.
- Quand la valeur retournée est un tableau, il est nécessaire pour l’instancier, de compter le nombre d’enregistrements retirés de la base. Cela se fait par la méthode privée compteEnregistrements(ResultSet rs )
- En bouclant sur le ResultSet obtenu, on traite les données pour en tirer l’information recherchée.
- Par l’appel de la méthode termineConnexionMysql(), on libère les ressources de connexion.
Les requêtes SQL utilisées dans ces diverses méthodes sont listées ci-dessous :
- Pour la liste des titres disponibles sur le serveur
SELECT code FROM actions ;
- Pour la date de première cotation d’un titre donné
SELECT min(date) FROM cotations WHERE id_act=(SELECT id_act FROM actions WHERE code=’code’);
- Pour les cotations d’un titre entre deux dates
SELECT date, adjclose, volume FROM cotations WHERE id_act= (SELECT id_act FROM actions WHERE code=’code’) AND date BETWEEN ’dateIn’ AND ’dateFin’;
-
Pour les informations concernant le marché et la devise pour un titre donné
SELECT marches.code, devises.code FROM marches, devises WHERE (marches.code, devises.id_dev) =(SELECT marches.code, marches.id_dev FROM marches WHERE id_mar=(SELECT id_mar FROM actions WHERE code=’code’));