Cześć
Potrzebuję zrobić JSONa, który zwróci mi z bazy danych wykaz folderów oraz obiektów typu .jpg i .mp3. Foldery mają być tak jak w menadżerach plików, czyli zawsze pierwsze, dopiero potem obiekty. Po jednych i drugich można sortować, np. do dacie, ale znowu - najpierw foldery, potem obiekty. Po stronie backendu mam też obsłużyć paginację strony.
Zrobiłem dwa zapytania SQL - jedno, aby pobierał mi tylko i wyłącznie foldery, drugie dla obiektów. W obu wrzucam obiekt Pageable. I tu pojawia się problem - nie wiem zbytnio jak obsłużyć zapytanie gdy liczba folderów na stronie będzie mniejsza dany rozmiar elementów i muszę pobrać obiekty. Zrobiłem tak jak poniżej i średnio to działa - dla pierwszej strony gdzie są i foldery i obiekty to działa, ale pomiędzy pierwszą a drugą stroną z obiektami "zjada" mi parę wyników. Czy ktoś ma może pomysł jak rozwiązać ten problem? Kod:
public List<File> getFolderAndObject(String sort, Long start, Long maxElement){
List<File> objectsMedia= null;
List<File> folders= null;
Pageable pageable = null;
Long countFolders = filesRepository.countFolders();
int sumFolders = 0;
double remainder = (countFolders / Double.valueOf(maxElement));
if (start < remainder) {
pageable = PageRequest.of(start, maxElement, Sort.by(sort));
folders = filesRepository.getFolders();
sumFolders = folders.size();
}
if (start + 1 - remainder > 0) {
int page= (int) Math.floor(remainder);
pageable = PageRequest.of((start - page), (maxElement-sumFolders), Sort.by(sort));
objectsMedia= filesRepository.getMedia(fillMediaType()); //w fillMediaType jest tworzona Lista z typami, które mają zostać pobrane
}
List<File> results = new Arraylist();
results.add(folders);
results.add(objectsMedia);
return results;
}