package org.wildfly.swarm.jpa.swarm513; import java.util.ArrayList; import java.util.List; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.Response; import javax.ws.rs.core.UriBuilder; /** * @author Heiko Braun * @since 15/06/16 */ @Stateless @Path("/tickets") public class TicketEndpoint { @PersistenceContext(unitName = "primary") private EntityManager em; @POST @Consumes("text/xml") public Response create(TicketDTO dto) { Ticket entity = dto.fromDTO(null, em); em.persist(entity); return Response.created(UriBuilder.fromResource(TicketEndpoint.class).path(String.valueOf(entity.getId())).build()).build(); } @GET @Produces({"text/xml", "application/json"}) public List<TicketDTO> listAll(@QueryParam("start") Integer startPosition, @QueryParam("max") Integer maxResult) { TypedQuery<Ticket> findAllQuery = em.createQuery("SELECT DISTINCT t FROM Ticket t ORDER BY t.id", Ticket.class); if (startPosition != null) { findAllQuery.setFirstResult(startPosition); } if (maxResult != null) { findAllQuery.setMaxResults(maxResult); } final List<Ticket> searchResults = findAllQuery.getResultList(); final List<TicketDTO> results = new ArrayList<TicketDTO>(); for (Ticket searchResult : searchResults) { TicketDTO dto = new TicketDTO(searchResult.getId(), searchResult.getPrice()); results.add(dto); } return results; } }