Oui, vous pouvez étiqueter les versions dans un historique des versions avec les chaînes de votre choix. Mais JCR 2.0 les appelle "labels".
Tout d'abord, vous devez trouver le VersionHistory
pour un nœud particulier qui a été vérifié dans:
String path = ... // the path to the versioned node
VersionManager versionManager = session.getWorkspace().getVersionManager();
VersionHistory history = versionManager.getVersionHistory(path);
Ensuite, vous pouvez trouver le Version
spécifique que vous voulez étiqueter, soit par itérer sur toutes les versions, par obtenir la "version racine", ou obtenir la version de base. Je ne vais pas le montrer car il y a tellement de façons de le faire.
// Find the version ...
Version versionToBeLabeled = ...
Ensuite, vous pouvez ajouter une étiquette à cette version. Notez qu'une étiquette ne peut être utilisée qu'une seule fois dans l'historique des versions d'un seul noeud. Ainsi, lorsque vous ajoutez une étiquette, vous pouvez choisir de déplacer une étiquette existante (s'il y en a une) ou de lancer une exception. Voici le code qui se déplace si elle est déjà utilisé:
// Add a user-defined label to this version ...
String versionName = versionToBeLabeled.getName();
String versionLabel = "MyLabel";
boolean moveLabel = true;
VersionHistory.addVersionLabel(versionName, versionLabel, moveLabel);
Notez que les noms de version sont déterminées par la mise en œuvre JCR, alors que les étiquettes sont définies par l'utilisateur. Voilà pourquoi il est souvent très pratique d'ajouter vos propres étiquettes puis trouver Version
cas particuliers par étiquette plutôt que par un nom déterminé l'implémentation:
Version foundVersion = versionHistory.getVersionByLabel(versionLabel);
Et bien sûr, vous pouvez savoir s'il y a une Version
dans l'histoire avec une étiquette particulière:
if (versionHistory.hasVersionLabel(versionLabel)) {
// do something
}
ou si une version spécifique a une étiquette:
Version version = ...
if (versionHistory.hasVersionLabel(version,versionLabel) {
// do something
}
et même supprimer ap étiquette articulaire:
versionHistory.removeLabel(versionLabel);
Pour plus d'informations, voir la section 15.4 de la JCR 2.0 (JSR-283) specification.