From ab380105eaede37bf9bdf00c0cc2ccbdead69aaa Mon Sep 17 00:00:00 2001 From: Hannah Holzheu <hh062@hdm-stuttgart.de> Date: Tue, 12 Dec 2023 11:51:18 +0100 Subject: [PATCH] added page Handling for getRandomPlants Endpoint #19 --- .../mi/growbros/service/PlantsService.java | 28 ++++++------------- 1 file changed, 9 insertions(+), 19 deletions(-) diff --git a/src/main/java/hdm/mi/growbros/service/PlantsService.java b/src/main/java/hdm/mi/growbros/service/PlantsService.java index 3702a2b..41ac6c7 100644 --- a/src/main/java/hdm/mi/growbros/service/PlantsService.java +++ b/src/main/java/hdm/mi/growbros/service/PlantsService.java @@ -13,10 +13,7 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; -import java.util.Random; +import java.util.*; @Service @RequiredArgsConstructor @@ -37,23 +34,16 @@ public class PlantsService { } public Collection<Plant> getRandomPlants(int numberOfPlants) { - List<Plant> allPlants = plantRepository.findAll(); + numberOfPlants= Math.min(MAX_PAGE_SIZE, numberOfPlants); + long plantCount= plantRepository.count(); + int lastPage= (int)(plantCount/numberOfPlants)-1; + int randomPage= (int) (Math.random()*lastPage); - if (allPlants.size() <= numberOfPlants) { - return allPlants; - } else { - List<Plant> randomPlants = new ArrayList<>(); - Random random = new Random(); + CustomPageDto<Plant> randomPlantPage= getPlants(randomPage, numberOfPlants); + List<Plant> allPlantsOfPage = new ArrayList<>(randomPlantPage.content()); + Collections.shuffle(allPlantsOfPage); - while (randomPlants.size() < numberOfPlants) { - Plant randomPlant = allPlants.get(random.nextInt(allPlants.size())); - - if (!randomPlants.contains(randomPlant)) { - randomPlants.add(randomPlant); - } - } - return randomPlants; - } + return allPlantsOfPage; } public Collection<Plant> getPlantsSearchedFor(SearchRequest searchRequest) { -- GitLab