Newer
Older
CitrusServer / src / main / java / org / ntlab / citrusserver / resources / PublicBooksRest.java
  1. package org.ntlab.citrusserver.resources;
  2.  
  3. import javax.ws.rs.*;
  4. import javax.ws.rs.core.MediaType;
  5. import org.ntlab.citrusserver.entities.Book;
  6. import org.ntlab.citrusserver.repositories.PublicBookManager;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Component;
  9.  
  10. import java.util.ArrayList;
  11.  
  12. @Path("/public_books")
  13. @Component
  14.  
  15. public class PublicBooksRest {
  16. private final PublicBookManager publicBookManager;
  17. @Autowired
  18. public PublicBooksRest(PublicBookManager pbm) {
  19. publicBookManager = pbm;
  20. }
  21.  
  22. //公開されている本の一覧を返す
  23. @GET
  24. @Produces(MediaType.APPLICATION_JSON)
  25. public ArrayList<Book> getAllPublicBooks() {
  26. return publicBookManager.getAllPublicBooks();
  27. }
  28.  
  29.  
  30. //検索条件を指定して本を検索(アカウントかタイトルか両方 ソート可能)
  31. @Path("/search")
  32. @GET
  33. @Produces(MediaType.APPLICATION_JSON)
  34. public ArrayList<Book> searchBooksByTitleAndAccount(@QueryParam("search_title") String search_title, @QueryParam("search_account_id") String search_account_id,
  35. @QueryParam("sort_by") Integer sort_by) {
  36. if(sort_by == null) { //ソートしない場合
  37. if (search_title != null && search_account_id != null) { //タイトルとアカウントIDでの検索
  38. return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id);
  39. } else if (search_title != null) { //タイトルのみでの検索
  40. return publicBookManager.searchBooksByTitle(search_title);
  41. } else if (search_account_id != null) { //アカウントIDのみでの検索
  42. return publicBookManager.searchBooksByAccount(search_account_id);
  43. } else { //タイトルもアカウントIDもない場合(すべての本を返す)
  44. return publicBookManager.getAllPublicBooks();
  45. }
  46. } else { //ソートする場合
  47. if(search_title != null && search_account_id != null) { //タイトルとアカウントIDでの検索
  48. return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id, sort_by);
  49. } else if(search_title != null) { //タイトルのみでの検索
  50. return publicBookManager.searchBooksByTitle(search_title, sort_by);
  51. } else if(search_account_id != null) { //アカウントIDのみでの検索
  52. return publicBookManager.searchBooksByAccount(search_account_id, sort_by);
  53. } else { //タイトルもアカウントIDもない場合(すべての本を返す)
  54. return publicBookManager.getAllPublicBooks(sort_by);
  55. }
  56. }
  57. }
  58.  
  59. }