From 95118d3e0efac9931ebfb0513288a58368c149e4 Mon Sep 17 00:00:00 2001
From: Christopher POTTIER <christopher.pottier.etu@univ-lille.fr>
Date: Fri, 11 Feb 2022 10:53:20 +0100
Subject: [PATCH] fin tp
---
.m2/setting.xml | 19 ++++++
src/main/java/fr/ulille/iut/tva/Main.java | 2 +-
.../java/fr/ulille/iut/tva/dto/Detaildto.java | 50 +++++++++++++++
.../fr/ulille/iut/tva/dto/InfoTauxDto.java | 32 ++++++++++
.../NiveauTvaInexistantException.java | 12 ++++
.../iut/tva/ressource/TvaRessource.java | 63 +++++++++++++++++++
6 files changed, 177 insertions(+), 1 deletion(-)
create mode 100644 .m2/setting.xml
create mode 100644 src/main/java/fr/ulille/iut/tva/dto/Detaildto.java
create mode 100644 src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
create mode 100644 src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
diff --git a/.m2/setting.xml b/.m2/setting.xml
new file mode 100644
index 0000000..ce42bd4
--- /dev/null
+++ b/.m2/setting.xml
@@ -0,0 +1,19 @@
+<settings>
+ <proxies>
+ <proxy>
+ <id>ulille-proxy</id>
+ <active>true</active>
+ <protocol>http</protocol>
+ <host>cache.univ-lille.fr</host>
+ <port>3128</port>
+ </proxy>
+ <proxy>
+ <id>lille1-proxy-sec</id>
+ <active>true</active>
+ <protocol>https</protocol>
+ <host>cache.univ-lille.fr</host>
+ <port>3128</port>
+ </proxy>
+ </proxies>
+</settings>
+
diff --git a/src/main/java/fr/ulille/iut/tva/Main.java b/src/main/java/fr/ulille/iut/tva/Main.java
index 62da555..7038335 100644
--- a/src/main/java/fr/ulille/iut/tva/Main.java
+++ b/src/main/java/fr/ulille/iut/tva/Main.java
@@ -16,7 +16,7 @@ import java.util.logging.Logger;
*/
public class Main {
// Base URI the Grizzly HTTP server will listen on
- public static final String BASE_URI = "http://localhost:8080/myapp/";
+ public static final String BASE_URI = "http://localhost:8080/api/v1";
/**
* Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
diff --git a/src/main/java/fr/ulille/iut/tva/dto/Detaildto.java b/src/main/java/fr/ulille/iut/tva/dto/Detaildto.java
new file mode 100644
index 0000000..f8d4353
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/dto/Detaildto.java
@@ -0,0 +1,50 @@
+package fr.ulille.iut.tva.dto;
+
+public class Detaildto {
+
+ private double montantTotal;
+ private double montantTVA;
+ private double somme;
+ private String tauxLabel;
+ private double tauxValue;
+
+ public Detaildto(double montantTotal, double montantTVA, double somme, String tauxLabel, double tauxValue) {
+ this.montantTotal = montantTotal;
+ this.montantTVA = montantTVA;
+ this.somme = somme;
+ this.tauxLabel = tauxLabel;
+ this.tauxValue = tauxValue;
+ }
+
+ public double getMontantTotal() {
+ return montantTotal;
+ }
+ public void setMontantTotal(double montantTotal) {
+ this.montantTotal = montantTotal;
+ }
+ public double getMontantTVA() {
+ return montantTVA;
+ }
+ public void setMontantTVA(double montantTVA) {
+ this.montantTVA = montantTVA;
+ }
+ public double getSomme() {
+ return somme;
+ }
+ public void setSomme(double somme) {
+ this.somme = somme;
+ }
+ public String getTauxLabel() {
+ return tauxLabel;
+ }
+ public void setTauxLabel(String tauxLabel) {
+ this.tauxLabel = tauxLabel;
+ }
+ public double getTauxValue() {
+ return tauxValue;
+ }
+ public void setTauxValue(double tauxValue) {
+ this.tauxValue = tauxValue;
+ }
+
+}
diff --git a/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
new file mode 100644
index 0000000..e0e25a6
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java
@@ -0,0 +1,32 @@
+package fr.ulille.iut.tva.dto;
+
+import jakarta.xml.bind.annotation.XmlRootElement;
+
+@XmlRootElement
+public class InfoTauxDto {
+ private String label;
+ private double taux;
+
+ public InfoTauxDto() {}
+
+ public InfoTauxDto(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;
+ }
+}
diff --git a/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
new file mode 100644
index 0000000..831b2f4
--- /dev/null
+++ b/src/main/java/fr/ulille/iut/tva/ressource/NiveauTvaInexistantException.java
@@ -0,0 +1,12 @@
+package fr.ulille.iut.tva.ressource;
+
+import jakarta.ws.rs.WebApplicationException;
+import jakarta.ws.rs.core.Response;
+
+public class NiveauTvaInexistantException extends WebApplicationException {
+ private static final long serialVersionUID = 939875418210403804L;
+
+ public NiveauTvaInexistantException() {
+ super(Response.status(Response.Status.NOT_ACCEPTABLE).entity("Niveau de TVA inexistant").build());
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java b/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
index 4c63ca6..5fb11ec 100644
--- a/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
+++ b/src/main/java/fr/ulille/iut/tva/ressource/TvaRessource.java
@@ -1,12 +1,75 @@
package fr.ulille.iut.tva.ressource;
+import java.util.ArrayList;
+import java.util.List;
+
+import fr.ulille.iut.tva.dto.Detaildto;
+import fr.ulille.iut.tva.dto.InfoTauxDto;
import fr.ulille.iut.tva.service.CalculTva;
import fr.ulille.iut.tva.service.TauxTva;
+import jakarta.ws.rs.GET;
+import jakarta.ws.rs.Path;
+import jakarta.ws.rs.PathParam;
+import jakarta.ws.rs.Produces;
+import jakarta.ws.rs.QueryParam;
+import jakarta.ws.rs.core.MediaType;
/**
* TvaRessource
*/
+@Path("tva")
public class TvaRessource {
private CalculTva calculTva = new CalculTva();
+
+ @GET
+ @Path("tauxpardefaut")
+ public double getValeurTauxParDefaut() {
+ return TauxTva.NORMAL.taux;
+ }
+
+ @GET
+ @Path("valeur/{niveauTva}")
+ public double getValeurTaux(@PathParam("niveauTva") String niveau) {
+ try {
+ return TauxTva.valueOf(niveau.toUpperCase()).taux;
+ }
+ catch ( Exception ex ) {
+ throw new NiveauTvaInexistantException();
+ }
+ }
+
+
+ @GET
+ @Path("/{niveauTva}")
+ public double getMontantTotal(@QueryParam("somme") double somme, @PathParam("niveauTva") String niveau) {
+ try {
+ return somme * (1 + (TauxTva.valueOf(niveau.toUpperCase()).taux / 100));
+ } catch (Exception ex) {
+ throw new NiveauTvaInexistantException();
+ }
+ }
+
+ @GET
+ @Path("lestaux")
+ @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ public List<InfoTauxDto> getInfoTaux() {
+ ArrayList<InfoTauxDto> result = new ArrayList<InfoTauxDto>();
+ for ( TauxTva t : TauxTva.values() ) {
+ result.add(new InfoTauxDto(t.name(), t.taux));
+ }
+ return result;
+ }
+
+ @GET
+ @Path("/details/{taux}")
+ public List<Detaildto> getDetail(@QueryParam("somme") int somme, @PathParam("taux") String niveau) {
+ double tauxValue = TauxTva.valueOf(niveau.toUpperCase()).taux;
+ String tauxLabel = niveau.toUpperCase();
+ double montantTVA = (tauxValue / 100) * somme;
+ double montantTotal = somme + montantTVA;
+ List<Detaildto> result = new ArrayList<>();
+ result.add(new Detaildto(montantTotal, montantTVA, somme, tauxLabel, tauxValue));
+ return result;
+ }
}
--
GitLab