mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 01:54:22 +00:00
Modified converter service
This commit is contained in:
@@ -202,17 +202,18 @@ public class ConverterService {
|
||||
* @throws ClassCastException if the converter's return type is not compatible with the inferred return type.
|
||||
*/
|
||||
public <M, R> Page<R> toRestPage(List<M> modelObjects, Pageable pageable, Projection projection) {
|
||||
if (pageable == null) {
|
||||
pageable = utils.getPageable(pageable);
|
||||
}
|
||||
List<M> pageableObjects = utils.getPageObjectList(modelObjects, pageable);
|
||||
List<R> transformedList = new LinkedList<>();
|
||||
for (M modelObject : modelObjects) {
|
||||
for (M modelObject : pageableObjects) {
|
||||
R transformedObject = toRest(modelObject, projection);
|
||||
if (transformedObject != null) {
|
||||
transformedList.add(transformedObject);
|
||||
}
|
||||
}
|
||||
if (pageable == null) {
|
||||
pageable = utils.getPageable(pageable);
|
||||
}
|
||||
return utils.getPage(transformedList, pageable);
|
||||
return new PageImpl(transformedList, pageable, modelObjects.size());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@@ -165,6 +165,30 @@ public class Utils {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns list of objects for the current page.
|
||||
* @param fullList the complete list of objects
|
||||
* @param optionalPageable
|
||||
* @return list of page objects
|
||||
* @param <T>
|
||||
*/
|
||||
public <T> List<T> getPageObjectList(List<T> fullList, @Nullable Pageable optionalPageable) {
|
||||
Pageable pageable = getPageable(optionalPageable);
|
||||
int total = fullList.size();
|
||||
List<T> pageContent = null;
|
||||
if (pageable.getOffset() > total) {
|
||||
throw new PaginationException(total);
|
||||
} else {
|
||||
if (pageable.getOffset() + pageable.getPageSize() > total) {
|
||||
pageContent = fullList.subList(Math.toIntExact(pageable.getOffset()), total);
|
||||
} else {
|
||||
pageContent = fullList.subList(Math.toIntExact(pageable.getOffset()),
|
||||
Math.toIntExact(pageable.getOffset()) + pageable.getPageSize());
|
||||
}
|
||||
return pageContent;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convenience method to get a default pageable instance if needed.
|
||||
*
|
||||
|
Reference in New Issue
Block a user