13.3. Storage Engine

13.4. Modes ReadOnly / Write Protection

Le storage engine peut être déployé sur site primaire (ReadWrite) ou sur site secondaire (ReadOnly) L’annotation @WriteProtection est obligatoire pour toutes les ressources du Storage Engine.

13.5. Storage Engine Client

13.5.1. La factory

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

// Récupération du client
StorageClientFactory.changeMode(ClientConfiguration configuration)
StorageClient client = StorageClientFactory.getInstance().getClient();

A la demande l’instance courante du client, si un fichier de configuration storage-client.conf est présent dans le classpath le client en mode de production est envoyé, sinon il s’agit du mock.

13.5.1.1. Le Mock

En l’absence d’une configuration, le client est en mode Mock. Il est possible de récupérer directement le mock :

// Changer la configuration du Factory
StorageClientFactory.changeMode(null)
// Récupération explicite du client mock
StorageClient client = StorageClientFactory.getInstance().getClient();

13.5.1.2. Le mode de production

Pour instancier son client en mode Production :

// Changer la configuration du Factory
StorageClientFactory.setConfiguration(StorageConfiguration configuration);
// Récupération explicite du client
StorageClient client = StorageClientFactory.getInstance().getClient();

13.5.2. Les services

Le client propose actuellement des fonctionnalités nécéssitant toutes deux paramètres obligatoires :

  • l’identifiant du tenant (valeur de test « 0 »)
  • l’identifiant de la stratégie de stockage (valeur de test « default »)

Ces fonctionnalités sont :

  • la récupération des informations sur une offre de stockage pour une stratégie (disponibilité et capacité) :
JsonNode result = client.getStorageInformation("0", "default");
  • l’envoi d’un objet sur une offre de stockage selon une stratégie donnée :
    • pour les objets contenus dans le workspace (objets binaires) :
      StoredInfoResult result = storeFileFromWorkspace("0", "default", StorageCollectionType.OBJECTS, "aeaaaaaaaaaam7mxaaaamakv3x3yehaaaaaq");


- pour les metadatas Json (objectGroup, unit, logbook -- pas encore implémenté côté serveur) :
  • la vérification de l’existance d’un objet dans l’offre de stockage selon une stratégie donnée :
    • pour les conteneurs (pas encore implémenté côté serveur) :
     boolean exist = existsContainer("0", "default");

- pour les autres objets (object, objectGroup, unit, logbook -- implémenté côté serveur uniquement pour object) :
boolean exist = exists("0", "default", StorageCollectionType.OBJECTS, "aeaaaaaaaaaam7mxaaaamakv3x3yehaaaaaq");
  • la suppression d’un objet dans l’offre de stockage selon une stratégie donnée : - pour les conteneurs (pas encore implémenté côté serveur) :
boolean deleted = deleteContainer("0", "default");

 - pour les autres objets (object, objectGroup, unit, logbook -- implémenté côté serveur uniquement pour object) :
boolean deleted = delete("0", "default", StorageCollectionType.OBJECTS, "aeaaaaaaaaaam7mxaaaamakv3x3yehaaaaaq");
  • la récupération d’un objet (InputStream) contenu dans un container :
Response response = client.getContainerAsync("0", "default", "aeaaaaaaaaaam7mxaaaamakv3x3yehaaaaaq");
  • La récupération de la liste d’objets d’un certain type :
// Si cursorId non connu
Response response = listContainerObjects("default", DataCategory.OBJECT, null)
// Si cursorId connu
Response response = listContainerObjects("default", DataCategory.OBJECT, "idcursor")
  • La récupération du status est également disponible :
StatusMessage status = client.getStatus();