Skip to content

Commit

Permalink
Story #12072: WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
marob committed Feb 6, 2024
1 parent cbb8e90 commit 9028b3e
Show file tree
Hide file tree
Showing 19 changed files with 194 additions and 47 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,6 @@ public class RestApi {
public static final String TRANSFER_ACKNOWLEDGMENT = "/transfer-acknowledgment";
public static final String BULK_OPERATION_THRESHOLDS = "/bulk-operations-thresholds";
public static final String UNITS_PERSISTENT_IDENTIFIER = "/units-by-persistent-identifier";
public static final String OBJECTS_PERSISTENT_IDENTIFIER = "/objects-by-persistent-identifier";

}
Original file line number Diff line number Diff line change
Expand Up @@ -238,4 +238,10 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String id
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

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

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
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.VitamUISearchResponseDto;
import org.junit.Assert;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -53,7 +54,6 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;
import java.util.Objects;

import static org.mockito.ArgumentMatchers.any;
Expand Down Expand Up @@ -168,4 +168,23 @@ public void findUnitsByPersistentIdentifier_ok() throws URISyntaxException {
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

// FIXME
@Test
public void findObjectsByPersistentIdentifier_ok() throws URISyntaxException {
// FIXME
Assert.fail();
// Given
String arkId = "ark:/225867/001a9d7db5eghxac";
PersistentIdentifierResponseDto result = new PersistentIdentifierResponseDto();
URI uri = new URI(archiveSearchExternalRestClient.getBaseUrl() + archiveSearchExternalRestClient.getPathUrl()
+ RestApi.UNITS_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
PersistentIdentifierResponseDto persistentIdentifierResponse = archiveSearchExternalRestClient.findUnitsByPersistentIdentifier(arkId, defaultContext);
// Then
Assertions.assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,20 @@ public List<VitamUiOntologyDto> getExternalOntologiesList() {
public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(
final @RequestParam(value = "id") String arkId
) {
LOGGER.debug("[EXTERNAL] : Get by persistent identifier {}", arkId);
LOGGER.debug("[EXTERNAL] : Get units by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalService.findUnitsByPersistentIdentifier(arkId);
LOGGER.debug("[EXTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

@GetMapping(RestApi.OBJECTS_PERSISTENT_IDENTIFIER)
public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(
final @RequestParam(value = "id") String arkId
) {
LOGGER.debug("[EXTERNAL] : Get objects by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalService.findObjectsByPersistentIdentifier(arkId);
LOGGER.debug("[EXTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -210,4 +210,8 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String ar
return archiveInternalRestClient.findUnitsByPersistentIdentifier(arkId, getInternalHttpContext());
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String arkId) {
return archiveInternalRestClient.findObjectsByPersistentIdentifier(arkId, getInternalHttpContext());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -266,4 +266,10 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String id
return restTemplate.exchange(uriBuilder.build().toUri(), HttpMethod.GET, request, PersistentIdentifierResponseDto.class).getBody();
}

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

}
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,6 @@
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.ArrayList;

import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.anyString;
Expand Down Expand Up @@ -143,4 +142,23 @@ public void findUnitsByPersistentIdentifier_ok() throws URISyntaxException {
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

// FIXME
@Test
public void findObjectsByPersistentIdentifier_ok() throws URISyntaxException {
// FIXME
Assertions.fail();
// Given
String arkId = "ark:/225867/001a9d7db5eghxac";
PersistentIdentifierResponseDto result = new PersistentIdentifierResponseDto();
URI uri = new URI(archivesSearchExternalRestClient.getBaseUrl() + archivesSearchExternalRestClient.getPathUrl()
+ RestApi.UNITS_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
PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchExternalRestClient.findUnitsByPersistentIdentifier(arkId, defaultContext);
// Then
Assertions.assertEquals(persistentIdentifierResponse, result);
verify(restTemplate).exchange(eq(uri), eq(HttpMethod.GET), any(HttpEntity.class), eq(PersistentIdentifierResponseDto.class));
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -344,10 +344,20 @@ public List<VitamUiOntologyDto> getExternalOntologyFieldsList() throws IOExcepti
public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(
final @RequestParam("id") String arkId
) throws VitamClientException {
LOGGER.debug("[INTERNAL] : Get by persistent identifier {}", arkId);
LOGGER.debug("[INTERNAL] : Get units by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archiveInternalService.findUnitsByPersistentIdentifier(arkId, externalParametersService.buildVitamContextFromExternalParam());
LOGGER.debug("[INTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

@GetMapping(RestApi.OBJECTS_PERSISTENT_IDENTIFIER)
public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(
final @RequestParam("id") String arkId
) throws VitamClientException {
LOGGER.debug("[INTERNAL] : Get objects by persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archiveInternalService.findObjectsByPersistentIdentifier(arkId, externalParametersService.buildVitamContextFromExternalParam());
LOGGER.debug("[INTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -469,4 +469,15 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String id
}
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String identifier, VitamContext vitamContext) throws VitamClientException {
LOGGER.debug("Persistent identifier : {}", identifier);
RequestResponse<JsonNode> response = persistentIdentifierService.findObjectsByPersistentIdentifier(identifier, vitamContext);
try {
return objectMapper.readValue(response.toString(), PersistentIdentifierResponseDto.class);
} catch (JsonProcessingException e) {
LOGGER.error("Response not in good format {}", e);
throw new VitamClientException("Unable to find the GOT", e);
}
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,8 @@
import fr.gouv.vitamui.commons.api.logger.VitamUILoggerFactory;
import lombok.RequiredArgsConstructor;

import javax.ws.rs.core.Response;

@RequiredArgsConstructor
public class PersistentIdentifierService {

Expand All @@ -58,4 +60,13 @@ public RequestResponse<JsonNode> findUnitsByPersistentIdentifier(final String id
throws VitamClientException {
return accessExternalClient.selectUnitsByUnitPersistentIdentifier(vitamContext, new SelectMultiQuery().getFinalSelectById(), identifier);
}

public RequestResponse<JsonNode> findObjectsByPersistentIdentifier(final String identifier, final VitamContext vitamContext)
throws VitamClientException {
final Response objectByObjectPersistentIdentifier =
accessExternalClient.getObjectByObjectPersistentIdentifier(vitamContext,
new SelectMultiQuery().getFinalSelectById(), identifier);
// FIXME: doesn't work currently as Vitam API is not returning a result ISO to Unit ARK search...
return RequestResponse.parseFromResponse(objectByObjectPersistentIdentifier);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -375,4 +375,17 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(
return persistentIdentifierResponse;
}

@ApiOperation(value = "Find the object associated to this ARK ID")
@GetMapping(RestApi.OBJECTS_PERSISTENT_IDENTIFIER)
@ResponseStatus(HttpStatus.OK)
public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(
final @RequestParam("id") String arkId
) throws PreconditionFailedException {
ParameterChecker.checkParameter(MANDATORY_IDENTIFIER, arkId);
LOGGER.debug("Find the GOT with persistent identifier {}", arkId);
final PersistentIdentifierResponseDto persistentIdentifierResponse = archivesSearchService.findObjectsByPersistentIdentifier(arkId, buildUiHttpContext());
LOGGER.debug("[INTERNAL] : persistentIdentifierResponse = {}", persistentIdentifierResponse);
return persistentIdentifierResponse;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -292,4 +292,8 @@ public PersistentIdentifierResponseDto findUnitsByPersistentIdentifier(String ar
return archiveSearchExternalRestClient.findUnitsByPersistentIdentifier(arkId, context);
}

public PersistentIdentifierResponseDto findObjectsByPersistentIdentifier(String arkId, ExternalHttpContext context) {
return archiveSearchExternalRestClient.findObjectsByPersistentIdentifier(arkId, context);
}

}
Loading

0 comments on commit 9028b3e

Please sign in to comment.