From f7f4aeff48d3f77ef9200596905a0421e532e5f3 Mon Sep 17 00:00:00 2001 From: kamip123 Date: Wed, 17 Jan 2018 10:51:25 +0100 Subject: [PATCH] IS229 Person and User rest --- src/main/java/library/domain/Person.java | 6 +- src/main/java/library/domain/User.java | 7 +- .../library/web/rest/PersonResources.java | 93 ++++++++++++++++++ .../java/library/web/rest/UserResources.java | 94 +++++++++++++++++++ 4 files changed, 198 insertions(+), 2 deletions(-) create mode 100644 src/main/java/library/web/rest/PersonResources.java create mode 100644 src/main/java/library/web/rest/UserResources.java diff --git a/src/main/java/library/domain/Person.java b/src/main/java/library/domain/Person.java index d70bb16..16c8325 100644 --- a/src/main/java/library/domain/Person.java +++ b/src/main/java/library/domain/Person.java @@ -5,12 +5,16 @@ import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; +import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; @Entity -@NamedQuery(name = "persons.all", query="SELECT a FROM Person a") +@NamedQueries({ + @NamedQuery(name = "persons.all", query="SELECT p FROM Person p"), + @NamedQuery(name = "persons.id", query="SELECT p FROM Person p WHERE p.id=:id") +}) public class Person implements IHaveId{ diff --git a/src/main/java/library/domain/User.java b/src/main/java/library/domain/User.java index 5a603f0..9ae5279 100644 --- a/src/main/java/library/domain/User.java +++ b/src/main/java/library/domain/User.java @@ -4,10 +4,15 @@ import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; +import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.OneToOne; + @Entity -@NamedQuery(name = "users.all", query="SELECT a FROM User a") +@NamedQueries({ + @NamedQuery(name = "users.all", query="SELECT u FROM User u"), + @NamedQuery(name = "users.id", query="SELECT u FROM User u WHERE u.id=:id") +}) public class User implements IHaveId { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) diff --git a/src/main/java/library/web/rest/PersonResources.java b/src/main/java/library/web/rest/PersonResources.java new file mode 100644 index 0000000..070139c --- /dev/null +++ b/src/main/java/library/web/rest/PersonResources.java @@ -0,0 +1,93 @@ +package library.web.rest; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.websocket.server.PathParam; +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.Produces; +import javax.ws.rs.core.GenericEntity; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import library.dao.repos.IPersonRepository; +import library.domain.Person; + +@Path("/persons") +@Stateless +public class PersonResources { + + @PersistenceContext + EntityManager mgr; + + IPersonRepository _perons; + + public PersonResources() {} + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Response getAllPersons(){ + return + Response.ok(new GenericEntity>( + mgr.createNamedQuery("persons.all", Person.class).getResultList()){}) + .build(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + public Response insertPerson(Person person){ + mgr.persist(person); + return Response.ok().build(); + } + + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response getPerson(@PathParam("id") int id){ + Person result = mgr.createNamedQuery("persons.id", Person.class) + .setParameter("id", id) + .getSingleResult(); + + if(result == null) + return Response.status(404).build(); + + return Response.ok(result).build(); + } + + @DELETE + @Path("/{id}") + public Response delete(@PathParam("id") int id){ + Person result = mgr.createNamedQuery("persons.id", Person.class) + .setParameter("id", id) + .getSingleResult(); + if(result==null) + return Response.status(404).build(); + mgr.remove(result); + return Response.ok().build(); + } + + @PUT + @Path("/{id}") + @Consumes(MediaType.APPLICATION_JSON) + public Response update(@PathParam("id") int id, Person person){ + + Person result = mgr.createNamedQuery("persons.id", Person.class) + .setParameter("id", id) + .getSingleResult(); + if(result==null) + return Response.status(404).build(); + result.setName(person.getName()); + result.setSurname(person.getSurname()); + mgr.persist(result); + + return Response.ok().build(); + } + +} diff --git a/src/main/java/library/web/rest/UserResources.java b/src/main/java/library/web/rest/UserResources.java new file mode 100644 index 0000000..869aa9c --- /dev/null +++ b/src/main/java/library/web/rest/UserResources.java @@ -0,0 +1,94 @@ +package library.web.rest; + +import java.util.List; + +import javax.ejb.Stateless; +import javax.persistence.EntityManager; +import javax.persistence.PersistenceContext; +import javax.websocket.server.PathParam; +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.Produces; +import javax.ws.rs.core.GenericEntity; +import javax.ws.rs.core.MediaType; +import javax.ws.rs.core.Response; + +import library.dao.repos.IUserRepository; +import library.domain.User; + +@Path("/users") +@Stateless +public class UserResources { + + @PersistenceContext + EntityManager mgr; + + IUserRepository _users; + + public UserResources() {} + + @GET + @Produces(MediaType.APPLICATION_JSON) + public Response getAllUsers(){ + return + Response.ok(new GenericEntity>( + mgr.createNamedQuery("users.all", User.class).getResultList()){}) + .build(); + } + + @POST + @Consumes(MediaType.APPLICATION_JSON) + public Response insertUser(User user){ + mgr.persist(user); + return Response.ok().build(); + } + + @GET + @Path("/{id}") + @Produces(MediaType.APPLICATION_JSON) + public Response getUser(@PathParam("id") int id){ + User result = mgr.createNamedQuery("users.id", User.class) + .setParameter("id", id) + .getSingleResult(); + + if(result == null) + return Response.status(404).build(); + + return Response.ok(result).build(); + } + + @DELETE + @Path("/{id}") + public Response delete(@PathParam("id") int id){ + User result = mgr.createNamedQuery("users.id", User.class) + .setParameter("id", id) + .getSingleResult(); + if(result==null) + return Response.status(404).build(); + mgr.remove(result); + return Response.ok().build(); + } + + @PUT + @Path("/{id}") + @Consumes(MediaType.APPLICATION_JSON) + public Response update(@PathParam("id") int id, User user){ + + User result = mgr.createNamedQuery("users.id", User.class) + .setParameter("id", id) + .getSingleResult(); + if(result==null) + return Response.status(404).build(); + result.setLogin(user.getLogin()); + result.setPassword(user.getPassword()); + result.setEmail(user.getEmail()); + mgr.persist(result); + + return Response.ok().build(); + } + +}