- package org.ntlab.citrusserver.resources;
-
- import javax.ws.rs.*;
- import javax.ws.rs.core.MediaType;
- import org.ntlab.citrusserver.entities.Book;
- import org.ntlab.citrusserver.repositories.PublicBookManager;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Component;
-
- import java.util.ArrayList;
-
- @Path("/public_books")
- @Component
-
- public class PublicBooksRest {
- private final PublicBookManager publicBookManager;
- @Autowired
- public PublicBooksRest(PublicBookManager pbm) {
- publicBookManager = pbm;
- }
-
- //公開されている本の一覧を返す
- @GET
- @Produces(MediaType.APPLICATION_JSON)
- public ArrayList<Book> getAllPublicBooks() {
- return publicBookManager.getAllPublicBooks();
- }
-
-
- //検索条件を指定して本を検索(アカウントかタイトルか両方 ソート可能)
- @Path("/search")
- @GET
- @Produces(MediaType.APPLICATION_JSON)
- public ArrayList<Book> searchBooksByTitleAndAccount(@QueryParam("search_title") String search_title, @QueryParam("search_account_id") String search_account_id,
- @QueryParam("sort_by") Integer sort_by) {
- if(sort_by == null) { //ソートしない場合
- if (search_title != null && search_account_id != null) { //タイトルとアカウントIDでの検索
- return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id);
- } else if (search_title != null) { //タイトルのみでの検索
- return publicBookManager.searchBooksByTitle(search_title);
- } else if (search_account_id != null) { //アカウントIDのみでの検索
- return publicBookManager.searchBooksByAccount(search_account_id);
- } else { //タイトルもアカウントIDもない場合(すべての本を返す)
- return publicBookManager.getAllPublicBooks();
- }
- } else { //ソートする場合
- if(search_title != null && search_account_id != null) { //タイトルとアカウントIDでの検索
- return publicBookManager.searchBooksByTitleAndAccount(search_title, search_account_id, sort_by);
- } else if(search_title != null) { //タイトルのみでの検索
- return publicBookManager.searchBooksByTitle(search_title, sort_by);
- } else if(search_account_id != null) { //アカウントIDのみでの検索
- return publicBookManager.searchBooksByAccount(search_account_id, sort_by);
- } else { //タイトルもアカウントIDもない場合(すべての本を返す)
- return publicBookManager.getAllPublicBooks(sort_by);
- }
- }
- }
-
- }