diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/RestResourceController.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/RestResourceController.java index d3b6ffef80..8261c3f36c 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/RestResourceController.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/RestResourceController.java @@ -153,9 +153,9 @@ public class RestResourceController implements InitializingBean { * * Note that the regular expression in the request mapping accept a number as identifier; * - * Please see {@link RestResourceController#findOne(String, String, String, String)} for findOne with string as + * Please see {@link RestResourceController#findOne(String, String, String)} for findOne with string as * identifier - * and see {@link RestResourceController#findOne(String, String, UUID, String)} for uuid as identifier + * and see {@link RestResourceController#findOne(String, String, UUID)} for uuid as identifier * * @param apiCategory * @param model @@ -185,9 +185,9 @@ public class RestResourceController implements InitializingBean { * * * - * Please see {@link RestResourceController#findOne(String, String, Integer, String)} for findOne with number as + * Please see {@link RestResourceController#findOne(String, String, Integer)} for findOne with number as * identifier - * and see {@link RestResourceController#findOne(String, String, UUID, String)} for uuid as identifier + * and see {@link RestResourceController#findOne(String, String, UUID)} for uuid as identifier * * @param apiCategory * @param model @@ -206,9 +206,9 @@ public class RestResourceController implements InitializingBean { * * Note that the regular expression in the request mapping accept a UUID as identifier; * - * Please see {@link RestResourceController#findOne(String, String, Integer, String)} for findOne with number as + * Please see {@link RestResourceController#findOne(String, String, Integer)} for findOne with number as * identifier - * and see {@link RestResourceController#findOne(String, String, String, String)} for string as identifier + * and see {@link RestResourceController#findOne(String, String, String)} for string as identifier * * @param apiCategory * @param model diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/converter/ConverterService.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/converter/ConverterService.java index 9f3615a13e..fb85a68f71 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/converter/ConverterService.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/converter/ConverterService.java @@ -29,6 +29,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider; import org.springframework.core.type.filter.AssignableTypeFilter; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.PageImpl; +import org.springframework.data.domain.Pageable; import org.springframework.hateoas.Resource; import org.springframework.stereotype.Component; import org.springframework.stereotype.Service; @@ -89,6 +92,25 @@ public class ConverterService { return restObject; } + /** + * Converts a list of model objects to a page of rest objects using the given {@link Projection}. + * + * @param modelObjects + * @param pageable + * @param total + * @param projection + * @param + * @param + * @return + */ + public Page toRestPage(List modelObjects, Pageable pageable, long total, Projection projection) { + return new PageImpl<>(modelObjects, pageable, total).map((object) -> toRest(object, projection)); + } + + public Page toRestPage(Page modelObjects, Projection projection) { + return modelObjects.map((object) -> toRest(object, projection)); + } + /** * Gets the converter supporting the given class as input. * diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AbstractDSpaceRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AbstractDSpaceRestRepository.java index 8b37dbf79c..a64f8af5df 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AbstractDSpaceRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AbstractDSpaceRestRepository.java @@ -7,6 +7,7 @@ */ package org.dspace.app.rest.repository; +import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.utils.ContextUtil; import org.dspace.app.rest.utils.Utils; import org.dspace.core.Context; @@ -26,6 +27,9 @@ public abstract class AbstractDSpaceRestRepository { @Autowired protected Utils utils; + @Autowired + protected ConverterService converter; + protected RequestService requestService = new DSpace().getRequestService(); protected Context obtainContext() { diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AuthorityRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AuthorityRestRepository.java index 4a5f72cd47..27bc585f11 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AuthorityRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/AuthorityRestRepository.java @@ -42,22 +42,21 @@ public class AuthorityRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { Set authoritiesName = cas.getChoiceAuthoritiesNames(); - List results = new ArrayList(); + List results = new ArrayList<>(); Projection projection = utils.obtainProjection(true); for (String authorityName : authoritiesName) { ChoiceAuthority source = cas.getChoiceAuthorityByAuthorityName(authorityName); AuthorityRest result = authorityUtils.convertAuthority(source, authorityName, projection); results.add(result); } - return new PageImpl(results, pageable, results.size()); + return new PageImpl<>(results, pageable, results.size()); } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BitstreamFormatRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BitstreamFormatRestRepository.java index da9a8176d3..9e9142cd63 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BitstreamFormatRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BitstreamFormatRestRepository.java @@ -15,7 +15,6 @@ import javax.servlet.http.HttpServletRequest; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.DSpaceBadRequestException; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.BitstreamFormatRest; @@ -43,14 +42,6 @@ public class BitstreamFormatRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List bit = null; try { - bit = bitstreamFormatService.findAll(context); + List bit = bitstreamFormatService.findAll(context); + return converter.toRestPage(utils.getPage(bit, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = utils.getPage(bit, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseEntryLinkRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseEntryLinkRepository.java index 8c4e2ca6d9..501d5202f1 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseEntryLinkRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseEntryLinkRepository.java @@ -14,7 +14,6 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.converter.BrowseEntryConverter; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.BrowseEntryRest; import org.dspace.app.rest.model.BrowseIndexRest; import org.dspace.app.rest.projection.Projection; @@ -45,9 +44,6 @@ import org.springframework.stereotype.Component; public class BrowseEntryLinkRepository extends AbstractDSpaceRestRepository implements LinkRestRepository { - @Autowired - ConverterService converter; - @Autowired BrowseEntryConverter browseEntryConverter; diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseIndexRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseIndexRestRepository.java index a643b3d3d1..83d230d503 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseIndexRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseIndexRestRepository.java @@ -7,18 +7,14 @@ */ package org.dspace.app.rest.repository; -import java.util.ArrayList; +import java.util.Arrays; import java.util.List; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.BrowseIndexRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.browse.BrowseException; import org.dspace.browse.BrowseIndex; import org.dspace.core.Context; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; @@ -30,9 +26,6 @@ import org.springframework.stereotype.Component; @Component(BrowseIndexRest.CATEGORY + "." + BrowseIndexRest.NAME) public class BrowseIndexRestRepository extends DSpaceRestRepository { - @Autowired - ConverterService converter; - @Override public BrowseIndexRest findOne(Context context, String name) { BrowseIndexRest bi = null; @@ -50,22 +43,12 @@ public class BrowseIndexRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List it = null; - List indexesList = new ArrayList(); - int total = 0; try { - BrowseIndex[] indexes = BrowseIndex.getBrowseIndices(); - total = indexes.length; - for (BrowseIndex bix : indexes) { - indexesList.add(bix); - } + List indexes = Arrays.asList(BrowseIndex.getBrowseIndices()); + return converter.toRestPage(indexes, pageable, indexes.size(), utils.obtainProjection(true)); } catch (BrowseException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(indexesList, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseItemLinkRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseItemLinkRepository.java index 6bd840f257..8692bd6804 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseItemLinkRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/BrowseItemLinkRepository.java @@ -14,7 +14,6 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.StringUtils; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.BrowseIndexRest; import org.dspace.app.rest.model.ItemRest; import org.dspace.app.rest.projection.Projection; @@ -31,7 +30,6 @@ import org.dspace.sort.SortException; import org.dspace.sort.SortOption; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Sort; @@ -47,8 +45,6 @@ import org.springframework.stereotype.Component; @Component(BrowseIndexRest.CATEGORY + "." + BrowseIndexRest.NAME + "." + BrowseIndexRest.ITEMS) public class BrowseItemLinkRepository extends AbstractDSpaceRestRepository implements LinkRestRepository { - @Autowired - ConverterService converter; @Autowired ScopeResolver scopeResolver; @@ -153,9 +149,7 @@ public class BrowseItemLinkRepository extends AbstractDSpaceRestRepository tmpResult.add((Item) bb); } - Page page = new PageImpl(tmpResult, pageResultInfo, binfo.getTotal()) - .map((object) -> converter.toRest(object, projection)); - return page; + return converter.toRestPage(tmpResult, pageResultInfo, binfo.getTotal(), projection); } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ClaimedTaskRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ClaimedTaskRestRepository.java index 248347ae0b..f0e1beff3c 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ClaimedTaskRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ClaimedTaskRestRepository.java @@ -18,7 +18,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.RESTAuthorizationException; import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; import org.dspace.app.rest.exception.UnprocessableEntityException; @@ -69,9 +68,6 @@ public class ClaimedTaskRestRepository extends DSpaceRestRepository findByUser(@Parameter(value = "uuid", required = true) UUID userID, Pageable pageable) { //FIXME this should be secured with annotation but they are currently ignored by search methods - List tasks = null; try { Context context = obtainContext(); EPerson currentUser = context.getCurrentUser(); @@ -111,16 +106,14 @@ public class ClaimedTaskRestRepository extends DSpaceRestRepository tasks = claimedTaskService.findByEperson(context, ep); + return converter.toRestPage(utils.getPage(tasks, pageable), utils.obtainProjection(true)); } else { throw new RESTAuthorizationException("Only administrators can search for claimed tasks of other users"); } } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Page page = utils.getPage(tasks, pageable) - .map((object) -> converter.toRest(object, utils.obtainProjection())); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CollectionRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CollectionRestRepository.java index 49d79c08b2..0e2165eeae 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CollectionRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CollectionRestRepository.java @@ -9,7 +9,6 @@ package org.dspace.app.rest.repository; import java.io.IOException; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; import java.util.UUID; import javax.servlet.ServletInputStream; @@ -19,7 +18,6 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.DSpaceBadRequestException; import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; import org.dspace.app.rest.exception.UnprocessableEntityException; @@ -38,7 +36,6 @@ import org.dspace.core.Constants; import org.dspace.core.Context; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.security.access.prepost.PreAuthorize; @@ -58,9 +55,6 @@ public class CollectionRestRepository extends DSpaceObjectRestRepository findAll(Context context, Pageable pageable) { - List it = null; - List collections = new ArrayList(); - int total = 0; try { - total = cs.countTotal(context); - it = cs.findAll(context, pageable.getPageSize(), pageable.getOffset()); - for (Collection c : it) { - collections.add(c); - } + long total = cs.countTotal(context); + List collections = cs.findAll(context, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(collections, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(collections, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @SearchRestMethod(name = "findAuthorizedByCommunity") public Page findAuthorizedByCommunity( @Parameter(value = "uuid", required = true) UUID communityUuid, Pageable pageable) { - Context context = obtainContext(); - List it = null; - List collections = new ArrayList(); try { + Context context = obtainContext(); Community com = communityService.find(context, communityUuid); if (com == null) { throw new ResourceNotFoundException( CommunityRest.CATEGORY + "." + CommunityRest.NAME + " with id: " + communityUuid + " not found"); } - it = cs.findAuthorized(context, com, Constants.ADD); - for (Collection c : it) { - collections.add(c); - } + List collections = cs.findAuthorized(context, com, Constants.ADD); + return converter.toRestPage(utils.getPage(collections, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Page page = utils.getPage(collections, pageable) - .map((object) -> converter.toRest(object, utils.obtainProjection())); - return page; } @SearchRestMethod(name = "findAuthorized") public Page findAuthorized(Pageable pageable) { - Context context = obtainContext(); - List it = null; - List collections = new ArrayList(); try { - it = cs.findAuthorizedOptimized(context, Constants.ADD); - for (Collection c : it) { - collections.add(c); - } + Context context = obtainContext(); + List collections = cs.findAuthorizedOptimized(context, Constants.ADD); + return converter.toRestPage(utils.getPage(collections, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Page page = utils.getPage(collections, pageable) - .map((object) -> converter.toRest(object, utils.obtainProjection())); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CommunityRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CommunityRestRepository.java index cf463f5cd9..c5aa6d07f4 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CommunityRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/CommunityRestRepository.java @@ -9,7 +9,6 @@ package org.dspace.app.rest.repository; import java.io.IOException; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; import java.util.UUID; import javax.servlet.ServletInputStream; @@ -33,7 +32,6 @@ import org.dspace.content.service.CommunityService; import org.dspace.core.Context; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.security.access.prepost.PreAuthorize; @@ -138,37 +136,25 @@ public class CommunityRestRepository extends DSpaceObjectRestRepository findAll(Context context, Pageable pageable) { - List it = null; - List communities = new ArrayList(); - int total = 0; try { - total = cs.countTotal(context); - it = cs.findAll(context, pageable.getPageSize(), pageable.getOffset()); - for (Community c : it) { - communities.add(c); - } + long total = cs.countTotal(context); + List communities = cs.findAll(context, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(communities, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(communities, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } // TODO: Add methods in dspace api to support pagination of top level // communities @SearchRestMethod(name = "top") public Page findAllTop(Pageable pageable) { - List topCommunities = null; try { - topCommunities = cs.findAllTop(obtainContext()); + List communities = cs.findAllTop(obtainContext()); + return converter.toRestPage(utils.getPage(communities, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Page page = utils.getPage(topCommunities, pageable) - .map((object) -> converter.toRest(object, utils.obtainProjection())); - return page; } // TODO: add method in dspace api to support direct query for subcommunities @@ -177,20 +163,17 @@ public class CommunityRestRepository extends DSpaceObjectRestRepository findSubCommunities(@Parameter(value = "parent", required = true) UUID parentCommunity, Pageable pageable) { Context context = obtainContext(); - List subCommunities = new ArrayList(); try { Community community = cs.find(context, parentCommunity); if (community == null) { throw new ResourceNotFoundException( CommunityRest.CATEGORY + "." + CommunityRest.NAME + " with id: " + parentCommunity + " not found"); } - subCommunities = community.getSubcommunities(); + List subCommunities = community.getSubcommunities(); + return converter.toRestPage(utils.getPage(subCommunities, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Page page = utils.getPage(subCommunities, pageable) - .map((object) -> converter.toRest(object, utils.obtainProjection())); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/DSpaceObjectRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/DSpaceObjectRestRepository.java index 5bf5af1193..c7a0082f1d 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/DSpaceObjectRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/DSpaceObjectRestRepository.java @@ -10,7 +10,6 @@ package org.dspace.app.rest.repository; import java.sql.SQLException; import java.util.UUID; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.converter.MetadataConverter; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.DSpaceObjectRest; @@ -38,9 +37,6 @@ public abstract class DSpaceObjectRestRepository dsoService, DSpaceObjectPatch dsoPatch) { this.dsoService = dsoService; diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java index a0cec8ec22..3d4c40649d 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EPersonRestRepository.java @@ -18,7 +18,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.exception.RESTAuthorizationException; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.EPersonRest; import org.dspace.app.rest.model.patch.Patch; @@ -31,7 +30,6 @@ import org.dspace.eperson.EPerson; import org.dspace.eperson.service.EPersonService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; @@ -112,22 +110,13 @@ public class EPersonRestRepository extends DSpaceObjectRestRepository findAll(Context context, Pageable pageable) { - List epersons = null; - int total = 0; try { - if (!authorizeService.isAdmin(context)) { - throw new RESTAuthorizationException( - "The EPerson collection endpoint is reserved to system administrators"); - } - total = es.countTotal(context); - epersons = es.findAll(context, EPerson.EMAIL, pageable.getPageSize(), pageable.getOffset()); + long total = es.countTotal(context); + List epersons = es.findAll(context, EPerson.EMAIL, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(epersons, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(epersons, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } /** @@ -143,18 +132,15 @@ public class EPersonRestRepository extends DSpaceObjectRestRepository findByName(@Parameter(value = "q", required = true) String q, Pageable pageable) { - List epersons = null; - int total = 0; try { Context context = obtainContext(); - epersons = es.search(context, q, pageable.getOffset(), pageable.getOffset() + pageable.getPageSize()); - total = es.searchResultCount(context, q); + long total = es.searchResultCount(context, q); + List epersons = es.search(context, q, pageable.getOffset(), + pageable.getOffset() + pageable.getPageSize()); + return converter.toRestPage(epersons, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Page page = new PageImpl<>(epersons, pageable, total) - .map((object) -> converter.toRest(object, utils.obtainProjection())); - return page; } /** diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EntityTypeRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EntityTypeRestRepository.java index 8c635a1946..c20388ad0c 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EntityTypeRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/EntityTypeRestRepository.java @@ -10,9 +10,7 @@ package org.dspace.app.rest.repository; import java.sql.SQLException; import java.util.List; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.EntityTypeRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.content.EntityType; import org.dspace.content.service.EntityTypeService; import org.dspace.core.Context; @@ -31,9 +29,6 @@ public class EntityTypeRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List entityTypeList = null; try { - entityTypeList = entityTypeService.findAll(context); + List entityTypes = entityTypeService.findAll(context); + return converter.toRestPage(utils.getPage(entityTypes, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = utils.getPage(entityTypeList, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } public Class getDomainClass() { diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java index 5d6636abe0..e8f0ec9a54 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/GroupRestRepository.java @@ -27,7 +27,6 @@ import org.dspace.eperson.Group; import org.dspace.eperson.service.GroupService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; @@ -97,18 +96,13 @@ public class GroupRestRepository extends DSpaceObjectRestRepository findAll(Context context, Pageable pageable) { - List groups = null; - int total = 0; try { - total = gs.countTotal(context); - groups = gs.findAll(context, null, pageable.getPageSize(), pageable.getOffset()); + long total = gs.countTotal(context); + List groups = gs.findAll(context, null, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(groups, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl(groups, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/HarvestedCollectionRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/HarvestedCollectionRestRepository.java index 4ace76bbe9..ad153a5ddc 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/HarvestedCollectionRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/HarvestedCollectionRestRepository.java @@ -17,7 +17,6 @@ import javax.servlet.ServletInputStream; import javax.servlet.http.HttpServletRequest; import com.fasterxml.jackson.databind.ObjectMapper; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.converter.HarvestedCollectionConverter; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.HarvestTypeEnum; @@ -46,9 +45,6 @@ public class HarvestedCollectionRestRepository extends AbstractDSpaceRestReposit @Autowired HarvestedCollectionConverter harvestedCollectionConverter; - @Autowired - ConverterService converter; - public HarvestedCollectionRest findOne(Collection collection) throws SQLException { Context context = obtainContext(); diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRelationshipLinkRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRelationshipLinkRepository.java index 08f2c62f8e..4c76dc2274 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRelationshipLinkRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRelationshipLinkRepository.java @@ -13,7 +13,6 @@ import java.util.UUID; import javax.annotation.Nullable; import javax.servlet.http.HttpServletRequest; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.ItemRest; import org.dspace.app.rest.model.RelationshipRest; import org.dspace.app.rest.projection.Projection; @@ -24,7 +23,6 @@ import org.dspace.content.service.RelationshipService; import org.dspace.core.Context; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Component; @@ -42,9 +40,6 @@ public class ItemRelationshipLinkRepository extends AbstractDSpaceRestRepository @Autowired ItemService itemService; - @Autowired - ConverterService converter; - //@PreAuthorize("hasPermission(#itemId, 'ITEM', 'READ')") public Page getItemRelationships(@Nullable HttpServletRequest request, UUID itemId, @@ -61,8 +56,7 @@ public class ItemRelationshipLinkRepository extends AbstractDSpaceRestRepository Integer offset = pageable == null ? null : pageable.getOffset(); int total = relationshipService.countByItem(context, item); List relationships = relationshipService.findByItem(context, item, limit, offset); - return new PageImpl<>(relationships, pageable, total) - .map((object) -> converter.toRest(object, projection)); + return converter.toRestPage(relationships, pageable, total, projection); } catch (SQLException e) { throw new RuntimeException(e); } diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRestRepository.java index 1d1d2ffcce..dba7f61e2d 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ItemRestRepository.java @@ -40,7 +40,6 @@ import org.dspace.core.Context; import org.dspace.util.UUIDUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.security.access.prepost.PreAuthorize; @@ -100,21 +99,17 @@ public class ItemRestRepository extends DSpaceObjectRestRepository findAll(Context context, Pageable pageable) { - Iterator it = null; - List items = new ArrayList(); - int total = 0; try { - total = is.countTotal(context); - it = is.findAll(context, pageable.getPageSize(), pageable.getOffset()); + long total = is.countTotal(context); + Iterator it = is.findAll(context, pageable.getPageSize(), pageable.getOffset()); + List items = new ArrayList<>(); while (it.hasNext()) { - Item i = it.next(); - items.add(i); + items.add(it.next()); } + return converter.toRestPage(items, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - return new PageImpl<>(items, pageable, total).map((object) -> converter.toRest(object, projection)); } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataFieldRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataFieldRestRepository.java index ebb7562d70..b61737549f 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataFieldRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataFieldRestRepository.java @@ -21,7 +21,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.DSpaceBadRequestException; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.MetadataFieldRest; @@ -54,12 +53,6 @@ public class MetadataFieldRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List metadataField = null; try { - metadataField = metadataFieldService.findAll(context); + List metadataFields = metadataFieldService.findAll(context); + return converter.toRestPage(utils.getPage(metadataFields, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = utils.getPage(metadataField, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } @SearchRestMethod(name = "bySchema") public Page findBySchema(@Parameter(value = "schema", required = true) String schemaName, Pageable pageable) { - Context context = obtainContext(); - List metadataFields = null; try { + Context context = obtainContext(); MetadataSchema schema = metadataSchemaService.find(context, schemaName); if (schema == null) { return null; } - metadataFields = metadataFieldService.findAllInSchema(context, schema); + List metadataFields = metadataFieldService.findAllInSchema(context, schema); + return converter.toRestPage(utils.getPage(metadataFields, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = utils.getPage(metadataFields, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataSchemaRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataSchemaRestRepository.java index b23787d80b..4c00de9b11 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataSchemaRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/MetadataSchemaRestRepository.java @@ -18,7 +18,6 @@ import javax.servlet.http.HttpServletRequest; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import com.google.gson.Gson; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.DSpaceBadRequestException; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.MetadataSchemaRest; @@ -46,12 +45,6 @@ public class MetadataSchemaRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List metadataSchema = null; try { - metadataSchema = metadataSchemaService.findAll(context); + List metadataSchemas = metadataSchemaService.findAll(context); + return converter.toRestPage(utils.getPage(metadataSchemas, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = utils.getPage(metadataSchema, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/PoolTaskRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/PoolTaskRestRepository.java index f1236ecb3b..dc0c6d910e 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/PoolTaskRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/PoolTaskRestRepository.java @@ -17,11 +17,9 @@ import javax.servlet.http.HttpServletRequest; import org.apache.log4j.Logger; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.RESTAuthorizationException; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.PoolTaskRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.authorize.AuthorizeException; import org.dspace.authorize.service.AuthorizeService; import org.dspace.content.service.ItemService; @@ -65,9 +63,6 @@ public class PoolTaskRestRepository extends DSpaceRestRepository findByUser(@Parameter(value = "uuid") UUID userID, Pageable pageable) { - List tasks = null; try { Context context = obtainContext(); //FIXME this should be secured with annotation but they are currently ignored by search methods @@ -106,7 +100,8 @@ public class PoolTaskRestRepository extends DSpaceRestRepository tasks = poolTaskService.findByEperson(context, ep); + return converter.toRestPage(utils.getPage(tasks, pageable), utils.obtainProjection(true)); } else { throw new RESTAuthorizationException("Only administrators can search for pool tasks of other users"); } @@ -115,10 +110,6 @@ public class PoolTaskRestRepository extends DSpaceRestRepository page = utils.getPage(tasks, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipRestRepository.java index a90be9b8f1..8ee25412fa 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipRestRepository.java @@ -9,7 +9,6 @@ package org.dspace.app.rest.repository; import java.io.IOException; import java.sql.SQLException; -import java.util.ArrayList; import java.util.LinkedList; import java.util.List; import java.util.UUID; @@ -20,7 +19,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.log4j.Logger; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; import org.dspace.app.rest.exception.UnprocessableEntityException; import org.dspace.app.rest.model.RelationshipRest; @@ -39,7 +37,6 @@ import org.dspace.core.Context; import org.dspace.eperson.EPerson; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.rest.webmvc.ResourceNotFoundException; import org.springframework.security.access.AccessDeniedException; @@ -53,7 +50,6 @@ public class RelationshipRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - int total = 0; - List relationships = new ArrayList<>(); try { - total = relationshipService.countTotal(context); - relationships = relationshipService.findAll(context, + long total = relationshipService.countTotal(context); + List relationships = relationshipService.findAll(context, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(relationships, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(relationships, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override @@ -343,10 +331,6 @@ public class RelationshipRestRepository extends DSpaceRestRepository page = new PageImpl<>(relationships, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; - + return converter.toRestPage(relationships, pageable, total, utils.obtainProjection(true)); } } diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipTypeRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipTypeRestRepository.java index 36f72b2fc7..9e88019fba 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipTypeRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/RelationshipTypeRestRepository.java @@ -10,9 +10,7 @@ package org.dspace.app.rest.repository; import java.sql.SQLException; import java.util.List; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.RelationshipTypeRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.content.RelationshipType; import org.dspace.content.service.RelationshipTypeService; import org.dspace.core.Context; @@ -30,9 +28,6 @@ public class RelationshipTypeRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List relationshipTypeList = null; try { - relationshipTypeList = relationshipTypeService.findAll(context); + List relationshipTypes = relationshipTypeService.findAll(context); + return converter.toRestPage(utils.getPage(relationshipTypes, pageable), utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = utils.getPage(relationshipTypeList, pageable) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ResourcePolicyRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ResourcePolicyRestRepository.java index 3ef2148f5a..0d0657dbbb 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ResourcePolicyRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/ResourcePolicyRestRepository.java @@ -9,10 +9,8 @@ package org.dspace.app.rest.repository; import java.sql.SQLException; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.exception.RepositoryMethodNotImplementedException; import org.dspace.app.rest.model.ResourcePolicyRest; -import org.dspace.app.rest.utils.Utils; import org.dspace.authorize.ResourcePolicy; import org.dspace.authorize.service.ResourcePolicyService; import org.dspace.core.Context; @@ -33,12 +31,6 @@ public class ResourcePolicyRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List sites = new ArrayList(); - int total = 1; try { - sites.add(sitesv.findSite(context)); + List sites = Arrays.asList(sitesv.findSite(context)); + return converter.toRestPage(sites, pageable, 1L, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl(sites, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/StatisticsRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/StatisticsRestRepository.java index 8f7d2b8a44..0838b65d18 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/StatisticsRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/StatisticsRestRepository.java @@ -13,7 +13,6 @@ import org.springframework.stereotype.Component; @Component(StatisticsSupportRest.CATEGORY + "." + StatisticsSupportRest.NAME) public class StatisticsRestRepository extends AbstractDSpaceRestRepository { - public StatisticsSupportRest getStatisticsSupport() { return new StatisticsSupportRest(); } diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionDefinitionRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionDefinitionRestRepository.java index 213991e144..c4ea1bc866 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionDefinitionRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionDefinitionRestRepository.java @@ -13,9 +13,7 @@ import java.util.UUID; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.SubmissionDefinitionRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.app.util.SubmissionConfig; import org.dspace.app.util.SubmissionConfigReader; import org.dspace.app.util.SubmissionConfigReaderException; @@ -23,9 +21,7 @@ import org.dspace.content.Collection; import org.dspace.content.factory.ContentServiceFactory; import org.dspace.content.service.CollectionService; import org.dspace.core.Context; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; @@ -41,9 +37,6 @@ public class SubmissionDefinitionRestRepository extends DSpaceRestRepository subConfs = submissionConfigReader.getAllSubmissionConfigs( pageable.getPageSize(), pageable.getOffset()); - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(subConfs, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; + return converter.toRestPage(subConfs, pageable, total, utils.obtainProjection(true)); } @PreAuthorize("hasAuthority('AUTHENTICATED')") diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionFormRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionFormRestRepository.java index efd09c031e..51b0075e17 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionFormRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionFormRestRepository.java @@ -7,19 +7,14 @@ */ package org.dspace.app.rest.repository; -import java.util.ArrayList; import java.util.List; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.SubmissionFormRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.app.util.DCInputSet; import org.dspace.app.util.DCInputsReader; import org.dspace.app.util.DCInputsReaderException; import org.dspace.core.Context; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; @@ -35,9 +30,6 @@ public class SubmissionFormRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List subConfs = new ArrayList(); - int total = inputReader.countInputs(); try { - subConfs = inputReader.getAllInputs(pageable.getPageSize(), pageable.getOffset()); + long total = inputReader.countInputs(); + List subConfs = inputReader.getAllInputs(pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(subConfs, pageable, total, utils.obtainProjection(true)); } catch (DCInputsReaderException e) { throw new IllegalStateException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(subConfs, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionPanelRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionPanelRestRepository.java index 456cd0e4f6..b9acb2ea32 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionPanelRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionPanelRestRepository.java @@ -10,18 +10,14 @@ package org.dspace.app.rest.repository; import java.util.ArrayList; import java.util.List; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.SubmissionDefinitionRest; import org.dspace.app.rest.model.SubmissionSectionRest; -import org.dspace.app.rest.projection.Projection; import org.dspace.app.util.SubmissionConfig; import org.dspace.app.util.SubmissionConfigReader; import org.dspace.app.util.SubmissionConfigReaderException; import org.dspace.app.util.SubmissionStepConfig; import org.dspace.core.Context; -import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.stereotype.Component; @@ -36,9 +32,6 @@ public class SubmissionPanelRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List subConfs = new ArrayList(); - subConfs = submissionConfigReader.getAllSubmissionConfigs(pageable.getPageSize(), pageable.getOffset()); - int total = 0; + List subConfs = submissionConfigReader.getAllSubmissionConfigs( + pageable.getPageSize(), pageable.getOffset()); + long total = 0; List stepConfs = new ArrayList<>(); for (SubmissionConfig config : subConfs) { total = +config.getNumberOfSteps(); @@ -69,10 +62,7 @@ public class SubmissionPanelRestRepository extends DSpaceRestRepository page = new PageImpl<>(stepConfs, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; + return converter.toRestPage(stepConfs, pageable, total, utils.obtainProjection(true)); } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionUploadRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionUploadRestRepository.java index 5c4a9012a5..db3672aa4a 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionUploadRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/SubmissionUploadRestRepository.java @@ -12,7 +12,6 @@ import java.util.List; import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.Logger; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.model.AccessConditionOptionRest; import org.dspace.app.rest.model.SubmissionUploadRest; import org.dspace.app.rest.projection.Projection; @@ -58,9 +57,6 @@ public class SubmissionUploadRestRepository extends DSpaceRestRepository wfs; - private SubmissionConfigReader submissionConfigReader; + private final SubmissionConfigReader submissionConfigReader; public WorkflowItemRestRepository() throws SubmissionConfigReaderException { submissionConfigReader = new SubmissionConfigReader(); @@ -113,37 +113,28 @@ public class WorkflowItemRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List witems = null; - int total = 0; try { - total = wis.countAll(context); - witems = wis.findAll(context, pageable.getPageNumber(), pageable.getPageSize()); + long total = wis.countAll(context); + List witems = wis.findAll(context, pageable.getPageNumber(), pageable.getPageSize()); + return converter.toRestPage(witems, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(witems, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @SearchRestMethod(name = "findBySubmitter") @PreAuthorize("hasAuthority('ADMIN')") public Page findBySubmitter(@Parameter(value = "uuid") UUID submitterID, Pageable pageable) { - List witems = null; - int total = 0; try { Context context = obtainContext(); EPerson ep = epersonService.find(context, submitterID); - witems = wis.findBySubmitter(context, ep, pageable.getPageNumber(), pageable.getPageSize()); - total = wis.countBySubmitter(context, ep); + long total = wis.countBySubmitter(context, ep); + List witems = wis.findBySubmitter(context, ep, pageable.getPageNumber(), + pageable.getPageSize()); + return converter.toRestPage(witems, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(witems, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/WorkspaceItemRestRepository.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/WorkspaceItemRestRepository.java index aad0badc03..9aa8df3492 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/WorkspaceItemRestRepository.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/repository/WorkspaceItemRestRepository.java @@ -24,7 +24,6 @@ import org.apache.commons.lang3.StringUtils; import org.apache.logging.log4j.Logger; import org.dspace.app.rest.Parameter; import org.dspace.app.rest.SearchRestMethod; -import org.dspace.app.rest.converter.ConverterService; import org.dspace.app.rest.converter.WorkspaceItemConverter; import org.dspace.app.rest.exception.DSpaceBadRequestException; import org.dspace.app.rest.model.ErrorRest; @@ -63,7 +62,6 @@ import org.dspace.submit.lookup.SubmissionLookupService; import org.dspace.submit.util.ItemSubmissionLookupDTO; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageImpl; import org.springframework.data.domain.Pageable; import org.springframework.data.rest.webmvc.json.patch.PatchException; import org.springframework.stereotype.Component; @@ -83,22 +81,25 @@ public class WorkspaceItemRestRepository extends DSpaceRestRepository findAll(Context context, Pageable pageable) { - List witems = null; - int total = 0; try { - total = wis.countTotal(context); - witems = wis.findAll(context, pageable.getPageSize(), pageable.getOffset()); + long total = wis.countTotal(context); + List witems = wis.findAll(context, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(witems, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(witems, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } //TODO @PreAuthorize("hasPermission(#submitterID, 'EPERSON', 'READ')") @SearchRestMethod(name = "findBySubmitter") public Page findBySubmitter(@Parameter(value = "uuid", required = true) UUID submitterID, Pageable pageable) { - List witems = null; - int total = 0; try { Context context = obtainContext(); EPerson ep = epersonService.find(context, submitterID); - witems = wis.findByEPerson(context, ep, pageable.getPageSize(), pageable.getOffset()); - total = wis.countByEPerson(context, ep); + long total = wis.countByEPerson(context, ep); + List witems = wis.findByEPerson(context, ep, pageable.getPageSize(), pageable.getOffset()); + return converter.toRestPage(witems, pageable, total, utils.obtainProjection(true)); } catch (SQLException e) { throw new RuntimeException(e.getMessage(), e); } - Projection projection = utils.obtainProjection(true); - Page page = new PageImpl<>(witems, pageable, total) - .map((object) -> converter.toRest(object, projection)); - return page; } @Override @@ -203,7 +194,6 @@ public class WorkspaceItemRestRepository extends DSpaceRestRepository!"); } - } catch (Exception e) { log.error(e.getMessage(), e); } diff --git a/dspace-server-webapp/src/main/java/org/dspace/app/rest/utils/Utils.java b/dspace-server-webapp/src/main/java/org/dspace/app/rest/utils/Utils.java index 60b7b1fa5e..590eef2329 100644 --- a/dspace-server-webapp/src/main/java/org/dspace/app/rest/utils/Utils.java +++ b/dspace-server-webapp/src/main/java/org/dspace/app/rest/utils/Utils.java @@ -436,6 +436,8 @@ public class Utils { return obtainProjection(false); } + + /** * Adds embeds or links for all class-level LinkRel annotations for which embeds or links are allowed. *