3.10. Common format identification

3.10.1. But de cette documentation

Cette documentation indique comment utiliser le code commun du format identifier pour éventuellement ajouter un client pour un nouvel outil.

3.10.2. Outil Format Identifier

L’interface du format identifier est fr.gouv.vitam.common.format.identification.FormatIdentifier. Elle met à disposition 2 méthodes :

  • status() qui renvoie le statut du format identifer
  • analysePath(Path) qui renvoie une liste de formats potentiellement identifiés par l’outil.

Une implémentation Mock est présente : fr.gouv.vitam.common.format.identification.FormatIdentifierMock

Chaque nouvel outil doit implémenter l’interface :

public class FormatIdentifierSiegfried implements FormatIdentifier {
  @Override
  public FormatIdentifierInfo status() { //CALL THE TOOL AND GET THE STATUS }

  @Override
  public List<FormatIdentifierResponse> analysePath(Path path) { //CALL THE TOOL AND ANALYSE}
}

De plus, pour pouvoir être utilisé, l’outil doit être ajouté dans l’enum FormatIdentifierType :

public enum FormatIdentifierType {
   MOCK,
   SIEGFRIED
}

Une factory a été mise en place pour récupérer l’instance du client adaptée. En cas de nouvel outil, il faut la mettre à jour :

public class FormatIdentifierFactory {
  ......
  private FormatIdentifier instanciate(String formatIdentifierId){
    ...
    switch (infos.getType()) {
      case MOCK:
        return new FormatIdentifierMock();
      case SIEGFRIED:
        return new FormatIdentifierSiegfried(infos.getConfigurationProperties());
      .....
    }
  }
}

3.10.3. Configuration

Dans /vitam/conf du serveur applicatif où sont déployés les services d’identification de formats, il faut un fichier format-identifiers.conf. C’est un fichier YAML de configuration des services d’identification de format. Il possède les configurations des services que l’on souhaite déployer sur le serveur.

Le code suivant contient un exemple de toutes les configurations possibles :

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

Pour plus d’informations sur le sujet, voir la documentation sur l’exploitation.