Skip to content

Commit

Permalink
add new dto
Browse files Browse the repository at this point in the history
  • Loading branch information
laedanrex authored and Regzox committed Jan 15, 2024
1 parent 62bfdd4 commit 70c42d4
Show file tree
Hide file tree
Showing 43 changed files with 1,944 additions and 47,084 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.rest.client.BasePaginatingAndSortingRestClient;
import fr.gouv.vitamui.commons.rest.client.ExternalHttpContext;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import org.springframework.core.ParameterizedTypeReference;
Expand Down Expand Up @@ -231,10 +232,10 @@ public List<VitamUiOntologyDto> getExternalOntologyFieldsList(ExternalHttpContex
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, ArrayList.class).getBody();
}

public List<ResultsDto> findByPersistentIdentifier(String identifier, ExternalHttpContext context) {
public PersistentIdentifierResponseDto findByPersistentIdentifier(String identifier, ExternalHttpContext context) {
final HttpEntity<?> request = new HttpEntity<>(buildHeaders(context));
final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + RestApi.PERSISTENT_IDENTIFIER).queryParam("id", identifier);
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, ArrayList.class).getBody();
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.rest.client.ExternalHttpContext;
import fr.gouv.vitamui.commons.test.extension.ServerIdentityExtension;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand All @@ -54,7 +54,6 @@
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

import static org.mockito.ArgumentMatchers.any;
Expand Down Expand Up @@ -157,15 +156,15 @@ public void transferRequest_should_return_OK() {
public void findByPersistentIdentifier_ok() throws URISyntaxException {
// Given
String arkId = "ark:/225867/001a9d7db5eghxac";
List<ResultsDto> result = List.of(new ResultsDto());
PersistentIdentifierResponseDto result = new PersistentIdentifierResponseDto();
URI uri = new URI(archiveSearchExternalRestClient.getBaseUrl() + archiveSearchExternalRestClient.getPathUrl()
+ RestApi.PERSISTENT_IDENTIFIER + "?id=ark:/225867/001a9d7db5eghxac");
when(restTemplate.exchange(any(URI.class), any(HttpMethod.class), any(HttpEntity.class), any(Class.class)))
.thenReturn(new ResponseEntity<>(result, HttpStatus.OK));
// When
List<ResultsDto> units = archiveSearchExternalRestClient.findByPersistentIdentifier(arkId, defaultContext);
PersistentIdentifierResponseDto persistentIdentifierResponse = archiveSearchExternalRestClient.findByPersistentIdentifier(arkId, defaultContext);
// Then
Assertions.assertEquals(units, result);
Assertions.assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(ArrayList.class));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
import fr.gouv.vitamui.commons.api.exception.PreconditionFailedException;
import fr.gouv.vitamui.commons.api.logger.VitamUILogger;
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import io.swagger.annotations.Api;
Expand Down Expand Up @@ -270,13 +271,13 @@ public List<VitamUiOntologyDto> getExternalOntologiesList() {
}

@GetMapping(RestApi.PERSISTENT_IDENTIFIER)
public List<ResultsDto> findByPersistentIdentifier(
public PersistentIdentifierResponseDto findByPersistentIdentifier(
final @RequestParam(value = "id") String arkId
) {
LOGGER.debug("[EXTERNAL] : Get by persistent identifier {}", arkId);
List<ResultsDto> list = archivesSearchExternalService.findByPersistentIdentifier(arkId);
LOGGER.debug("[EXTERNAL] : list = {}", list);
return list;
PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalService.findByPersistentIdentifier(arkId);
LOGGER.debug("[EXTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@
import fr.gouv.vitamui.commons.api.dtos.VitamUiOntologyDto;
import fr.gouv.vitamui.commons.api.logger.VitamUILogger;
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import fr.gouv.vitamui.iam.security.client.AbstractResourceClientService;
Expand Down Expand Up @@ -205,7 +206,7 @@ public List<VitamUiOntologyDto> getExternalOntologiesList() {
return archiveInternalRestClient.getExternalOntologiesList(getInternalHttpContext());
}

public List<ResultsDto> findByPersistentIdentifier(String arkId) {
public PersistentIdentifierResponseDto findByPersistentIdentifier(String arkId) {
return archiveInternalRestClient.findByPersistentIdentifier(arkId, getInternalHttpContext());
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.rest.client.BasePaginatingAndSortingRestClient;
import fr.gouv.vitamui.commons.rest.client.InternalHttpContext;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import org.springframework.core.ParameterizedTypeReference;
Expand Down Expand Up @@ -259,10 +260,10 @@ public List<VitamUiOntologyDto> getExternalOntologiesList(final InternalHttpCont
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, ArrayList.class).getBody();
}

public List<ResultsDto> findByPersistentIdentifier(String identifier, final InternalHttpContext context) {
public PersistentIdentifierResponseDto findByPersistentIdentifier(String identifier, final InternalHttpContext context) {
final HttpEntity<?> request = new HttpEntity<>(buildHeaders(context));
final UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(getUrl() + RestApi.PERSISTENT_IDENTIFIER).queryParam("id", identifier);
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, ArrayList.class).getBody();
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaDto;
import fr.gouv.vitamui.commons.rest.client.InternalHttpContext;
import fr.gouv.vitamui.commons.test.extension.ServerIdentityExtension;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import org.junit.jupiter.api.Assertions;
Expand Down Expand Up @@ -132,15 +133,15 @@ public void whenGetexportCsvArchiveUnitsByCriteria_Srvc_ok_ThenShouldReturnOK()
public void findByPersistentIdentifier_ok() throws URISyntaxException {
// Given
String arkId = "ark:/225867/001a9d7db5eghxac";
List<ResultsDto> result = List.of(new ResultsDto());
PersistentIdentifierResponseDto result = new PersistentIdentifierResponseDto();
URI uri = new URI(archivesSearchExternalRestClient.getBaseUrl() + archivesSearchExternalRestClient.getPathUrl()
+ RestApi.PERSISTENT_IDENTIFIER + "?id=ark:/225867/001a9d7db5eghxac");
when(restTemplate.exchange(any(URI.class), any(HttpMethod.class), any(HttpEntity.class), any(Class.class)))
.thenReturn(new ResponseEntity<>(result, HttpStatus.OK));
// When
List<ResultsDto> units = archivesSearchExternalRestClient.findByPersistentIdentifier(arkId, defaultContext);
PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalRestClient.findByPersistentIdentifier(arkId, defaultContext);
// Then
Assertions.assertEquals(units, result);
Assertions.assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(ArrayList.class));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@
import fr.gouv.vitamui.commons.api.exception.PreconditionFailedException;
import fr.gouv.vitamui.commons.api.logger.VitamUILogger;
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import fr.gouv.vitamui.iam.security.service.InternalSecurityService;
Expand Down Expand Up @@ -340,13 +341,13 @@ public List<VitamUiOntologyDto> getExternalOntologyFieldsList() throws IOExcepti
}

@GetMapping(RestApi.PERSISTENT_IDENTIFIER)
public List<ResultsDto> findByPersistentIdentifier(
public PersistentIdentifierResponseDto findByPersistentIdentifier(
final @RequestParam("id") String arkId
) throws VitamClientException {
LOGGER.debug("[INTERNAL] : Get by persistent identifier {}", arkId);
List<ResultsDto> list = archiveInternalService.findByPersitentIdentifier(arkId, externalParametersService.buildVitamContextFromExternalParam());
LOGGER.debug("[INTERNAL] : list = {}", list);
return list;
PersistentIdentifierResponseDto persistentIdentifierResponse = archiveInternalService.findByPersitentIdentifier(arkId, externalParametersService.buildVitamContextFromExternalParam());
LOGGER.debug("[INTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
package fr.gouv.vitamui.archive.internal.server.service;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.node.ArrayNode;
Expand All @@ -52,14 +51,14 @@
import fr.gouv.vitamui.commons.api.dtos.VitamUiOntologyDto;
import fr.gouv.vitamui.commons.api.exception.BadRequestException;
import fr.gouv.vitamui.commons.api.exception.InternalServerException;
import fr.gouv.vitamui.commons.api.exception.NotFoundException;
import fr.gouv.vitamui.commons.api.exception.UnexpectedDataException;
import fr.gouv.vitamui.commons.api.exception.UnexpectedSettingsException;
import fr.gouv.vitamui.commons.api.logger.VitamUILogger;
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import fr.gouv.vitamui.commons.api.utils.OntologyServiceReader;
import fr.gouv.vitamui.commons.vitam.api.access.PersistentIdentifierService;
import fr.gouv.vitamui.commons.vitam.api.access.UnitService;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import fr.gouv.vitamui.commons.vitam.api.model.UnitTypeEnum;
Expand Down Expand Up @@ -94,6 +93,7 @@ public class ArchiveSearchInternalService {
private static final VitamUILogger LOGGER =
VitamUILoggerFactory.getInstance(ArchiveSearchInternalService.class);
private static final String ARCHIVE_UNIT_DETAILS = "$results";
private static final String HISTORY = "$history";
public static final String DSL_QUERY_PROJECTION = "$projection";
public static final String DSL_QUERY_FILTER = "$filter";
public static final String DSL_QUERY_FACETS = "$facets";
Expand Down Expand Up @@ -458,14 +458,12 @@ public List<VitamUiOntologyDto> readExternalOntologiesFromFile(Integer tenantId)
return OntologyServiceReader.readExternalOntologiesFromFile(tenantId, ontologiesFilePath);
}

public List<ResultsDto> findByPersitentIdentifier(String identifier, VitamContext vitamContext) throws VitamClientException {
public PersistentIdentifierResponseDto findByPersitentIdentifier(String identifier, VitamContext vitamContext) throws VitamClientException {
LOGGER.debug("Persistent identifier : {}", identifier);
RequestResponse<JsonNode> response = persistentIdentifierService.findUnitsByPersistentIdentifier(identifier, vitamContext);
String results = response.toJsonNode()
.get(ARCHIVE_UNIT_DETAILS).toString();
try {
return objectMapper.readValue(results, new TypeReference<List<ResultsDto>>() {
});
PersistentIdentifierResponseDto persistentIdentifierResponseDto = objectMapper.readValue(response.toString(), PersistentIdentifierResponseDto.class);
return persistentIdentifierResponseDto;
} catch (JsonProcessingException e) {
LOGGER.error("Response not in godd format {}", e);
throw new VitamClientException("Unable to find the UA", e);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,11 @@
import fr.gouv.vitamui.commons.api.dtos.CriteriaValue;
import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaDto;
import fr.gouv.vitamui.commons.api.dtos.SearchCriteriaEltDto;
import fr.gouv.vitamui.commons.api.exception.NotFoundException;
import fr.gouv.vitamui.commons.api.utils.ArchiveSearchConsts;
import fr.gouv.vitamui.commons.test.utils.ServerIdentityConfigurationBuilder;
import fr.gouv.vitamui.commons.vitam.api.access.PersistentIdentifierService;
import fr.gouv.vitamui.commons.vitam.api.access.UnitService;
import fr.gouv.vitamui.commons.vitam.api.dto.ResultsDto;
import fr.gouv.vitamui.commons.vitam.api.dto.PersistentIdentifierResponseDto;
import fr.gouv.vitamui.commons.vitam.api.dto.VitamUISearchResponseDto;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
Expand Down Expand Up @@ -400,19 +399,35 @@ void getFinalFillingHoldingSchemeQueryWithAllProjectionFields() throws Exception
}

@Test
void findByPersitentIdentifier_OK() throws Exception {
void findByPersitentIdentifier_return_units() throws Exception {
// Given
String arkId = "ark:/22567/001a957db5eadaac";
when(persistentIdentifierService.findUnitsByPersistentIdentifier(eq(arkId), any(VitamContext.class)))
.thenReturn(responseFromFile("data/ark/unit_with_ark_id.json"));
// When
List<ResultsDto> resultsDto = archiveSearchInternalService.findByPersitentIdentifier(arkId, defaultVitamContext);
PersistentIdentifierResponseDto persistentIdentifierResponseDto = archiveSearchInternalService.findByPersitentIdentifier(arkId, defaultVitamContext);
// Then
verify(persistentIdentifierService).findUnitsByPersistentIdentifier(eq(arkId), eq(defaultVitamContext));
Assertions.assertThat(resultsDto.size()).isEqualTo(4);
Assertions.assertThat(resultsDto.get(0).getId()).isEqualTo("aeaqaaaaaaecg2hnabhluammhk7supyaaabq");
Assertions.assertThat(resultsDto.get(0).getPersistentIdentifier()).isNotEmpty();
Assertions.assertThat(resultsDto.get(0).getPersistentIdentifier().get(0).getPersistentIdentifierContent()).isEqualTo(arkId);
Assertions.assertThat(persistentIdentifierResponseDto.getResults().size()).isEqualTo(4);
Assertions.assertThat(persistentIdentifierResponseDto.getResults().get(0).getId()).isEqualTo("aeaqaaaaaaecg2hnabhluammhk7supyaaabq");
Assertions.assertThat(persistentIdentifierResponseDto.getResults().get(0).getPersistentIdentifier()).isNotEmpty();
Assertions.assertThat(persistentIdentifierResponseDto.getResults().get(0).getPersistentIdentifier().get(0).getPersistentIdentifierContent()).isEqualTo(arkId);
}

@Test
void findByPersitentIdentifier_return_history() throws Exception {
// Given
String arkId = "ark:/2778447/1234567xyz";
when(persistentIdentifierService.findUnitsByPersistentIdentifier(eq(arkId), any(VitamContext.class)))
.thenReturn(responseFromFile("data/ark/ark_id_purged_units.json"));
// When
PersistentIdentifierResponseDto persistentIdentifierResponseDto = archiveSearchInternalService.findByPersitentIdentifier(arkId, defaultVitamContext);
// Then
verify(persistentIdentifierService).findUnitsByPersistentIdentifier(eq(arkId), eq(defaultVitamContext));
Assertions.assertThat(persistentIdentifierResponseDto.getResults()).isEmpty();
Assertions.assertThat(persistentIdentifierResponseDto.getHistory().get(0).getId()).isEqualTo("aeaqaaaaaeechwidabqcqamm7fpntviaaaba");
Assertions.assertThat(persistentIdentifierResponseDto.getHistory().get(0).getPersistentIdentifier()).isNotEmpty();
Assertions.assertThat(persistentIdentifierResponseDto.getHistory().get(0).getPersistentIdentifier().get(0).getPersistentIdentifierContent()).isEqualTo(arkId);
}

@Test
Expand All @@ -422,10 +437,10 @@ void findByPersitentIdentifier_with_no_results_should_return_empty_list() throws
when(persistentIdentifierService.findUnitsByPersistentIdentifier(eq(arkId), any(VitamContext.class)))
.thenReturn(responseFromFile("data/ark/bad_ark_id.json"));
// When Then
List<ResultsDto> resultsDto = archiveSearchInternalService.findByPersitentIdentifier(arkId, defaultVitamContext);
PersistentIdentifierResponseDto persistentIdentifierResponseDto = archiveSearchInternalService.findByPersitentIdentifier(arkId, defaultVitamContext);
// Then
verify(persistentIdentifierService).findUnitsByPersistentIdentifier(eq(arkId), eq(defaultVitamContext));
Assertions.assertThat(resultsDto.size()).isEqualTo(0);
Assertions.assertThat(persistentIdentifierResponseDto.getResults().size()).isEqualTo(0);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"httpCode": 0,
"$hits": {
"total": 0,
"offset": 0,
"limit": 10000,
"size": 0
},
"$results": [],
"$facetResults": [],
"$history": [
{
"id": "aeaqaaaaaeechwidabqcqamm7fpntviaaaba",
"tenant": 1,
"version": 0,
"type": "Unit",
"operationId": "aeeaaaaaagechwidabt22amm7fqepwyaaaaq",
"operationType": "ELIMINATION_ACTION",
"operationLastPersistentDate": "2024-01-11T16:34:48.029",
"objectGroupId": "aebaaaaaaeechwidabqcqamm7fpns2yaaaaq",
"persistentIdentifier": [
{
"PersistentIdentifierType": "ark",
"PersistentIdentifierOrigin": null,
"PersistentIdentifierReference": null,
"PersistentIdentifierContent": "ark:/2778447/1234567xyz"
}
]
}
]
}
Loading

0 comments on commit 70c42d4

Please sign in to comment.