From 3bd40b6280f31e06bc3e8809ef82f8d0b85de992 Mon Sep 17 00:00:00 2001 From: Barbara Date: Tue, 10 Dec 2019 15:21:00 +0100 Subject: [PATCH] Added findAllStudios and findStudioById --- .../technikumwien/movies/MoviesService.java | 11 +++ .../technikumwien/movies/StudioResource.java | 71 +++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 MoviesWebApp/src/main/java/at/technikumwien/movies/StudioResource.java diff --git a/MoviesWebApp/src/main/java/at/technikumwien/movies/MoviesService.java b/MoviesWebApp/src/main/java/at/technikumwien/movies/MoviesService.java index 8637d60..dc182de 100644 --- a/MoviesWebApp/src/main/java/at/technikumwien/movies/MoviesService.java +++ b/MoviesWebApp/src/main/java/at/technikumwien/movies/MoviesService.java @@ -77,6 +77,17 @@ public class MoviesService { .getResultList(); } + public Studio findStudioById(long id) { + LOGGER.info("findStudioById() >> id=" + id); + + Studio studio = em.find(Studio.class, id); + if (studio == null) { + throw new EntityNotFoundException("can't find studio with id=" + id); + } + + return studio; + } + // TODO maybe check if the movie already exists? @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) public List save(List movies) { diff --git a/MoviesWebApp/src/main/java/at/technikumwien/movies/StudioResource.java b/MoviesWebApp/src/main/java/at/technikumwien/movies/StudioResource.java new file mode 100644 index 0000000..6685a84 --- /dev/null +++ b/MoviesWebApp/src/main/java/at/technikumwien/movies/StudioResource.java @@ -0,0 +1,71 @@ +package at.technikumwien.movies; + +import javax.annotation.security.RolesAllowed; +import javax.inject.Inject; +import javax.ws.rs.*; +import javax.ws.rs.core.Context; +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; + +@Path("/studio") +@RolesAllowed("MoviesUserRole") +public class StudioResource { + @Inject + private MoviesService moviesService; + + @Context + private UriInfo uriInfo; + + @GET + @Produces({ + MediaType.APPLICATION_JSON, + MediaType.APPLICATION_XML + }) + public List retrieveAll() { + return moviesService.findAllStudios(); + } + + @GET + @Produces({ + MediaType.APPLICATION_JSON, + MediaType.APPLICATION_XML + }) + @Path("/{id}") + public Studio retrieve(@PathParam("id") long id) { + return moviesService.findStudioById(id); + } +/* + @DELETE + @Path("/{id}") + public void delete(@PathParam("id") long id) { + moviesService.removeStudioById(id); + } + + @POST + @Consumes({ + MediaType.APPLICATION_JSON, + MediaType.APPLICATION_XML + }) + public Response create(Movie movie) { + movie.setId(null); // Make sure that a new movie is added, not overwriting existing one + List newMovies = moviesService.save(List.of(movie)); + + URI location = uriInfo.getAbsolutePathBuilder().path(newMovies.get(0).getId().toString()).build(); + + return Response.created(location).build(); + } + + @PUT + @Consumes({ + MediaType.APPLICATION_JSON, + MediaType.APPLICATION_XML + }) + @Path("/{id}") + public void update(@PathParam("id") long id, Movie movie) { + movie.setId(id); // Make sure that a new movie is added, not overwriting existing one + moviesService.save(List.of(movie)); + }*/ +}