Chapitre 9. Modificateurs de facettes

Table des matières
9.1. Organisation
9.2. Création

9.1. Organisation

Les modificateurs de facettes, représentés sous forme d'interfaces, permettent de représenter un état ou plus précisément de transmettre une information aux entités définissant la facette, information qui est ensuite utilisée afin de modifiée l'état interne de la facette considérée. Le contenu d'un modificateur est fixé à sa création, les données qu'il contient ne peuvent pas être modifiées à posteriori (ce sont des objets immuables). Lorsque l'on souhaite modifier l'état d'une facette, on crée donc le modificateur correspondant et on l'applique au possesseur de la facette. Le modificateur ne pourra plus être utilisé à moins qu'une même modification doive être appliquée à plusieurs entités. Il est également possible d'annuler un modificateur. Seul un modificateur précédemment appliqué pourra être annuler. En effet si on applique un modificateur de domaine [1..10], il ne sera pas autorisé de demander à annuler le modificateur de domaine [1..3] pour obtenir au final le domaine [4..10]. Si l'utilisateur souhiate définir le domaine [4..10], il devra tout d'abord annuler le modificateur de domaine [1..10], puis appliquer le modificateur de domaine [4..10]. Le domaine hérité étant également à prendre en compte.

Les interfaces des modificateurs de facettes sont organisées hiérarchiquement, comme illustré dans la figure Modificateurs de facettes. Il existe une interface pour chacune des facettes définies dans AROM. Ces interfaces pouvant être spécialisées. Les différentes implémentations d'AROM peuvent donc, et même doivent, définir des objets implémentant ces interfaces. Ces objets seront accessibles à l'utilisateur via un ModifierFactory qui permet d'obtenir des objets typés par DomainModifier ou DocumentationModifier. Par conséquent, les implémentations peuvent créer des nouveaux types de modificateurs de facettes dans la mesure où ceux-ci héritent d'une des quatre interfaces DomainModifier, InferenceModifier, ICModifier ou DocumentationModifier. En effet, une implémentation pourra définir un modificateur Expression Régulière, par exemple, applicable aux types String. Ce nouveau modificateur devra implémenter l'interface DomainModifier afin d'être accessible à l'utilisateur, voir la section suivante. Des interfaces plus spécifiques sont également données, telle que URLDocModifier, pour les modificateurs courants qui devraient être implémentés dans toutes les implémentations.

Figure 9-1. Modificateurs de facettes