2012-07-17 4 views
2

Je veux savoir si je peux marquer une version particulière. Je veux utiliser JCR dans mon projet et nous avons beaucoup d'arbre de type hiérarchique fait de différents types de nœuds et nous devons enregistrer une version après un tas de changements pour la mise en scène ou la production. Je veux savoir comment puis-je marquer la version particulière de sorte que toutes les modifications apportées pour un nœud particulier et ses enfants seront enregistrées.Comment baliser une version particulière dans jackrabbit/JCR?

Merci !!!

Répondre

3

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.

Questions connexes