Page History

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
h1. Modélisation

\\
Cette section présente une sorte de première analyse de     Ori-Oai-Vocabulary. Même si par rapport à l'implémentation qui en a été     faite, cette modélisation reste conceptuelle, elle permet de mieux     appréhender l'architecture de Ori-Oai-Vocabulary.

h2. Diagramme de classes

\\
Ce diagramme de classes se veut simple pour une bonne       compréhension de l'ensemble. Il ne présente pas un certain nombres       d'attributs et surtout de classes qui sont d'ordre architectural       (provenant notamment de Esup-Commons).

!classes.dia.png|thumbnail!

h3. Quelques Explications sur certaines classes

\\
{span:class=term}VocabularyService
{span}
{quote}
C'est cette classe qui est exposée via WebService aux               autres modules afin de permettre la consultation les différents               vocabulaires. L'exposition par WebService se fait par fichiers               de configuration (XFire + Spring)
Elle a en attributs une liste de VocabularyProviderManager               qu'elle consulte un par un dans l'ordre lorsqu'on lui demande un               vocabulaire. Si aucun vocabularyProviderManager ne peut               finalement répondre favorablement à la requête, une exception               est levée.
C'est cet objet qu'on propose de brancher sur un système               de cache via un fichier de configuration spring (cf               implémentation).
{quote}
{span:class=term}VocabularyProviderManager
{span}
{quote}
Cette classe construit les différents vocabulaires. Ces               vocabulaires ainsi construits sont exposés par               VocabularyService.
Cette classe correspond à la fois à la super classe des               différents VocabularyProviderManager et à une implémentation               simple d'un VocabularyProviderManager : elle fournit les               vocabulaires proposés par les différents VocabularyProvider               qu'elle a directement en attribut. Afin d'alléger les               configurations, on préfèrera plutôt utiliser directement un               DynamicVocabularyProviderManager.
{quote}
{span:class=term}DynamicVocabularyProviderManager
{span}
{quote}
Cette classe étend la classe de base               VocabularyProviderManager : elle permet simplement de ne pas               spécifier les VocabularyProvider en tant qu'attribut. On               spécifie simplement une targetClass (VocabularyProvider) et elle               récupère dynamiquement tous les VocabularyProvider déclarés dans               la configuration Spring.
{quote}
{span:class=term}RemoteVocabularyProviderManager
{span}
{quote}
Cette classe étend la classe de base               VocabularyProviderManager : elle permet de se connecter à un               VocabularyService pour en récupérer ses vocabulaires.
{quote}
{span:class=term}FileBrowserVocabularyProviderManager
{span}
{quote}
Cette classe étend la classe de base               VocabularyProviderManager : elle permet d'exposer les               vocabulaires présent dans un répertoire.
{quote}
{span:class=term}VocabularyProvider
{span}
{quote}
Un VocabularyProvider est un fournisseur de vocabulaires,               il propose une méthode getXmlStream qui               renvoie le vocabulaire produit sous format XML. Au niveau du               déploiement (configuration), il peut bien sûr y avoir plusieurs               instances de chaque classe de VocabularyProvider.
Chaque VocabularyProvider doit implémenter une méthode               getXmlStream qui doit retourner un InputStream.
{note}
On pourrait envisager de finalement modifier cela et                   demander à retourner un String plutôt qu'un InputStream afin                   que cela soit serializable et donc cacheable par une config                   spring/ehCache ... à voir ...
{note}
\_Les différents VocabularyProvider
disponibles\_
{span:class=term}SqlProvider
{span}
{quote}
Chargé de récupérer un vocabulaire via une requête                       SQL sur une base de données.
{quote}
{span:class=term}LdapVocabularyProvider
{span}
{quote}
Chargé de récupérer un vocabulaire via des                       recherches Ldap (le contenu des vocabulaires même sera                       sous forme de VCard).
{quote}
{span:class=term}OOVRemoteVocabularyProvider
{span}
{quote}
Chargé de récupérer un vocabulaire en appelant un                       autre module ORI-OAI-Vocabulary distant.
{quote}
{span:class=term}XmlStaticVocabularyProvider
{span}
{quote}
Chargé de récupérer un vocabulaire depuis un                       fichier statitique sur le système (dans le                       classpath).
{quote}
{span:class=term}XmlEditedVocabularyProvider [(non implémenté])
{span}
{quote}
Chargé de récupérer un vocabulaire qui est                       directement éditable/modifiable par des utilisateurs                       depuis un module Ori-Oai-Workflow configuré pour
{note}
(à étudier ...)
{note}
{quote}
{span:class=term}OriIndexerVocabularyProvider
{span}
{quote}
Chargé de récupérer un vocabulaire dynamiquement                       depuis un module ORI-OAI-Indexing.
{quote}
{span:class=term}MergingVocabularyProvider
{span}
{quote}
Utilise dom4j pour fusionner des vocabulaires en                       fonction d'un xpath spécifique au standard Vdex.                       VdexMergingService est donc capable de fusionner une                       liste de vocabulaires en un seul.
{quote}
{span:class=term}AlphabetVocabularyProvider
{span}
{quote}
Tri et catégorise (optionnel) par ordre                       alphabétique un vocabulaire. En fonction d'un paramètre                       treeDeep, les catégories seront données avec une                       profondeur donnée :
{code}
....
			<category id="A">
			    ....
			</category>
			<category id="B">
			    ....
			</category>
			    ....
{code}
Catégoriser des vocabulaires permet par exemple de                       lister dans le moteur de recherche les auteurs sous une                       forme de type Annuaire (liste des premières lettres des                       auteurs en premier niveau, puis listes des auteurs en                       deuxième niveau par exemple).
{quote}

{quote}