JaliosXperience
fr en
Path > Home > Forums > French Forum
Link

Détecter la modification d'une publication dans un DataController

Vincent Wozniak - on 9/1/10 at 2:43 PM

Bonjour,

Dans un DataController, je souhaite détecter si la Data vient d'être modifiée, c'est à dire si un de ses champs a évolué par rapport à l'état intial lors de l'ouverture du formulaire.

Pour obtenir la donnée "précédente", j'utilise ce code :

Data prevData = channel.getData(data.getId());

Malgré une modification du titre de la Data, le test suivant retourne toujours "true"

prevData.equals(data);

Comment puis-je détecter une modification de la Data sans avoir à effectuer moi même la comparaison champ par champ ?

Cordialement,

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

Login   Home   fr en
JALIOS SA - SIREN 440 126 035