diff --git a/DLCM-Client/src/main/java/ch/dlcm/service/preingest/DepositClientService.java b/DLCM-Client/src/main/java/ch/dlcm/service/preingest/DepositClientService.java index cfb48b38281c4bffcee1f3ca5f9b481ec4eb4859..e080e877ccdcd3d8bc7ef10922271a2b32aac0a4 100644 --- a/DLCM-Client/src/main/java/ch/dlcm/service/preingest/DepositClientService.java +++ b/DLCM-Client/src/main/java/ch/dlcm/service/preingest/DepositClientService.java @@ -142,6 +142,13 @@ public class DepositClientService extends ResourceClientService<Deposit> { return CollectionTool.getList(jsonString, Deposit.class); } + public List<Deposit> findAllWithLightVersion(boolean lightVersion) { + final String url = this.getResourceUrl() + SIZE_PARAM + RestCollectionPage.MAX_SIZE_PAGE + "&lightVersion=" + lightVersion; + final RestTemplate restTemplate = this.getRestClientTool().getClient(this.getResourceUrl()); + final String jsonString = restTemplate.getForObject(url, String.class); + return CollectionTool.getList(jsonString, Deposit.class); + } + public List<Person> getContributors(String depositId) { return this.findAllLinkedResources(depositId, ResourceName.CONTRIBUTOR, Person.class); } diff --git a/DLCM-IntegrationTests/src/test/java/ch/dlcm/test/preingest/DepositAsAdminIT.java b/DLCM-IntegrationTests/src/test/java/ch/dlcm/test/preingest/DepositAsAdminIT.java index 2615aa55633a4dfade362549330b7b09deada506..c85ac606134576233ff8f3508996b5b96f1828a0 100644 --- a/DLCM-IntegrationTests/src/test/java/ch/dlcm/test/preingest/DepositAsAdminIT.java +++ b/DLCM-IntegrationTests/src/test/java/ch/dlcm/test/preingest/DepositAsAdminIT.java @@ -586,6 +586,32 @@ class DepositAsAdminIT extends AbstractPreingestIT { assertDoesNotThrow(() -> this.depositClientService.findAll()); } + @Test + void listWithParamsTest() { + final List<Deposit> depositList = this.depositClientService.findAll(); + // Check that organizational unit object has a value + if (!depositList.isEmpty()) { + assertNotNull(depositList.get(0).getOrganizationalUnit()); + assertEquals(depositList.get(0).getOrganizationalUnit().getResId(), depositList.get(0).getOrganizationalUnitId()); + } + + final List<Deposit> depositList2 = this.depositClientService.findAllWithLightVersion(false); + // Check that organizational unit object has a value + if (!depositList2.isEmpty()) { + assertNotNull(depositList2.get(0).getOrganizationalUnit()); + assertEquals(depositList2.get(0).getOrganizationalUnit().getResId(), depositList2.get(0).getOrganizationalUnitId()); + assertEquals(depositList, depositList2); + } + + final List<Deposit> depositList3 = this.depositClientService.findAllWithLightVersion(true); + // Check that organizational unit object has a value + if (!depositList3.isEmpty()) { + assertNotNull(depositList3.get(0).getOrganizationalUnitId()); + assertNull(depositList3.get(0).getOrganizationalUnit()); + } + + } + @Test void canListOnAnyAuthorizedOrgUnitsTest() { final OrganizationalUnit organizationalUnit = this.orgUnitITService.getTestOrganizationalUnitAsUser( diff --git a/DLCM-PreIngest/src/main/java/ch/dlcm/business/DepositService.java b/DLCM-PreIngest/src/main/java/ch/dlcm/business/DepositService.java index 52445534c7a54e46a3d2eeba562d43fb9a14cbb8..457953ebcc93786aa0cde479dccd5268479ff366 100644 --- a/DLCM-PreIngest/src/main/java/ch/dlcm/business/DepositService.java +++ b/DLCM-PreIngest/src/main/java/ch/dlcm/business/DepositService.java @@ -728,6 +728,14 @@ public class DepositService extends CompositeResourceService<Deposit> { return this.addComputedValues(depositPage); } + public Page<Deposit> findAllWithoutEmbeddedResources(Specification<Deposit> spec, Pageable pageable) { + final Specification<Deposit> completedSpec = this.addSpecificationFilter(spec); + Page<Deposit> results = this.itemRepository.findAll(completedSpec, pageable); + results.forEach(this::afterFind); + + return this.addComputedValues(results); + } + @Override public Deposit findOne(String id) { Deposit deposit = super.findOne(id); diff --git a/DLCM-PreIngest/src/main/java/ch/dlcm/controller/preingest/DepositController.java b/DLCM-PreIngest/src/main/java/ch/dlcm/controller/preingest/DepositController.java index be9b380809679186b1d4ee6223d47d1c971bf187..2667381ba83aa7dd38371c04a50b845ac29f6973 100644 --- a/DLCM-PreIngest/src/main/java/ch/dlcm/controller/preingest/DepositController.java +++ b/DLCM-PreIngest/src/main/java/ch/dlcm/controller/preingest/DepositController.java @@ -180,20 +180,33 @@ public class DepositController extends AbstractPackageController<DepositDataFile return super.get(depositId); } - @Override + + @GetMapping(params= "lightVersion") @PreAuthorize("@depositPermissionService.isAllowedToListWithoutOrgUnit(#search, 'LIST')") - public HttpEntity<RestCollection<Deposit>> list(@ModelAttribute Deposit search, Pageable pageable) { + public HttpEntity<RestCollection<Deposit>> list(@ModelAttribute Deposit search, @RequestParam boolean lightVersion, + Pageable pageable) { String organizationalUnitId = search.getOrganizationalUnitId(); final DepositSpecification filter = new DepositSpecification(search); if (StringTool.isNullOrEmpty(organizationalUnitId)) { filter.setOrganizationalUnits(this.getAuthorizedOrgUnitsForAuthenticatedUser()); } - final Page<Deposit> listItem = this.itemService.findAll(filter, pageable); + Page<Deposit> listItem; + if (lightVersion) { + listItem = ((DepositService) this.itemService).findAllWithoutEmbeddedResources(filter, pageable); + } else { + listItem = this.itemService.findAll(filter, pageable); + } this.setResourceLinks(listItem); final RestCollection<Deposit> collection = this.setCollectionLinks(listItem, pageable); return new ResponseEntity<>(collection, HttpStatus.OK); } + @Override + @PreAuthorize("@depositPermissionService.isAllowedToListWithoutOrgUnit(#search, 'LIST')") + public HttpEntity<RestCollection<Deposit>> list(@ModelAttribute Deposit search, Pageable pageable) { + return this.list(search, false, pageable); + } + @GetMapping(params = { "statusList" }) @PreAuthorize("@depositPermissionService.isAllowedToListWithoutOrgUnit(#search, 'LIST')") public HttpEntity<RestCollection<Deposit>> list(@ModelAttribute DepositDto search, Pageable pageable) {