27 lines
1.2 KiB
Java
27 lines
1.2 KiB
Java
package eu.eudat.managers;
|
|
|
|
import eu.eudat.entities.DataEntity;
|
|
import eu.eudat.models.helpers.common.ColumnOrderings;
|
|
import eu.eudat.models.helpers.common.Ordering;
|
|
import eu.eudat.models.helpers.requests.TableRequest;
|
|
import eu.eudat.queryable.QueryableList;
|
|
|
|
public class PaginationManager {
|
|
|
|
public static <T extends DataEntity<T>> QueryableList<T> applyPaging(QueryableList<T> items, TableRequest tableRequest) throws Exception {
|
|
if(tableRequest.getOrderings()!=null) applyOrder(items,tableRequest);
|
|
if(tableRequest.getLength()!=null)items.take(tableRequest.getLength());
|
|
if(tableRequest.getOffset()!=null)items.skip(tableRequest.getOffset());
|
|
return items;
|
|
}
|
|
|
|
public static <T extends DataEntity<T>> void applyOrder(QueryableList<T> items, TableRequest tableRequest) throws Exception {
|
|
ColumnOrderings columnOrderings = tableRequest.getOrderings();
|
|
for(Ordering ordering:columnOrderings.getFieldOrderings()){
|
|
if(ordering.getType() == Ordering.OrderByType.ASC) items.orderByAsc(root -> root.get(ordering.getFieldName()));
|
|
if(ordering.getType() == Ordering.OrderByType.DESC) items.orderByDesc(root -> root.get(ordering.getFieldName()));
|
|
}
|
|
return;
|
|
}
|
|
}
|