|
|
Frédéric Touitou -
on 9/1/10 at 3:49 PM
Bonjour,
Il n'existe pas de méthode directe permettant de déterminer si une donnée a changé ou non, en regard d'une donnée "de base".
Par contre, pour éviter comme vous le remarquez justement la comparaison champ par champ, vous pouvez procéder en calculant les signatures (MD5) des deux données (via la méthode Publication.computeSignature(), qui existe depuis JCMS 5.7.2), et en comparant les chaînes de caractères (String) retournées.
Attention cependant : jusqu'à la version 6.1.X incluse, la signature ne comprend que les champs spécifiques au type de donnée sous-jacent : les champs communs aux objets "Publication" ne sont pas inclus ! Ainsi par exemple, les catégories ne seront pas prises en compte dans la signature...
Si votre cas d'utilisation l'impose, il faut donc commencer par comparer les signatures, comme décrit ci-dessus puis, si elles sont identiques, comparer ensuite les champs de "Publication" qui vous concernent ; ces champs étant en nombre limité et connu, cela ne devrait pas s'avérer trop fastidieux.
Vous pouvez aussi, pour éviter les calculs systématiques des signatures, commencer par comparer directement les champs de "Publication" qui vous concernent : cela peut être plus efficace, car vous pouvez alors sortir de la comparaison à la première différence constatée, et ainsi éviter les calculs des signatures si l'un des champs de "Publication" a été modifié...
Bien cordialement,
Frédéric Touitou
|
|