Package com.library.bookmanangement_library.resource

Source Code of com.library.bookmanangement_library.resource.BookResource

package com.library.bookmanangement_library.resource;

import java.net.URI;
import java.util.Date;

import javax.servlet.annotation.ServletSecurity;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import com.google.common.base.Optional;
import com.jayway.jaxrs.hateoas.core.HateoasResponse;
import com.library.bookmanangement_library.beans.Book;
import com.library.bookmanangement_library.dao.BookRepository;

@SuppressWarnings("deprecation")
@Path(value = "/library/books")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class BookResource {
  /*
   * Title (Required field)
  Publication Date (Required field)
  Language (Optional field)
  Number of Pages (Optional field)
  Status {available, checked-out, in-queue, or lost} # default to ‘available’
   */
 
  @POST
  public Response createBook(@QueryParam("title") String title,
                 @QueryParam("publication-date") String publicationDate,
                 @QueryParam("language") Optional<String> language,
                 @QueryParam("num-pages") Optional<String> numberOfPages,
                 @QueryParam("status") String status)
  {
    Book book = new Book();
    book.setTitle(title);
    book.setPublicationDate(new Date(publicationDate));
    if(language.isPresent())
      book.setLanguage(language.get());
    if(numberOfPages.isPresent())
      book.setNumberOfPages(Integer.parseInt(numberOfPages.get()));
   
    book.setStatus("available");
    //Adding book to repository and generating unique ISBN
    String isbn=BookRepository.addBookToRepository(book);
    return Response.created(URI.create(isbn)).build();
  }
 
  @GET
  @Path(value = "/{isbn}")
  public Response viewBook(@PathParam("isbn") String isbn){
    Book book = BookRepository.getBookById(isbn);
      return HateoasResponse.ok(book).link(book.getIsbn(),
                         book.getTitle(),
                         book.getPublicationDate(),
                         book.getNumberOfPages(),
                         book.getLanguage(),
                         book.getStatus())
                                           .build();
  }
}
TOP

Related Classes of com.library.bookmanangement_library.resource.BookResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.