1.2. Composant Access

1.2.1. Utilisation

1.2.1.1. Configuration

Le module d’access est configuré par un POM qui contient les informations nécessaires (nom du projet, numéro de version, identifiant du module parent, les sous modules (common, api, core, rest, client) de sous module d’access, etc..). Ces informations sont contenues dans le fichier pom.xml présent dans le répertoire de base du module Access.

<parent>
    <groupId>fr.gouv.vitam</groupId>
    <artifactId>parent</artifactId>
    <version>${vitam.version}</version>
</parent>

<artifactId>access</artifactId>
<packaging>pom</packaging>

<modules>
     <module>access-internal</module>
     <module>access-external</module>
</modules>

1.2.1.2. La factory

Afin de récupérer le client une factory a été mise en place.

// Récupération du client
final AccessClient client = AccessClientFactory.getInstance().getAccessOperationClient();

1.2.2. Le Mock

Par défaut, le client est en mode Mock. Il est possible de récupérer directement le mock.
Si les paramètres de productions sont introuvables, le client passe en mode Mock par défaut. Il est possible de récupérer directement le mock :
     // Changer la configuration du Factory client
     AccessClientFactory.setConfiguration(AccessClientType.MOCK);

     // Récupération explicite du client mock
     final AccessClient client = AccessClientFactory.getInstance().getAccessOperationClient();

- Pour instancier son client en mode Production :
// Changer la configuration du Factory
 AccessClientFactory.setConfiguration(AccessClientType.PRODUCTION);
// Récupération explicite du client
AccessClient client = AccessClientFactory.getInstance().getAccessOperationClient();

1.2.2.1. L’application rest

La méthode run avec l’argument de port permet aux tests unitaires de démarrer sur un port spécifique. Le premier argument contient le nom du fichier de configuration access.conf (il est templatiser avec ansible)

1.2.2.2. Le client

Le client propose actuellement plusieurs méthodes permettant de gérer la lecture et la modification des collections Units, LogbookOperation, ObjectGroup, Lifecycle (Unit et OG) et de gérer l’export DIP.

Le client récupère une réponse au format Json ou au format InputStream.

Le client AdminExternalClient implémente aussi l’interface OperationStatusClient ayant la méthode suivante:

RequestResponse<ItemStatus> getOperationProcessStatus(VitamContext vitamContext, String id) throws VitamClientException;

Cette interface est passée comme paramètre au client VitamPoolingClient.

1.2.3. Exemple d’usage générique

// Récupération du client dans le module ihm-demo
 AccessClient client = AccessClientFactory.getInstance().getAccessOperationClient();

// Récupération du dsl ( cf ihm-demo documentation)

// Recherche des Archives Units
JsonNode selectUnits(String dsl)

// Recherche des Units par Identification
 JsonNode selectUnitbyId(String sqlQuery, String id)

 //Recherche d'object par ID + un DSL selectObjectQuery
 JsonNode jsonObject = client.selectObjectbyId(String selectObjectQuery, String id);

 //Récupération d'un objet au format input stream
 InputStream stream = client.getObjectAsInputStream(String selectObjectQuery, String objectGroupId, String usage, int version);

1.2.4. Exemple d’usage générique

 // Récupération du client
private static final AccessClient ACCESS_CLIENT = AccessClientFactory.getInstance().getAccessOperationClient();

  ...

 // Autres Opérations

 public static JsonNode searchUnits(String parameters)
         throws AccessClientServerException, AccessClientNotFoundException, InvalidParseOperationException {
     return ACCESS_CLIENT.selectUnits(parameters);
 }