Package nz.co.elysium.resources

Source Code of nz.co.elysium.resources.PizzaResource

package nz.co.elysium.resources;

import com.yammer.metrics.annotation.Timed;
import nz.co.elysium.core.Pizza;
import nz.co.elysium.core.PizzaDAO;
import nz.co.elysium.core.Topping;

import javax.ws.rs.*;
import javax.ws.rs.core.MediaType;
import java.util.List;

@Path("/pizzas")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class PizzaResource {
    private final PizzaDAO dao;

    public PizzaResource(PizzaDAO dao) {
        this.dao = dao;
    }

    private void injectToppings(Pizza p) {
        List<Topping> toppings = dao.selectToppings((int)p.getId());
        for (Topping t : toppings) {
            p.addTopping(t);
        }
    }

    @GET
    @Timed
    @Path("{id}")
    public Pizza getPizza(@PathParam("id") int id) {
        Pizza p = dao.selectById(id);
        injectToppings(p);
        return p;
    }

    @GET
    @Timed
    public List<Pizza> getPizzas() {
        List<Pizza> pizzas = dao.selectAll();
        for (Pizza p : pizzas) injectToppings(p);
        return pizzas;
    }

    @POST
    @Timed
    @Path("{id}/toppings")
    public Pizza addTopping(@PathParam("id") int id,
                            @QueryParam("topping_id") int topping_id) {
        Pizza p = dao.selectById(id);
        dao.insertTopping(id, topping_id);
        injectToppings(p);
        return p;
    }

    @DELETE
    @Timed
    @Path("{id}/toppings/{topping_id}")
    public Pizza deleteTopping(@PathParam("id") int id,
                               @PathParam("topping_id") int topping_id) {
        Pizza p = dao.selectById(id);
        dao.deleteTopping(id, topping_id);
        injectToppings(p);
        return p;
    }
}
TOP

Related Classes of nz.co.elysium.resources.PizzaResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.