argos/dmp-backend/src/main/java/eu/eudat/managers/PaginationManager.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;
}
}