Commit 5150a206 authored by Iago Gómez Salgado's avatar Iago Gómez Salgado

Delete JPA files.

parent b03b9a0c
package es.uvigo.esei.daa.dao;
import java.lang.reflect.ParameterizedType;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.criteria.CriteriaBuilder;
import javax.persistence.criteria.CriteriaQuery;
public abstract class GenericDAO<T> {
@PersistenceContext(unitName = "daa-PU")
protected EntityManager em;
protected Class<T> claseEntidad;
private void establecerClaseEntidad() {
this.claseEntidad = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];
}
public T crear(T entidad) {
em.persist(entidad);
return entidad;
}
public T actualizar(T entidad) {
return em.merge(entidad);
}
public void eliminar(T entidad) {
em.remove(em.merge(entidad));
}
public T buscarPorId(Object id) {
if (this.claseEntidad == null) {
establecerClaseEntidad();
}
return em.find(this.claseEntidad, id);
}
public List<T> buscarTodos() {
if (this.claseEntidad == null) {
establecerClaseEntidad();
}
CriteriaBuilder builder = em.getCriteriaBuilder();
CriteriaQuery<T> query = builder.createQuery(this.claseEntidad);
query.select(query.from(this.claseEntidad));
return em.createQuery(query).getResultList();
}
}
package es.uvigo.esei.daa.dao;
import es.uvigo.esei.daa.entities.Pet;
public class PetDAO extends GenericDAO<Pet> {
}
package es.uvigo.esei.daa.entities;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.validation.constraints.Size;
@Entity
public class Pet implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
Long id;
@Size(min = 0, max = 30)
@Column(length = 30, nullable = false)
String name;
@Size(min = 0, max = 30)
@Column(length = 30, nullable = false)
private String kind;
@Size(min = 0, max = 30)
@Column(length = 30, nullable = false)
private String breed;
@ManyToOne
Person owner;
Pet(){}
public Pet(int id, String name, String kind, String breed, Person owner) {
this.setName(name);
this.setKind(kind);
this.setBreed(breed);
this.setOwner(owner);
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getKind() {
return kind;
}
public void setKind(String kind) {
this.kind = kind;
}
public String getBreed() {
return breed;
}
public void setBreed(String breed) {
this.breed = breed;
}
public Person getOwner() {
return owner;
}
public void setOwner(Person owner) {
this.owner = owner;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = (int) (prime * result + id);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof Pet))
return false;
Pet other = (Pet) obj;
if (id != other.id)
return false;
return true;
}
}
package es.uvigo.esei.daa.rest;
import javax.inject.Inject;
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.Context;
import javax.ws.rs.core.GenericEntity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.core.UriInfo;
import java.net.URI;
import java.util.List;
import es.uvigo.esei.daa.dao.PetDAO;
import es.uvigo.esei.daa.entities.Pet;
@Path("/pets")
@Produces(MediaType.APPLICATION_JSON)
public class PetsResource {
@Inject PetDAO petDAO;
@Context
private UriInfo uriInfo;
public PetsResource() {
}
@GET
@Produces({MediaType.APPLICATION_JSON})
public Response searchPets() {
List<Pet> pets = petDAO.buscarTodos();
GenericEntity<List<Pet>> entidadJSON = new GenericEntity<List<Pet>>(pets) {};
return Response.ok(entidadJSON).build();
}
@GET
@Produces({MediaType.APPLICATION_JSON})
@Path("{id:[0­9]+}")
public Response buscarAutor(@PathParam("id") Long id) {
Pet pet = petDAO.buscarPorId(id);
if (pet != null) {
return Response.ok(pet).build();
} else {
return Response.status(Response.Status.NOT_FOUND).build();
}
}
@POST
@Consumes({MediaType.APPLICATION_JSON})
public Response createPet(Pet pet) {
try {
Pet newPet = petDAO.crear(pet);
URI newPetURI = uriInfo.getAbsolutePathBuilder().path(newPet.getId().toString()).build();
return Response.created(newPetURI).build();
} catch (Exception e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
}
@PUT
@Consumes({MediaType.APPLICATION_JSON})
@Path("{id:[0­9]+}")
public Response updatePet(Pet pet) {
try {
petDAO.actualizar(pet);
return Response.noContent().build();
} catch (Exception e) {
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).build();
}
}
@DELETE
@Path("{id:[0­9]+}")
public Response deletePet(@PathParam("id") Long id) {
Pet pet = petDAO.buscarPorId(id);
if (pet != null) {
petDAO.eliminar(pet);
return Response.noContent().build();
} else {
return Response.status(Response.Status.NOT_FOUND).build();
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment