From eb029f1156f5b0e62becf50678c3cbe5bf9ff897 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Sat, 24 Jun 2017 17:35:33 +0300 Subject: [PATCH] =?UTF-8?q?=D0=95=D1=81=D0=BB=D0=B8=20=D0=B2=D1=8B=D0=B1?= =?UTF-8?q?=D0=BE=D1=80=D0=BA=D0=B0=20=D0=BC=D0=B5=D0=BD=D1=8C=D1=88=D0=B5?= =?UTF-8?q?=2010=20=D1=84=D0=B8=D0=BB=D1=8C=D0=BC=D0=BE=D0=B2,=20=D1=82?= =?UTF-8?q?=D0=BE=20=D0=BF=D0=B0=D0=B3=D0=B8=D0=BD=D0=B0=D1=82=D0=BE=D1=80?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D0=BF=D0=BE=D0=BA=D0=B0=D0=B7=D1=8B=D0=B2?= =?UTF-8?q?=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kinosearch/kinosearch3/base/BaseRepository.java | 1 + .../kinosearch3/base/MongoDBRepository.java | 11 ++++++++++- .../kinosearch3/webpp/WebAppController.java | 9 +++++++-- .../kinosearch/kinosearch3/webpp/searchResult.ftl | 4 +++- 4 files changed, 21 insertions(+), 4 deletions(-) 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]
Ничего не найдено