diff --git a/src/main/java/fr/ulille/iut/tva/Main.java b/src/main/java/fr/ulille/iut/tva/Main.java index 62da555ebf892c9910b55e2700400f5229364411..4c01590b10259038ae6f07bbb4192abd86a54865 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. @@ -58,7 +58,7 @@ public class Main { public static void main(String[] args) throws IOException { final HttpServer server = startServer(); System.out.println(String.format("Jersey app started with WADL available at " - + "%sapplication.wadl\nHit enter to stop it...", BASE_URI)); + + "%s\nHit enter to stop it...", BASE_URI)); System.in.read(); server.shutdownNow(); } diff --git a/src/main/java/fr/ulille/iut/tva/dto/InfoPrixDto.java b/src/main/java/fr/ulille/iut/tva/dto/InfoPrixDto.java new file mode 100644 index 0000000000000000000000000000000000000000..794d12f9b8db2299ce54325b81c51af2a6e28683 --- /dev/null +++ b/src/main/java/fr/ulille/iut/tva/dto/InfoPrixDto.java @@ -0,0 +1,50 @@ +package fr.ulille.iut.tva.dto; + +import fr.ulille.iut.tva.service.CalculTva; +import fr.ulille.iut.tva.service.TauxTva; +import jakarta.xml.bind.annotation.XmlRootElement; + +@XmlRootElement +public class InfoPrixDto extends InfoTauxDto { + private double montantTotal; + private double somme; + private double montantTva; + + + public InfoPrixDto() { + + } + + + public InfoPrixDto(String label, double somme, double taux) { + super(label, taux); + this.somme = somme; + CalculTva calculTva = new CalculTva(); + this.montantTotal = calculTva.calculerMontant(TauxTva.valueOf(label), somme); + this.montantTva = montantTotal - somme; + } + + + public double getMontantTotal() { + return montantTotal; + } + public void setMontantTotal(double montantTotal) { + this.montantTotal = montantTotal; + } + public double getSomme() { + return somme; + } + public void setSomme(double sommme) { + this.somme = sommme; + } + public double getMontantTva() { + return montantTva; + } + public void setMontantTva(double montantTva) { + this.montantTva = montantTva; + } + + + + +} 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 0000000000000000000000000000000000000000..f3960a9c2631b673fd38f1429f737f122f17a06e --- /dev/null +++ b/src/main/java/fr/ulille/iut/tva/dto/InfoTauxDto.java @@ -0,0 +1,31 @@ +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; + } +} \ No newline at end of file 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 0000000000000000000000000000000000000000..c6da2e24f45fd41fdfe8d59be11170c04b8369ca --- /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()); + } +} 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 4c63ca69564a00810016eb92cc55ec8116b80faa..9a816595a35c32b2caa1dc646e5d5b9f7197193c 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,79 @@ package fr.ulille.iut.tva.ressource; +import java.util.ArrayList; +import java.util.List; + +import fr.ulille.iut.tva.dto.InfoPrixDto; +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(@PathParam("niveauTva") String niveau, @QueryParam("somme") int somme) { + try { + return calculTva.calculerMontant(TauxTva.valueOf(niveau), somme); + } + 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/{niveauTva}") + @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML}) + public InfoPrixDto getDetail(@PathParam("niveauTva") String niveau, @QueryParam("somme") int somme) { + try { + return new InfoPrixDto(niveau.toUpperCase(), somme, TauxTva.valueOf(niveau.toUpperCase()).taux); + } + catch ( Exception ex ) { + throw new NiveauTvaInexistantException(); + } + } + + + + }