# 16.2. workspace

le workspace est un module qui consiste à stocker le sip dans un container lors de traitement. Il y a un controle des paramètres (SanityChecker.checkJsonAll) transmis avec ESAPI.

## 16.2.1. 1- Consommer les services exposés par le module:

1.1 - Introduction :

on peut consommer les services via le sous module workspaceClient notament via la classe WorkspaceClient:
  Cette classe contient la liste des methodes suivantes :

- CreateContainer :

  > - Paramètres :
  > - containerName::String
  > - Retourner :

- getUriListDigitalObjectFromFolder :

  > - Paramètres :

  >   > - containerName::String
  >   > - folderName::String

  > - Retourner :

  >   > - List<URI>

Dans le cas echéant la method return une immuatable empty list.

> > - uncompressObject : cette méthode capable d’extracter des fichiers compressés toute en indiquant le type de l’archive, pour cette version (v0.9.0) supporte 3 types : zip, tar, tar.gz. Elle sauvgarde directement les fichiers extractés dans le workspace, notamment dans le container précisé lors de l’appel (containerName).

> >   > > - Paramètres :

> >   > - containerName::String : c’est le nom de container dans lequel on stocke les objets
> >   > - folderName::String : c’est le répertoire central (pour cette methode, c’est le sip)
> >   > - archiveType::String : c’est le nom ou le type de l’archive (exemple: application/zip , application/x-tar)
> >   > - compressedInputStream::InputStream : c’est le stream des objets compressés

> - retourner :

Dans le cas echéant (uncompress KO) la methode génère une exception avec un message internal server.

> - getObjectInformation :

>   > - Paramètres :

>   > - containerName::String

>   > - objectName::String

>   > - Retourner :

>   > - JsonNode

>   >   > La méthode retourne un Json contenant des informations sur un objet présent sur le workspace (et des exceptions en cas d’erreur : objet non existant, erreur server).

> - purgeOldFilesInContainer : Cette méthode permet de purger les anciens fichiers dans un conteneur (date de dernière modification date d’au moins une durée donnée)

>   > - Paramètres :
>   >     - containerName::String
>   >     - timeToLive::TimeToLive

## 16.2.2. 2.2 - Exemple d’utilisation

> D’abord il faut ajouter la dependence sur la pom.xml du projet.

    <dependencies>
        <groupId>fr.gouv.vitam</groupId>
        <artifactId>workspace-client<artifactId>
        <version>x.x.x</version>
    </dependencies>

Supposons que nous avons besoins d’extraire un SIP de format zip dans le workspace.

    InputStream inputStream=new InputStream(zippedFile);
    WorkspaceClientFactory.changeMode(WORKSPACE_URL);
    WorkspaceClientFactory.changeMode(FileConfiguration);
    WorkspaceClient workspaceClient = WorkspaceClientFactory().getInstance().getClient();
    workspaceClient.createContainer(containerName);
    workspaceClient.uncompressObject(containerName,"SIP","application/zip" inputStream);

## 16.2.3. 2- Configuration du pom

Configuration du pom avec maven-surefire-plugin permet le build sous jenkins. Il permet de configurer le chemin des resources de esapi dans le common private.