Skip to content
Snippets Groups Projects
Commit 2879b8fb authored by Hugo Blanquart's avatar Hugo Blanquart
Browse files

final test

parent 2f46f226
No related branches found
No related tags found
No related merge requests found
......@@ -7,6 +7,7 @@ import java.util.logging.Logger;
import javax.ws.rs.ApplicationPath;
import fr.ulille.iut.pizzaland.beans.Ingredient;
import fr.ulille.iut.pizzaland.dao.IngredientDao;
import fr.ulille.iut.pizzaland.dao.PizzaDao;
import java.io.FileReader;
import java.io.IOException;
......@@ -38,6 +39,10 @@ public class ApiV1 extends ResourceConfig {
for ( Ingredient ingredient: ingredients) {
ingredientDao.insert(ingredient.getName());
}
PizzaDao pizzaDao = BDDFactory.buildDao(PizzaDao.class);
} catch ( Exception ex ) {
throw new IllegalStateException(ex);
}
......
package fr.ulille.iut.pizzaland.dao;
import java.util.List;
import org.jdbi.v3.sqlobject.config.RegisterBeanMapper;
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys;
import org.jdbi.v3.sqlobject.statement.SqlQuery;
import org.jdbi.v3.sqlobject.statement.SqlUpdate;
import org.jdbi.v3.sqlobject.transaction.Transaction;
import fr.ulille.iut.pizzaland.beans.Pizza;
public interface PizzaDao {
@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas ....")
@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL")
void createPizzaTable();
@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation .....")
@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation(pizza Integer,"
+"ingredient INTEGER,"
+ "PRIMARY KEY(pizza, ingredient),"+"FOREIGN KEY(pizza) REFERENCES Pizzas(id),"
+"FOREIGN KEY(ingredient) REFERENCES ingredient(id))")
void createAssociationTable();
@Transaction
......@@ -17,4 +27,32 @@ public interface PizzaDao {
createPizzaTable();
}
@SqlUpdate("DROP TABLE IF EXISTS Pizzas")
void dropTablePizza();
@SqlUpdate("DROP TABLE IF EXISTS pizzaIngredientsAssociation")
void dropTableAssociations();
@SqlQuery("SELECT * FROM Pizzas")
@RegisterBeanMapper(Pizza.class)
List<Pizza> getAll();
@SqlQuery("SELECT * FROM Pizzas WHERE id = :id")
@RegisterBeanMapper(Pizza.class)
Pizza findById(long id);
@SqlQuery("SELECT * FROM Pizzas WHERE name = :name")
@RegisterBeanMapper(Pizza.class)
Pizza findByName(String name);
@SqlUpdate("INSERT INTO Pizzas (name) VALUES(:name)")
@GetGeneratedKeys
long insert(String name);
@SqlUpdate("DELETE FROM Pizzas WHERE id = :id")
void remove(long id);
}
\ No newline at end of file
package fr.ulille.iut.pizzaland.resources;
import java.net.URI;
import java.util.List;
import java.util.ArrayList;
import java.util.logging.Logger;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import org.slf4j.LoggerFactory;
import javax.ws.rs.PathParam;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import fr.ulille.iut.pizzaland.beans.Ingredient;
import fr.ulille.iut.pizzaland.beans.Pizza;
import fr.ulille.iut.pizzaland.dto.IngredientDto;
import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
import fr.ulille.iut.pizzaland.dto.PizzaDto;
import fr.ulille.iut.pizzaland.BDDFactory;
import fr.ulille.iut.pizzaland.dao.IngredientDao;
import fr.ulille.iut.pizzaland.dao.PizzaDao;
import java.util.stream.Collectors;
import javax.ws.rs.POST;
import fr.ulille.iut.pizzaland.dto.IngredientCreateDto;
import javax.ws.rs.WebApplicationException;
@Path("/pizzas")
public class PizzaResource {
final static Logger LOGGER = Logger.getLogger(PizzaResource.class.getName());
@Context
public UriInfo uriInfo;
private PizzaDao pizzas;
public PizzaResource() {
pizzas = BDDFactory.buildDao(PizzaDao.class);
pizzas.createPizzaTable();
}
@GET
public List<PizzaDto> getAll() {
LOGGER.info("PizzaResource:getAll");
List<PizzaDto> l = pizzas.getAll().stream().map(Pizza::toDto).collect(Collectors.toList());
return l;
}
@GET
@Path("{id}")
public PizzaDto getOnePizza(@PathParam("id") long id) {
LOGGER.info("getOnePizza(" + id + ")");
try {
Pizza pizza = pizzas.findById(id);
return Pizza.toDto(pizza);
} catch (Exception e) {
// Cette exception générera une réponse avec une erreur 404
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
}
@POST
public Response createPizza(PizzaCreateDto pizzaCreateDto) {
Pizza existing = pizzas.findByName(pizzaCreateDto.getName());
if (existing != null) {
throw new WebApplicationException(Response.Status.CONFLICT);
}
try {
Pizza pizza = Pizza.fromPizzaCreateDto(pizzaCreateDto);
long id = pizzas.insert(pizza.getName());
pizza.setId(id);
PizzaDto pizzaDto = Pizza.toDto(pizza);
URI uri = uriInfo.getAbsolutePathBuilder().path("" + id).build();
return Response.created(uri).entity(pizzaDto).build();
} catch (Exception e) {
e.printStackTrace();
throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE);
}
}
@DELETE
@Path("{id}")
public Response deletePizza(@PathParam("id") long id) {
if ( pizzas.findById(id) == null ) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
pizzas.remove(id);
return Response.status(Response.Status.ACCEPTED).build();
}
@GET
@Path("{id}/name")
public String getPizzaName(@PathParam("id") long id) {
Pizza pizza= pizzas.findById(id);
if ( pizza == null ) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
return pizza.getName();
}
@POST
@Consumes("application/x-www-form-urlencoded")
public Response createPizza(@FormParam("name") String name) {
Pizza existing = pizzas.findByName(name);
if ( existing != null ) {
throw new WebApplicationException(Response.Status.CONFLICT);
}
try {
Pizza pizza = new Pizza();
pizza.setName(name);
long id = pizzas.insert(pizza.getName());
pizza.setId(id);
PizzaDto pizzaDto = Pizza.toDto(pizza);
URI uri = uriInfo.getAbsolutePathBuilder().path("" + id).build();
return Response.created(uri).entity(pizzaDto).build();
}
catch ( Exception e ) {
e.printStackTrace();
throw new WebApplicationException(Response.Status.NOT_ACCEPTABLE);
}
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment