# 3.13.3. Format Identifiers

## 3.13.3.1. But de cette documentation

Cette documentation indique comment utiliser les services d’identification de format et comment créer sa propre implémentation.

## 3.13.3.2. Format Identifier

L’interface commune du service d’identification des formats est : fr.gouv.vitam.common.format.identification.FormatIdentifier.

Elle mets à disposition les méthodes suivantes :

- la récupération du status du logiciel auquel le service se connecte
- l’identification du format d’un fichier par le logiciel auquel le service se connecte

Les implémentations de l’interface sont :

- pour l’implémentation Mock : fr.gouv.vitam.common.format.identification.FormatIdentifierMock
- pour l’implémentation du logiciel Siegfried : fr.gouv.vitam.common.format.identification.FormatIdentifierSiegfried

Il sera possible d’en implémenter d’autres.

### 3.13.3.2.1. Implémentation Mock

Implémentation simple renvoyant des réponses statiques.

### 3.13.3.2.2. Implémentation Siegried

Implémentation basique utilisant un client HTTP.

## 3.13.3.3. Format Identifier Factory

Afin de récupérer l’implémentation configurée une factory a été mise en place.

### 3.13.3.3.1. Configuration

Cette factory charge un fichier de configuration « format-identifiers.conf ». Ce fichier contient les configurations des services d’identificaton de format identifiées par un id :

    siegfried-local:
            type: SIEGFRIED
            client: http
            host: localhost
            port: 55800
            rootPath: /root/path
            versionPath: /root/path/version/folder
            createVersionPath: false
    mock:
            type: MOCK

Le type est obligatoire et doit correspondre à l’enum fr.gouv.vitam.common.format.identification.model.FormatIdentifierType.

Les autres données sont spécifiques à chaque implémentation du service d’identification de format.

Si le fichier n’est pas présent au démarrage du serveur, aucune configuration n’est chargée par la factory.

### 3.13.3.3.2. Méthodes

Pour récupérer un service d’identification de formats :

    FormatIdentifier siegfried = FormatIdentifierFactory.getInstance().getFormatIdentifierFor("siegfried-local");

Pour ajouter une configuration mock :

    FormatIdentifierConfiguration mock = new FormatIdentifierConfiguration();
    siegfried.setType(FormatIdentifierType.MOCK);
    FormatIdentifierFactory.getInstance().addFormatIdentifier("mock", mock);

Pour ajouter une configuration siegfried :

    siegfried-local:
            type: SIEGFRIED
            client: http
            host: localhost
            port: 55800
            rootPath: /root/path
            versionPath: /root/path/version/folder
            createVersionPath: false

client: http correspond au client HTTP à lancer (ce dernier effectue des requêtes HTTP pour analyser les fichiers) host/port correspond au le serveur sur lequel Siegfried est installé. rootPath correspond au chemin vers les fichiers analysables par Siegfried. versionPath correspond au chemin vers un dossier vide utilisé pour requêter la version de Siegfried. createVersionPath : Si false le dossier doit pré-existant sur le server sur lequel tourne Siegfried. Sinon, le client siegfried tente de créer automatiquement le dossier en local.

    FormatIdentifierConfiguration siegfried = new FormatIdentifierConfiguration();
    siegfried.setType(FormatIdentifierType.SIEGFRIED);
    FormatIdentifierFactory.getInstance().addFormatIdentifier("siegfried-local", siegfried);

Pour supprimer une configuration :

    FormatIdentifierFactory.getInstance().removeFormatIdentifier("siegfried-local");