Analyse et rendu des Metadatas

On distingue 3 type de métadonnées :

  • les données et informations techniques du fichier
  • les éléments binaires supplémentaires extraits du fichier
  • les informations de contexte ajouté par un humain

MyDMAM est capable d’extraire ces données, suivant les capacités des moteurs utilisés.

C’est fait en trois grandes catégories d’étapes, et par rapport au type de fichier :

  • extraction du code mime type du fichier
  • suivant le résultat, appel des moteurs externes pour extraire les informations textes et structurés du fichier; c’est l’Analyse
  • suivant les résultats, appel des moteurs externes pour rendre/extraire/exporter des fichiers binaires qui seront stockés dans un espace partagé avec toutes les instances de l’application; c’est le Rendu.

Chaque analyse retourne un arbre Json qui contient les informations extraites. Elle retourne aussi un résumé de ces informations qui sera affiché à l’utilisateur. Tout ceci sera stocké, et de fait indexé, dans ES, dans un Container.

Chaque rendu produit une liste de fichiers qui sera rangé automatiquement, le MD5 de chaque fichier sera calculé et stocké à côté de chaque fichier. La présence de chaque fichier produit est renseigné dans ES, dans un RenderedContent, via RenderedFile.

Une fonction est capable d’assurer la cohérence entre la base et le stockage, afin notamment de purger les rendus orphelins, purge().

Certains rendus peuvent être déclarés en tant que Preview par le moteur de rendu: le fichier sera destiné à être envoyé à l’utilisateur par Play. Cela peut être une vignette ou un bas débit vidéo par exemple.

Les analyses peuvent se faire en cascade, et les rendus utilisent ces analyses pour produire ces fichiers. Tout est déclaré dans MetadataCenter.

Toute la structure des analyses et des rendus stockés en base est serialisée et de-serialisée automatiquement en Json via Gson. Les requêtes de bases sont transparents dans l’API.

Un moteur est l’ensemble:

  • d’un binaire appelé en ligne de commande
  • du code Java pour ces appels et pour traiter ces réponses, le Generator
  • d’un objet Java pour stocker la réponse, et qui servira de structure de donnée pour la de/sérialisation, l’Entry.

Certains paramètres peuvent être configurés ou être en dur.