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 > QueryableList applyPaging(QueryableList 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 > void applyOrder(QueryableList 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; } }