diff --git a/src/main/java/hdm/mi/growbros/service/PlantsService.java b/src/main/java/hdm/mi/growbros/service/PlantsService.java index 3702a2b360e297545863cfc3176aec1aed4f25e8..41ac6c79fa8b33bfd4326e3d8f239a4ef64f7750 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) {