Skip to content
Snippets Groups Projects
Commit f79e29bd authored by Yvan Peter's avatar Yvan Peter
Browse files

changement float/double + préparation dto

parent 00f6c27d
No related branches found
No related tags found
No related merge requests found
......@@ -112,7 +112,7 @@ Nous allons pouvoir fournir dans cette classe une première méthode Java access
~~~java
@GET
@Path("tauxpardefaut")
public float getValeurTauxParDefaut() {
public double getValeurTauxParDefaut() {
return TauxTva.NORMAL.taux;
}
~~~
......@@ -138,18 +138,74 @@ On peut remarquer que comme votre code a renvoyé un résultat sans lever d'erre
- mis dans le corps de la réponse le résultat de votre méthode.
### On joue avec les paramètres de requête
La requête HTTP peut varier selon le chemin de l'URI ([@PathParam](https://eclipse-ee4j.github.io/jaxrs-api/apidocs/3.0.0/jakarta/ws/rs/PathParam.html)) ou les paramètres de requête ([@QueryParam](https://eclipse-ee4j.github.io/jaxrs-api/apidocs/3.0.0/jakarta/ws/rs/QueryParam.html))
La requête HTTP peut varier notamment selon le chemin de l'URI ([@PathParam](https://eclipse-ee4j.github.io/jaxrs-api/apidocs/3.0.0/jakarta/ws/rs/PathParam.html)) ou les paramètres de requête ([@QueryParam](https://eclipse-ee4j.github.io/jaxrs-api/apidocs/3.0.0/jakarta/ws/rs/QueryParam.html))
La méthode ci-dessous renvoie la valeur du taux pour un niveau de TVA donné. Ce niveau de TVA (REDUIT, NORMAL, etc.) constitue une partie variable de l'URI qui sera notée entre `{}`. Le paramètre de la méthode est associé à cette partie du chemin grâce à l'annotation `@PathParam`.
~~~java
@GET
@Path("valeur/{niveauTva}")
public float getValeurTaux(@PathParam("niveauTva") String niveau) {
public double getValeurTaux(@PathParam("niveauTva") String niveau) {
return TauxTva.valueOf(niveau.toUpperCase()).taux;
}
~~~
Ajoutez cette méthode à votre classe puis testez la avec `curl`.
Ajoutez (et testez) à votre ressource une méthode `getMontantTotal` qui renverra le montant tva comprise pour un niveau de tva indiqué sur le chemin d'URI et une somme définie en paramètre de requête.
Ajoutez (et testez) à votre ressource une méthode `getMontantTotal` qui renverra le montant tva comprise pour un niveau de tva indiqué sur le chemin d'URI et une somme définie en paramètre de requête (par ex. `http://localhost:8080/api/v1/tva/reduit?somme=100`).
### Renvoyer des données plus complexes
Jusqu'à maintenant, nous avons transmis de simples valeurs numériques prises en charge directement par Jersey dans le corps de la réponse HTTP. Jersey peut faire la même chose avec des classes Java qui respectent les conventions [`JavaBean`](https://fr.wikipedia.org/wiki/JavaBeans), à minima :
- la classe possède un constructeur sans paramètres (constructeur par défaut);
- les propriétés de la classe sont associées à des accesseurs `get`/`set` pour chaque attribut (par. ex pour un attribut `name` --> `getName()`/`setName()`)
Pour un objet de ce type, Jersey va renvoyer dans le corps de la requête un objet (JSON par défaut). Chaque propriété de l'objet java sera représenté par une propriété de l'objet JSON.
Ces objets Java destinés à représenter les données échangées s'appellent des `Data Transfer Object` ou `DTO` (ils peuvent bien sûr également être transmis par le client lors d'une requête `POST` par exemple).
Nous allons ajouter une méthode permettant au client d'avoir la liste des niveaux de TVA avec le taux associé. Pour cela, nous allons d'abord définir un DTO pour représenter cela dans le paquetage `fr.ulille.iut.tva.dto`.
~~~java
package fr.ulille.iut.tva.dto;
public class InfoTaux {
private String label;
private double taux;
public InfoTaux(String label, double taux) {
this.label = label;
this.taux = taux;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public double getTaux() {
return taux;
}
public void setTaux(double taux) {
this.taux = taux;
}
}
~~~
Nous pouvons maintenant utiliser ce DTO pour renvoyer la liste des taux existant au client :
~~~java
@GET
@Path("taux")
public List<InfoTaux> getInfoTaux() {
ArrayList<InfoTaux> result = new ArrayList<InfoTaux>();
for ( TauxTva t : TauxTva.values() ) {
result.add(new InfoTaux(t.name(), t.taux));
}
return result;
}
~~~
......@@ -4,15 +4,15 @@ package fr.ulille.iut.tva.service;
* Tva
*/
public class CalculTva {
public float calculerMontantTauxParDefaut(float somme) {
public double calculerMontantTauxParDefaut(double somme) {
return somme * (1 + TauxTva.NORMAL.taux / 100);
}
public float calculerMontant(TauxTva taux, float somme) {
public double calculerMontant(TauxTva taux, double somme) {
return somme * (1 + taux.taux / 100);
}
public float getTaux(TauxTva taux) {
public double getTaux(TauxTva taux) {
return taux.taux;
}
}
......@@ -4,11 +4,11 @@ package fr.ulille.iut.tva.service;
* TauxTva
*/
public enum TauxTva {
NORMAL(20f), INTERMEDIAIRE(10f), REDUIT(5.5f), PARTICULIER(2.1f);
NORMAL(20d), INTERMEDIAIRE(10d), REDUIT(5.5), PARTICULIER(2.1);
public final float taux;
public final double taux;
private TauxTva(float taux) {
private TauxTva(double taux) {
this.taux = taux;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment