diff --git a/src/main/java/kinosearch/kinosearch3/base/BaseRepository.java b/src/main/java/kinosearch/kinosearch3/base/BaseRepository.java index 63cb193..432a6ab 100644 --- a/src/main/java/kinosearch/kinosearch3/base/BaseRepository.java +++ b/src/main/java/kinosearch/kinosearch3/base/BaseRepository.java @@ -8,5 +8,6 @@ import java.util.List; public interface BaseRepository { List findByTitle(String title, int page); + long countByTitle(String title); void save(CinemaDocument cinemaDocument); } diff --git a/src/main/java/kinosearch/kinosearch3/base/MongoDBRepository.java b/src/main/java/kinosearch/kinosearch3/base/MongoDBRepository.java index c2327e4..d004b30 100644 --- a/src/main/java/kinosearch/kinosearch3/base/MongoDBRepository.java +++ b/src/main/java/kinosearch/kinosearch3/base/MongoDBRepository.java @@ -26,13 +26,22 @@ public class MongoDBRepository implements BaseRepository { Query query = new Query(); final String regex = String.format(".*%s.*", Pattern.quote(title)); query.addCriteria(Criteria.where("title").regex(regex, "i")); - final int limitPage = 10; + final int limitPage = 10; //TODO лимиты надо вывести в общую константу query.skip(limitPage * (page-1)); query.limit(limitPage); logger.debug("query: {}", query.toString()); return mongoOperations.find(query, CinemaDocument.class); } + @Override + public long countByTitle(String title) { + Query query = new Query(); + final String regex = String.format(".*%s.*", Pattern.quote(title)); + query.addCriteria(Criteria.where("title").regex(regex, "i")); + logger.debug("query: {}", query.toString()); + return mongoOperations.count(query, CinemaDocument.class); + } + @Override public void save(CinemaDocument cinemaDocument) { mongoOperations.save(cinemaDocument); diff --git a/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java b/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java index 4b0af2a..0e760de 100644 --- a/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java +++ b/src/main/java/kinosearch/kinosearch3/webpp/WebAppController.java @@ -49,10 +49,15 @@ public class WebAppController { if (searchText.trim().isEmpty()) { return "redirect:/"; } - List cinemaDocuments = baseRepository.findByTitle(searchText.trim(), page); + searchText = searchText.trim(); + long count = baseRepository.countByTitle(searchText); + List cinemaDocuments = baseRepository.findByTitle(searchText, page); model.addAttribute("cindocs", cinemaDocuments); model.addAttribute("searchText", searchText); - model.addAttribute("page", page); + final int limitPage = 10; //TODO лимиты надо вывести в общую константу + if (count > 10) { + model.addAttribute("page", page); + } return "searchResult"; } diff --git a/src/main/resources/kinosearch/kinosearch3/webpp/searchResult.ftl b/src/main/resources/kinosearch/kinosearch3/webpp/searchResult.ftl index 95e871f..48d7233 100644 --- a/src/main/resources/kinosearch/kinosearch3/webpp/searchResult.ftl +++ b/src/main/resources/kinosearch/kinosearch3/webpp/searchResult.ftl @@ -3,7 +3,7 @@ [#include "search.comp.ftl"]
- +
[#if cindocs?has_content] [#list cindocs as cinema]
@@ -24,10 +24,12 @@
[/#list] + [#if page??] + [/#if] [#else]
Ничего не найдено