9.3. Métadata

9.3.1. Utilisation

9.3.1.1. Paramètres

9.3.1.2. Le client

Le client propose actuellement différentes méthodes : insert et selection des units, select des objectGroups.

Il faut ajouter la dependance au niveau de pom.xml

<dependency>
    <groupId>fr.gouv.vitam</groupId>
    <artifactId>metadata-client</artifactId>
    <version>${project.version}</version>
</dependency>

9.3.1.2.1. Créer le client metadata

En deux étapes :

  • chargement de la configuration en utilisant une des méthodes suivantes :
    • MetaDataClientFactory.changeMode(new ClientConfigurationImpl(server, port));
    • MetaDataClientFactory.changeMode(ConfigurationFilePath);)``
  • création du client
    final MetaDataClient metadataClient = MetaDataClientFactory.getInstance().getClient();

9.3.1.2.2. Accéder aux fonctionnalités

le client métadata fournit les foncitonnalités suivantes : insérer un ArchiveUnit, insérer un ObjectGroup et sélectionner un métadata (archiveUnit). Le détail de l’utilisation de chaque fonctionnalité est ci-dessous.
9.3.1.2.2.1. Insérer des ArchiveUnits
try {
        JsonNode result= metadataClient.insertUnit(JsonNode insertQuery)
} catch (InvalidParseOperationException e) {
                LOG.error("parsing error", e);
                throw e;
        } catch (MetaDataExecutionException e) {
                LOG.error("execution error", e);
                throw e;
        } catch (MetaDataDocumentSizeException e) {
                LOG.error("document size input error", e);
                throw e;
        } catch (MetaDataAlreadyExistException e) {
                LOG.error("data already exists error", e);
                throw e;
        } catch (MetaDataNotFoundException e) {
                LOG.error("not found parent/path error", e);
                throw e;
        }
}

Paramètre d’entrée est une requête DSL de type JsonNode, indiquant la requête sur la collection Unit.

Un exemple de la requête paramètrée est le suivant :

{
        "$root" : [],
        "$queries": [{ "$path": "aaaaa" }],
        "$filter": { },
        "$data": { "_id": "value" }
}

Cette fonction retourne une réponse de type JsonNode contenant les informations : code de retour en cas d’erreur, la requête effectuée sur la collection …

9.3.1.2.2.2. Insérer des ObjectGroups
try {
                JsonNode result= metadataClient.insertObjectGroup(JsonNode insertQuery)
        } catch (InvalidParseOperationException e) {
                        LOG.error("parsing error", e);
                        throw e;
                } catch (MetaDataExecutionException e) {
                        LOG.error("execution error", e);
                        throw e;
                } catch (MetaDataDocumentSizeException e) {
                        LOG.error("document size input error", e);
                        throw e;
                } catch (MetaDataAlreadyExistException e) {
                        LOG.error("data already exists error", e);
                        throw e;
                } catch (MetaDataNotFoundException e) {
                        LOG.error("not found parent/path error", e);
                        throw e;
                }

Paramètre d’entrée est une requête DSL de type JsonNode, indiquant la requête sur la collection ObjectGroup.

Un exemple de la requête paramètrée est le suivant :

{
    "$root" : [],
    "$queries": [{ "$exists": "value" }],
    "$filter": { },
    "$data": { "_id": "objectgroupValue" }
}

Cette fonction retourne une réponse de type JsonNode contenant les informations : code de retour en cas d’erreur, la requête effectuée sur la collection …

9.3.1.3. Sélection des ArchiveUnits

try {
    // return JsonNode
    jsonNode = metaDataClient.selectUnits(
        accessModuleBean != null ? accessModuleBean.getRequestDsl() : "");
    } catch (InvalidParseOperationException e) {
    LOG.error("parsing error", e);
    throw e;
    } catch (MetadataInvalidSelectException e) {
    LOG.error("invalid select", e);
    throw e;
    } catch (MetaDataDocumentSizeException e) {
    LOG.error("document size problem", e);
    throw e;
    } catch (MetaDataExecutionException e) {
    LOG.error("metadata execution problem", e);
    throw e;
    } catch (IllegalArgumentException e) {
    LOG.error("illegal argument", e);
    throw new AccessExecutionException();
    } catch (Exception e) {
    LOG.error("exeption thrown", e);
    throw e;
}

9.3.1.4. Sélection d’un ObjectGroup

try {
    JsonNode selectQuery;
    String objectGroupId;
    // return JsonNode
    jsonNode = metaDataClient.selectObjectGrouptbyId(selectQuery, objectGroupId);
} catch (InvalidParseOperationException e) {
    LOG.error("parsing error", e);
    throw e;
} catch (MetadataInvalidSelectException e) {
    LOG.error("invalid select", e);
    throw e;
} catch (MetaDataDocumentSizeException e) {
    LOG.error("document size problem", e);
    throw e;
} catch (MetaDataExecutionException e) {
    LOG.error("metadata execution problem", e);
    throw e;
} catch (IllegalArgumentException e) {
    LOG.error("illegal argument", e);
    throw new AccessExecutionException();
} catch (MetadataInvalidSelectException e) {
    LOG.error("invalid selection", e);
    throw new AccessExecutionException();
} catch (Exception e) {
    LOG.error("exeption thrown", e);
    throw e;
}