Java tutorial
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.grummages.app.rest.entity.service; import javax.persistence.EntityManager; import com.grummages.app.rest.entity.Payment; import java.net.URI; import java.util.List; import javax.persistence.Query; import javax.persistence.PersistenceContext; 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.Response; import org.springframework.transaction.annotation.Transactional; /** * * @author admin */ @Path("com.grummages.app.rest.entity.payment") @com.sun.jersey.spi.resource.Singleton @com.sun.jersey.api.spring.Autowire public class PaymentRESTFacade { @PersistenceContext(unitName = "com.grummages_GrummagesWebApp_war_1.0-SNAPSHOTPU") protected EntityManager entityManager; public PaymentRESTFacade() { } @POST @Consumes({ "application/xml", "application/json" }) @Transactional public Response create(Payment entity) { entityManager.persist(entity); return Response.created(URI.create(entity.getPmtId().toString())).build(); } @PUT @Consumes({ "application/xml", "application/json" }) @Transactional public void edit(Payment entity) { entityManager.merge(entity); } @DELETE @Path("{id}") @Transactional public void remove(@PathParam("id") Short id) { Payment entity = entityManager.getReference(Payment.class, id); entityManager.remove(entity); } @GET @Path("{id}") @Produces({ "application/xml", "application/json" }) @Transactional public Payment find(@PathParam("id") Short id) { return entityManager.find(Payment.class, id); } @GET @Produces({ "application/xml", "application/json" }) @Transactional public List<Payment> findAll() { return find(true, -1, -1); } @GET @Path("{max}/{first}") @Produces({ "application/xml", "application/json" }) @Transactional public List<Payment> findRange(@PathParam("max") Integer max, @PathParam("first") Integer first) { return find(false, max, first); } @GET @Path("count") @Produces("text/plain") @Transactional public String count() { try { Query query = entityManager.createQuery("SELECT count(o) FROM Payment AS o"); return query.getSingleResult().toString(); } finally { entityManager.close(); } } private List<Payment> find(boolean all, int maxResults, int firstResult) { try { Query query = entityManager.createQuery("SELECT object(o) FROM Payment AS o"); if (!all) { query.setMaxResults(maxResults); query.setFirstResult(firstResult); } return query.getResultList(); } finally { entityManager.close(); } } }