package br.gov.mj.sislegis.app.rest; import java.util.Date; import java.util.List; import javax.inject.Inject; import javax.persistence.OptimisticLockException; 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.QueryParam; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; import br.gov.mj.sislegis.app.model.Reuniao; import br.gov.mj.sislegis.app.model.ReuniaoProposicao; import br.gov.mj.sislegis.app.service.ReuniaoProposicaoService; import br.gov.mj.sislegis.app.service.ReuniaoService; @Path("/reuniaoProposicao") public class ReuniaoProposicaoEndpoint { @Inject private ReuniaoProposicaoService service; @Inject private ReuniaoService reuniaoService; @POST @Consumes(MediaType.APPLICATION_JSON) public Response create(ReuniaoProposicao entity) { service.save(entity); return Response.created( UriBuilder.fromResource(ReuniaoProposicaoEndpoint.class) .path(String.valueOf(entity.getId())).build()).build(); } @DELETE @Path("/{idProposicao:[0-9][0-9]*}") public Response deleteById(@QueryParam("data") Date data, @PathParam("idProposicao") Long idProposicao) { Reuniao reuniao = reuniaoService.buscaReuniaoPorData(data); service.deleteById(reuniao.getId(), idProposicao); return Response.noContent().build(); } @GET @Path("/{id:[0-9][0-9]*}") @Produces(MediaType.APPLICATION_JSON) public Response findById(@PathParam("id") Long id) { // FIXME: fazer parecido com o deleteById pois é uma tabela associativa return Response.ok(service.findById(id)).build(); } @GET @Produces(MediaType.APPLICATION_JSON) public List<ReuniaoProposicao> listAll() { return service.listAll(); } @PUT @Path("/{id:[0-9][0-9]*}") @Consumes(MediaType.APPLICATION_JSON) public Response update(ReuniaoProposicao entity) { try { entity = service.save(entity); } catch (OptimisticLockException e) { return Response.status(Response.Status.CONFLICT) .entity(e.getEntity()).build(); } return Response.noContent().build(); } }