Skip to content
Snippets Groups Projects
Commit b78af1c3 authored by Tom Danion's avatar Tom Danion
Browse files

fin

parent a022d155
No related branches found
No related tags found
No related merge requests found
Showing
with 241 additions and 27 deletions
README.md 100644 → 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
pom.xml 100644 → 100755
File mode changed from 100644 to 100755
......@@ -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,12 @@ public class ApiV1 extends ResourceConfig {
for ( Ingredient ingredient: ingredients) {
ingredientDao.insert(ingredient.getName());
}
PizzaDao pizzaDao = BDDFactory.buildDao(PizzaDao.class);
pizzaDao.dropTableAssociation();
pizzaDao.dropTablePizzas();
pizzaDao.createTableAndIngredientAssociation();
} catch ( Exception ex ) {
throw new IllegalStateException(ex);
}
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
......@@ -2,19 +2,36 @@ package fr.ulille.iut.pizzaland.beans;
import java.util.List;
import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
import fr.ulille.iut.pizzaland.dto.PizzaDto;
public class Pizza {
private long id;
private String name;
private List<Ingredient> ingredients;
public Pizza() {}
public Pizza(long id, List<Ingredient> ingredients) {
public Pizza(long id, List<Ingredient> ingredients, String name) {
this.id = id;
this.name = name;
this.ingredients = ingredients;
}
public static PizzaCreateDto toCreateDto(Pizza pizza) {
PizzaCreateDto dto = new PizzaCreateDto();
dto.setIngredients(pizza.getIngredients());
return dto;
}
public static Pizza fromPizzaCreateDto(PizzaCreateDto dto) {
Pizza pizza = new Pizza();
pizza.setIngredients(dto.getIngredients());
return pizza;
}
public long getId() {
return id;
}
......@@ -31,10 +48,19 @@ public class Pizza {
this.ingredients=ingredients;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static PizzaDto toDto(Pizza i) {
PizzaDto dto = new PizzaDto();
dto.setId(i.getId());
dto.setIngredients(i.getIngredients());
dto.setName(i.getName());
return dto;
}
......@@ -43,6 +69,7 @@ public class Pizza {
Pizza pizza = new Pizza();
pizza.setId(dto.getId());
pizza.setIngredients(dto.getIngredients());
pizza.setName(dto.getName());
return pizza;
}
......@@ -63,11 +90,16 @@ public class Pizza {
return false;
} else if (!ingredients.equals(other.ingredients))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {
return "Pizza [id=" + id + ", ingredients=" + ingredients.toString() + "]";
return "Pizza [id=" + id + ", name="+ name +", ingredients=" + ingredients.toString() + "]";
}
}
File mode changed from 100644 to 100755
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.Ingredient;
import fr.ulille.iut.pizzaland.beans.Pizza;
public interface PizzaDao {
@SqlUpdate("CREATE TABLE IF NOT EXISTS Pizzas (id INTEGER PRIMARY KEY, name VARCHAR UNIQUE NOT NULL)")
......@@ -11,6 +19,31 @@ public interface PizzaDao {
@SqlUpdate("CREATE TABLE IF NOT EXISTS PizzaIngredientsAssociation (idPizza INTEGER, idIngredient INTEGER, CONSTRAINT PK_Pizza_Ingredient PRIMARY KEY (idPizza, idIngredient)")
void createAssociationTable();
@SqlUpdate("DROP TABLE IF EXISTS Pizzas")
void dropTablePizzas();
@SqlUpdate("DROP TABLE IF EXISTS PizzaIngredientsAssociation")
void dropTableAssociation();
@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);
@Transaction
default void createTableAndIngredientAssociation() {
createAssociationTable();
......
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
package fr.ulille.iut.pizzaland.dto;
import java.util.List;
import fr.ulille.iut.pizzaland.beans.Ingredient;
public class PizzaCreateDto {
private String name;
private List<Ingredient> ingredients;
public PizzaCreateDto() {}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public void setIngredients(List<Ingredient> ingredients) {
this.ingredients = ingredients;
}
public List<Ingredient> getIngredients() {
return ingredients;
}
}
......@@ -6,6 +6,7 @@ import fr.ulille.iut.pizzaland.beans.Ingredient;
public class PizzaDto {
private long id;
private String name;
private List<Ingredient> ingredients;
public PizzaDto() {}
......@@ -18,6 +19,14 @@ public class PizzaDto {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public List<Ingredient> getIngredients() {
return ingredients;
}
......
File mode changed from 100644 to 100755
package fr.ulille.iut.pizzaland.resources;
import javax.ws.rs.PathParam;
import javax.ws.rs.WebApplicationException;
import java.net.URI;
import java.util.List;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import fr.ulille.iut.pizzaland.BDDFactory;
import fr.ulille.iut.pizzaland.beans.Pizza;
import fr.ulille.iut.pizzaland.dao.PizzaDao;
import fr.ulille.iut.pizzaland.dto.PizzaCreateDto;
import fr.ulille.iut.pizzaland.dto.PizzaDto;
@Path("/pizza")
public class PizzaResource {
private PizzaDao pizza;
private static final Logger LOGGER = Logger.getLogger(PizzaResource.class.getName());
@Context
public UriInfo uriInfo;
public PizzaResource() {
pizza = BDDFactory.buildDao(PizzaDao.class);
pizza.createPizzaTable();
}
@GET
public List<PizzaDto> getAll() {
LOGGER.info("IngredientResource:getAll");
List<PizzaDto> l = pizza.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 piz = pizza.findById(id);
return Pizza.toDto(piz);
}
catch ( Exception e ) {
// Cette exception générera une réponse avec une erreur 404
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
}
@GET
@Path("{id}/name")
public String getPizzaName(@PathParam("id") long id) {
Pizza piz = pizza.findById(id);
if ( piz == null ) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
return piz.getName();
}
@POST
public Response createIngredient(PizzaCreateDto pizzaCreateDto) {
Pizza existing = pizza.findByName(pizzaCreateDto.getName());
if ( existing != null ) {
throw new WebApplicationException(Response.Status.CONFLICT);
}
try {
Pizza piz = Pizza.fromPizzaCreateDto(pizzaCreateDto);
long id = pizza.insert(piz.getName());
piz.setId(id);
PizzaDto pizzaDto = Pizza.toDto(piz);
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 ( pizza.findById(id) == null ) {
throw new WebApplicationException(Response.Status.NOT_FOUND);
}
pizza.remove(id);
return Response.status(Response.Status.ACCEPTED).build();
}
}
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
File mode changed from 100644 to 100755
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment