# 3.1. Introduction

## 3.1.1. But de cette documentation

L’objectif de cette documentation est de compléter la Javadoc pour ce module.

## 3.1.2. Utilitaires Commons

### 3.1.2.1. FileUtil

Cet utilitaire propose quelques méthodes pour manipuler des fichiers.

Attention : les méthodes « readFile » doivent être limitées en termes d’usage au strict minimum et pour des fichiers de petites tailles.

### 3.1.2.2. LocalDateUtil

Cet utilitaire propose quelques méthodes pour manipuler des dates avec la nouvelle classe LocalDateTime.

### 3.1.2.3. ServerIdentity

Cet utilitaire propose une implémentation de la carte d’identité de chaque service/serveur.

ServerIdentity contient le ServerName, le ServerRole, le siteId, serverId et le PlatformGlobalID

Pour une JVM, un seul ServerIdentity existe.

C’est un Common Private.

Par défaut cette classe est initialisée avec les valeurs suivantes : * ServerName (String) : hostname ou UnknownHostname si introuvable * ServerRole (String) : UnknownRole * ServerId (int): MAC adresse partielle comme entier (31 derniers bits de la MAC) * SiteId (int) : Id du site (entier entre 0 et 15) . Les serveurs de 2 régions informatiques (sites/salles) doivent avoir des Id différents * GlobalPlatformID (int) : nombre aggrégé du siteId et d’une partie du ServerId

Il est important que chaque server à son démarrage initialise les valeurs correctement.

    ServerIdentity serverIdentity = ServerIdentity.getInstance();
    serverIdentity.setName(name).setRole(role).setPlatformId(platformId);
    // or
    ServerIdentity.getInstance().setFromMap(map);
    // or
    ServerIdentity.getInstance().setFromPropertyFile(file);

Où name, role et platformID viennent d’un fichier de configuration par exemple.

#### 3.1.2.3.1. Usage

    ServerIdentity serverIdentity = ServerIdentity.getInstance();
    String name = serverIdentity.getName();
    String role = serverIdentity.getRole();
    int platformId = serverIdentity.getGlobalPlatformId();

#### 3.1.2.3.2. Les usages principaux

- GUID pour PlatformId
- Logger and Logbook pour tous les champs

### 3.1.2.4. SystemPropertyUtil

Cet utilitaire propose quelques méthodes pour manipuler les Propriétés héritées du Système, notamment celle déduites de « -Dxxxx » dans la ligne de commande Java.

Il intègre notamment : - String getVitamConfigFolder() - String getVitamDataFolder() - String getVitamLogFolder() - String getVitamTmpFolder()

Les répertoires sont par défaut : - Config = /vitam/conf - Data = /vitam/data - Log = /vitam/log - Tmp = /vitam/data/tmp

Ils peuvent être dynamiquement surchargés par une option au lancement du programme Java : - -Dvitam.config.folder=/path - -Dvitam.data.folder=/path - -Dvitam.log.folder=/path - -Dvitam.tmp.folder=/path

### 3.1.2.5. PropertiesUtils

Cet utilitaire propose quelques méthodes pour manipuler des fichiers de propriétés et notamment dans le répertoire Resources.

Il intègre notamment : - File getResourcesFile(String resourcesFile) qui retourne un File se situant dans « resources (classpath) /resourcesFile » - File findFile(String filename) qui retourne un File se situant dans l’ordre

> - Chemin complet donné par resourcesFile
> - Chemin complet donné par ConfigFolder + resourcesFile
> - Chemin complet dans resources (classpath) /resourcesFile

- File fileFromConfigFolder(String subpath) qui retourne un File se situant dans « ConfigFolder + subpath » (non checké)
- File fileFromDataFolder(String subpath) qui retourne un File se situant dans « DataFolder + subpath » (non checké)
- File fileFromLogFolder(String subpath) qui retourne un File se situant dans « LogFolder + subpath » (non checké)
- File fileFromTmpFolder(String subpath) qui retourne un File se situant dans « TmpFolder + subpath » (non checké)

### 3.1.2.6. BaseXXX

Cet utilitaire propose quelques méthodes pour manipuler des Base16, Base32 et Base64.

### 3.1.2.7. CharsetUtils

Cet utilitaire propose quelques méthodes pour la gestion des Charset.

### 3.1.2.8. ParametersChecker

Cet utilitaire propose quelques méthodes pour gérer la validité des arguments dans les méthodes.

### 3.1.2.9. SingletonUtil

Cet utilitaire propose quelques méthodes pour obtenir des Singletons.

### 3.1.2.10. StringUtils

Cet utilitaire propose quelques méthodes pour manipuler des String.

## 3.1.3. GUID

Cf chapitre dédié.

## 3.1.4. Logging

Cf chapitre dédié.

## 3.1.5. LRU

Cet utilitaire propose une implémentation en mémoire de Cache Last Recent Used.

Il est notamment utilisé dans la partie Metadata.

Son usage doit positionner une dimension maximale et un délai avant retrait :

- Les plus anciens sont supprimés lorsque la place manque
- Les plus anciens sont supprimés lorsque la méthode forceClearOldest() est appelé

## 3.1.6. Digest

Cet utilitaire propose les fonctionnalités de calculs d’empreintes selon différents formats.

Cf chapitre dédié.

## 3.1.7. Json

Cet utilitaire propose les fonctionnalités de manipulation de Json en utilisant Jackson.

Ce module propose une configuration par défaut pour Vitam.

## 3.1.8. Exception

L’exception parente Vitam VitamException s’y trouve. Toutes les exceptions Vitam en héritent.

## 3.1.9. Client

Le client parent Vitam BasicClient et son implémentation des méthodes commune AbstractClient s’y trouvent. Une configuration commune SSLClientConfiguration complète le client Vitam.