Mes "Item" (objets métiers) sont généralement regroupés dans des collections et un item peut posséder une ou plusieurs propriété (de type collection) contenant des items enfants. Pour filtrer une collection, j'ai parfois besoin de spécifier un critère qui ne porte pas directement sur les items de la collection mais sur des items enfants (une ou deux hiérarchie plus bas).
Prenons un exemple : un item Contact possède une collection d'item Adresse. --> je veux tous les contacts ayant une adresse dans une Ville donnée.
J'aimerais savoir comment vous procédez pour répondre à ce cas dans un environnement déconnecté (on travaille sur les données chargées dans les classes métier sans recharger ces données à chaque nouveau filtre) et sans utiliser des colonnes calculées de DataTable.
Pour simplifier l'utilisation de filtres, je pense créer une classe qui hérite de celle de l'item parent, en lui ajoutant des propriétés spécifiques qui renvoient un booléen pour indiquer si des enfants correspondent aux critères du filtre ou pas (ou encore un Integer indiquant le total de ceux qui correspondent).
Le problème est de savoir comment obtenir la valeur de cette propriété !
Dans ce dernier cas je réfléchis encore à une bonne stratégie et souhaiterais connaître vos idées !
- Le plus simple serait de boucler sur chaque item enfants dans le Get de la propriété. Mais si cette solution est facile à coder, est-elle la plus efficace à l'exécution ?
- L'idéal ne serait-il pas que cette propriété soit mise à jour en temps réel à mesure que les données des items enfants sont modifiées ?
Partager