2015-08-25 2 views
0

Je suis très nouveau dans le référentiel Jack Rabbit. Alors s'il vous plaît guidez-moi pour aller chercher la version récente d'un fichier à partir du dépôt Jackrabbit. Mon code est: try {Récupération de la version récente d'un fichier à partir du dépôt Jackrabbit

  session = repository.login(new SimpleCredentials("admin", "admin".toCharArray())); 
      Node root = session.getRootNode(); 
      if (!root.hasNode(nodeName)) { 
       root.addNode(nodeName, "nt:unstructured"); 
       session.save(); 
      } 

      String extention = FilenameUtils.getExtension(originalFileName); 

      InputStream stream = new BufferedInputStream(new FileInputStream(file));     
      Node roseNode = session.getRootNode().getNode(nodeName);     

      VersionManager vm = session.getWorkspace().getVersionManager(); 

      Node fileNode = null; 
      if(roseNode.hasNode(fileName.toString()+"."+extention)){ 
       fileNode = roseNode.getNode(fileName.toString()+"."+extention);     
       vm.checkout(fileNode.getPath());     

      } else { 
       fileNode = roseNode.addNode(fileName.toString()+"."+extention, "nt:unstructured"); 
       fileNode.addMixin("mix:versionable"); 
       fileNode.setProperty(extention, fileName.toString());     
       session.save(); 
      } 


      Node content = fileNode.addNode("jcr:content", "nt:resource"); 
      Binary binary = session.getValueFactory().createBinary(stream); 
      content.setProperty("jcr:data", binary); 
      stream.close();    
      session.save(); 
      vm.checkin(fileNode.getPath()); 

J'ai essayé .. mais je reçois le fichier ancien en allant chercher .. S'il vous plaît aidez-moi sur ce ... Merci à l'avance ..

+0

Pouvez-vous expliquer votre problème plus en détail?! – Cleb

+0

l'exigence est, quand un document avec un certain contenu est téléchargé dans le référentiel jackrabbit, un autre utilisateur peut le télécharger et le modifier et il télécharge à nouveau le document dans le référentiel avec le même nom du document, je dois maintenir ces deux versions avec Un seul nom du document, et lorsque l'extraction est requise par défaut, il doit donner un fichier de version récente et, si nécessaire, l'ancienne version doit donner l'ancienne version du fichier. @Cleb merci pour votre réponse –

Répondre

0

Enfin, je l'ai obtenu de cette façon, j'ai essayé requête suivante comme:

String expression = "select * from [nt:base] as b where name(b)= '"+fileName+"' "; 
Query query = queryManager.createQuery(expression, Query.JCR_SQL2); 
QueryResult result = query.execute(); 
NodeIterator iterator = result.getNodes(); 
VersionManager vm = session.getWorkspace().getVersionManager(); 
if(iterator.getSize() > 0){ 
    Node node = iterator.nextNode(); 
    Node recentVersionNode = null; 

    NodeIterator versionIterator = node.getNodes(); 
/* 
A node has multiple content nodes with ("jcr:content", "nt:resource") 
these are of different versions, so the file with name abc.pdf 
will have multiple versions/content so that we can get 
the recent version of content node of the same file. 
*/ 
    while(versionIterator.hasNext()){ 
     recentVersionNode = versionIterator.nextNode();    
    } 

finalement j'obtenu le nœud de fichier téléchargé récemment dans le référentiel Jackrabbit. Et nous pouvons aller chercher n'importe quelle version du fichier en spécifiant l'index de "jcr: content"