From abf5273adf127f30c994db58ffec5ecf738ed1c7 Mon Sep 17 00:00:00 2001 From: serega6531 Date: Sun, 19 May 2019 00:21:03 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D1=8B=20=D0=B8=D0=B7=D0=B1=D1=80=D0=B0=D0=BD=D0=BD?= =?UTF-8?q?=D1=8B=D0=B5=20=D1=81=D1=82=D1=80=D0=B8=D0=BC=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../packmate/controller/StreamController.java | 14 +++-- .../packmate/repository/StreamRepository.java | 33 +++++++++--- .../packmate/service/StreamService.java | 52 ++++++++++++++++--- 3 files changed, 80 insertions(+), 19 deletions(-) diff --git a/src/main/java/ru/serega6531/packmate/controller/StreamController.java b/src/main/java/ru/serega6531/packmate/controller/StreamController.java index 7880e48..2dd089c 100644 --- a/src/main/java/ru/serega6531/packmate/controller/StreamController.java +++ b/src/main/java/ru/serega6531/packmate/controller/StreamController.java @@ -27,14 +27,22 @@ public class StreamController { @PostMapping("/all") public List getStreams(@RequestBody Pagination pagination) { - return streamService.findAll(pagination); + if (pagination.isFavorites()) { + return streamService.findFavorites(pagination); + } else { + return streamService.findAll(pagination); + } } @PostMapping("/{port}") public List getStreams(@PathVariable int port, @RequestBody Pagination pagination) { final Optional serviceOptional = servicesService.findByPort(port); - if(serviceOptional.isPresent()) { - return streamService.findAllByService(pagination, serviceOptional.get()); + if (serviceOptional.isPresent()) { + if (pagination.isFavorites()) { + return streamService.findFavoritesByService(pagination, serviceOptional.get()); + } else { + return streamService.findAllByService(pagination, serviceOptional.get()); + } } else { return Collections.emptyList(); } diff --git a/src/main/java/ru/serega6531/packmate/repository/StreamRepository.java b/src/main/java/ru/serega6531/packmate/repository/StreamRepository.java index 1656024..c3c0a47 100644 --- a/src/main/java/ru/serega6531/packmate/repository/StreamRepository.java +++ b/src/main/java/ru/serega6531/packmate/repository/StreamRepository.java @@ -10,20 +10,37 @@ import java.util.List; public interface StreamRepository extends JpaRepository { - List findAllByIdGreaterThanAndFavorite(long streamId, boolean favorite, Pageable pageable); + List findAllByIdGreaterThanAndFavoriteIsTrue(long streamId, Pageable pageable); - List findAllByIdLessThanAndFavorite(long streamId, boolean favorite, Pageable pageable); + List findAllByIdLessThanAndFavoriteIsTrue(long streamId, Pageable pageable); - List findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable); + List findAllByIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable); - List findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(long streamId, boolean favorite, Pattern pattern, Pageable pageable); + List findAllByIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable); - List findAllByServiceAndIdGreaterThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable); + List findAllByServiceAndIdGreaterThanAndFavoriteIsTrue(CtfService service, long streamId, Pageable pageable); - List findAllByServiceAndIdLessThanAndFavorite(CtfService service, long streamId, boolean favorite, Pageable pageable); + List findAllByServiceAndIdLessThanAndFavoriteIsTrue(CtfService service, long streamId, Pageable pageable); - List findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable); + List findAllByServiceAndIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable); + + List findAllByServiceAndIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable); + + List findAllByIdGreaterThan(long streamId, Pageable pageable); + + List findAllByIdLessThan(long streamId, Pageable pageable); + + List findAllByIdGreaterThanAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable); + + List findAllByIdLessThanAndFoundPatternsContaining(long streamId, Pattern pattern, Pageable pageable); + + List findAllByServiceAndIdGreaterThan(CtfService service, long streamId, Pageable pageable); + + List findAllByServiceAndIdLessThan(CtfService service, long streamId, Pageable pageable); + + List findAllByServiceAndIdGreaterThanAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable); + + List findAllByServiceAndIdLessThanAndFoundPatternsContaining(CtfService service, long streamId, Pattern pattern, Pageable pageable); - List findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(CtfService service, long streamId, boolean favorite, Pattern pattern, Pageable pageable); } diff --git a/src/main/java/ru/serega6531/packmate/service/StreamService.java b/src/main/java/ru/serega6531/packmate/service/StreamService.java index f1d5255..ccd627b 100644 --- a/src/main/java/ru/serega6531/packmate/service/StreamService.java +++ b/src/main/java/ru/serega6531/packmate/service/StreamService.java @@ -168,20 +168,56 @@ public class StreamService { } } + public List findFavorites(Pagination pagination) { + PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id"); + + if (pagination.getPattern() != null) { // задан паттерн для поиска + if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы + return repository.findAllByIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page); + } else { // более старые стримы + return repository.findAllByIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page); + } + } else { + if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы + return repository.findAllByIdGreaterThanAndFavoriteIsTrue(pagination.getStartingFrom(), page); + } else { // более старые стримы + return repository.findAllByIdLessThanAndFavoriteIsTrue(pagination.getStartingFrom(), page); + } + } + } + + public List findFavoritesByService(Pagination pagination, CtfService service) { + PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id"); + + if (pagination.getPattern() != null) { // задан паттерн для поиска + if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы + return repository.findAllByServiceAndIdGreaterThanAndFavoriteIsTrueAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page); + } else { // более старые стримы + return repository.findAllByServiceAndIdLessThanAndFavoriteIsTrueAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page); + } + } else { + if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы + return repository.findAllByServiceAndIdGreaterThanAndFavoriteIsTrue(service, pagination.getStartingFrom(), page); + } else { // более старые стримы + return repository.findAllByServiceAndIdLessThanAndFavoriteIsTrue(service, pagination.getStartingFrom(), page); + } + } + } + public List findAll(Pagination pagination) { PageRequest page = PageRequest.of(0, pagination.getPageSize(), pagination.getDirection(), "id"); if (pagination.getPattern() != null) { // задан паттерн для поиска if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы - return repository.findAllByIdGreaterThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); + return repository.findAllByIdGreaterThanAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page); } else { // более старые стримы - return repository.findAllByIdLessThanAndFavoriteAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); + return repository.findAllByIdLessThanAndFoundPatternsContaining(pagination.getStartingFrom(), pagination.getPattern(), page); } } else { if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы - return repository.findAllByIdGreaterThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page); + return repository.findAllByIdGreaterThan(pagination.getStartingFrom(), page); } else { // более старые стримы - return repository.findAllByIdLessThanAndFavorite(pagination.getStartingFrom(), pagination.isFavorites(), page); + return repository.findAllByIdLessThan(pagination.getStartingFrom(), page); } } } @@ -191,15 +227,15 @@ public class StreamService { if (pagination.getPattern() != null) { // задан паттерн для поиска if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы - return repository.findAllByServiceAndIdGreaterThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); + return repository.findAllByServiceAndIdGreaterThanAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page); } else { // более старые стримы - return repository.findAllByServiceAndIdLessThanAndFavoriteAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.isFavorites(), pagination.getPattern(), page); + return repository.findAllByServiceAndIdLessThanAndFoundPatternsContaining(service, pagination.getStartingFrom(), pagination.getPattern(), page); } } else { if (pagination.getDirection() == Sort.Direction.ASC) { // более новые стримы - return repository.findAllByServiceAndIdGreaterThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page); + return repository.findAllByServiceAndIdGreaterThan(service, pagination.getStartingFrom(), page); } else { // более старые стримы - return repository.findAllByServiceAndIdLessThanAndFavorite(service, pagination.getStartingFrom(), pagination.isFavorites(), page); + return repository.findAllByServiceAndIdLessThan(service, pagination.getStartingFrom(), page); } } }