package com.yunspace.dropwizard.xml.example.resources;
import java.util.List;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.google.common.base.Optional;
import com.yunspace.dropwizard.xml.example.core.Ship;
import com.yunspace.dropwizard.xml.example.db.ShipDAO;
import io.dropwizard.hibernate.UnitOfWork;
import io.dropwizard.jersey.params.LongParam;
@Path("/ships")
public class ShipResource {
private final ShipDAO shipDAO;
public ShipResource(ShipDAO shipDAO) {
this.shipDAO = shipDAO;
}
@POST
@UnitOfWork
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Ship createShip(Ship ship) {
return shipDAO.create(ship);
}
@GET
@Path("{shipId}")
@UnitOfWork
@Produces(MediaType.APPLICATION_XML)
public Optional<Ship> getShip(@PathParam("shipId") LongParam shipId) {
return shipDAO.findById(shipId.get());
}
@GET
@UnitOfWork
@Produces(MediaType.APPLICATION_XML)
public List<Ship> listShips() {
return shipDAO.findAll();
}
@PUT
@UnitOfWork
@Consumes(MediaType.APPLICATION_XML)
public void updateShip(Ship Ship) {
shipDAO.update(Ship);
}
@DELETE
@Path("{shipId}")
@UnitOfWork
public void deleteShip(@PathParam("shipId") LongParam shipId) {
Optional<Ship> shipOptional = shipDAO.findById(shipId.get());
if (shipOptional.isPresent()) {
shipDAO.delete(shipOptional.get());
}
}
}