Skip to content
Snippets Groups Projects
Commit 9af97a0f authored by Aymane Ismail's avatar Aymane Ismail
Browse files

Initial commit

parent 1a1387e1
Branches
No related tags found
No related merge requests found
curl -i http://localhost:8080/api/v1/tva/tauxpardefaut
curl -i -H "Content-Type: text/plain" http://localhost:8080/api/v1/tva/tauxpardefaut
curl -i http://localhost:8080/api/v1/tva/valeur/NORMAL
curl -i http://localhost:8080/api/v1/tva/reduit?somme=100
curl -i -H "Content-Type: application/json" http://localhost:8080/api/v1/info/lestaux
...@@ -16,7 +16,8 @@ import java.util.logging.Logger; ...@@ -16,7 +16,8 @@ import java.util.logging.Logger;
*/ */
public class Main { public class Main {
// Base URI the Grizzly HTTP server will listen on // 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/myapp/";
public static final String BASE_URI = "http://localhost:8080/api/v1";
/** /**
* Starts Grizzly HTTP server exposing JAX-RS resources defined in this application. * Starts Grizzly HTTP server exposing JAX-RS resources defined in this application.
......
package fr.ulille.iut.tva.dto;
import jakarta.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class DetailDto {
double montantTotal;
double montantTva;
double somme;
String tauxLabel;
double tauxValue;
public DetailDto() {}
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;
}
public DetailDto(double montantTotal, double montantTva, double somme, String tauxLabel, double tauxValue) {
super();
this.montantTotal = montantTotal;
this.montantTva = montantTva;
this.somme = somme;
this.tauxLabel = tauxLabel;
this.tauxValue = tauxValue;
}
}
\ No newline at end of file
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
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
package fr.ulille.iut.tva.ressource; 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.CalculTva;
import fr.ulille.iut.tva.service.TauxTva; 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 * TvaRessource
*/ */
@Path("tva")
public class TvaRessource { public class TvaRessource {
private CalculTva calculTva = new CalculTva(); private CalculTva calculTva = new CalculTva();
@GET
@Path("tauxpardefaut")
public double getValeurTauxParDefaut() {
return TauxTva.NORMAL.taux;
}
@GET
@Path("valeur/{niveauTva}")
public float getValeurTaux(@PathParam("niveauTva") String niveau) {
try {
return (float) TauxTva.valueOf(niveau.toUpperCase()).taux;
}
catch ( Exception ex ) {
throw new NiveauTvaInexistantException();
}
}
@GET
@Path("{niveauTva}")
// PARAMETRE SOMME : http://localhost:8080/api/v1/tva/reduit?somme=100
public double getMontantTotal(@QueryParam("somme") double somme, @PathParam("niveauTva") String niveau ) {
try {
return calculTva.calculerMontant(TauxTva.valueOf(niveau.toUpperCase()), 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 DetailDto getDetail (@PathParam("niveauTva") String niveau, @QueryParam("somme") Double somme) {
return new DetailDto(getMontantTotal(somme, niveau),getValeurTaux(niveau),somme,TauxTva.valueOf(niveau.toUpperCase()).toString(),getValeurTaux(niveau));
}
} }
...@@ -4,6 +4,7 @@ package fr.ulille.iut.tva.service; ...@@ -4,6 +4,7 @@ package fr.ulille.iut.tva.service;
* Tva * Tva
*/ */
public class CalculTva { public class CalculTva {
public double calculerMontantTauxParDefaut(double somme) { public double calculerMontantTauxParDefaut(double somme) {
return somme * (1 + TauxTva.NORMAL.taux / 100); return somme * (1 + TauxTva.NORMAL.taux / 100);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment