Script de lecture d'un export ACP

cancel
Showing results for 
Search instead for 
Did you mean: 
loic38
Member II

Script de lecture d'un export ACP

Bonjour,

Voici mon besoin :
J'ai un espace de travail contenant plusieurs sous-espace et fichiers.
Ces fichiers ne sont plus amenés à évoluer, nous aimerions archiver l'ensemble du projet en dehors d'Alfresco.
C'est à dire exporter le tout (arborescence répertoire + fichiers) dans une archive.

Nous avons exporter le tout dans un fichier ACP, le fichier XML contient bien toutes les méta-données mais les fichiers Word sont nommés en contentxx.doc.

Je pense donc créer un script parcourant le fichier XML pour créer l'arborescence de répertoire, puis renommer et replacer les fichiers au bon endroit.

Un tel script a t-il déjà été développé ?
4 Replies
loic38
Member II

Re: Script de lecture d'un export ACP

C'est fait  :wink:
loic38
Member II

Re: Script de lecture d'un export ACP

Mon code n'est pas très propre ni optimisé mais il marche très bien.

Le voici, si ca peut en aider certains :
(dans mon exemple, l'extract ACP s'appelle "FDC2" et il est placé dans un répertoire "Fichiers ACP"

package job;

import java.io.File;
import java.util.Iterator;
import java.util.List;
import java.util.StringTokenizer;

import org.jdom.Attribute;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;

public class LectureACP {
   
   static String chemin;
  
   public static void lireXML(String fichier){
     
         //On crée une instance de SAXBuilder
         SAXBuilder sxb = new SAXBuilder();
         org.jdom.Document document = null;
         try
         {
            //On crée un nouveau document JDOM avec en argument le fichier XML
            document = sxb.build(new File(fichier));
         }
         catch(Exception e){
            System.out.println(e.getMessage());
         }
        
         Element racine;
         racine = document.getRootElement();
        
         chemin = "";
              
         List listeRepertoire = racine.getChildren();
         Iterator ite = listeRepertoire.iterator();
         Element ele;
        
         while(ite.hasNext())
         {
            ele = (Element)ite.next();
            if(ele.getName().equals("folder")){
                  List listeSousRepertoire = ele.getChildren();
                 traiterFolder(listeSousRepertoire);
              }
         }
     
   }
  
   public static void traiterFolder(List liste){
     
         Iterator ite = liste.iterator();
         Element ele;
        
         while(ite.hasNext())
         {
            ele = (Element)ite.next();
            if(ele.getName().equals("associations")){
                   Element contains = (Element)ele.getChildren().get(0);
                   List listeElements = contains.getChildren();
                   Iterator ite2 = listeElements.iterator();
                   Element ele2;
                   while(ite2.hasNext()){
                      ele2 = (Element)ite2.next();
                      if(ele2.getName().equals("folder")){
                         Attribute nom = (Attribute)ele2.getAttributes().get(0);
                         String value = nom.getValue().substring(3);
                         chemin += "\\" + value;
                         List listeSousRepertoire = ele2.getChildren();
                         File fb = new File("Export" + chemin);
                         fb.mkdir();
                         traiterFolder(listeSousRepertoire);
                         chemin = chemin.substring(0,chemin.length()-value.length()-1);                        
                      }
                      if(ele2.getName().equals("content")){
                         Attribute nom = (Attribute)ele2.getAttributes().get(0);
                         String nomFichier = nom.getValue().substring(3);
                         System.out.println(nomFichier);
                           List listeProprietes = ele2.getChildren();
                           Iterator ite3 = listeProprietes.iterator();
                           Element ele3;
                           while(ite3.hasNext()){
                              ele3 = (Element)ite3.next();
                              if(ele3.getName().equals("properties")){
                                 List listeProprietes2 = ele3.getChildren();
                                 Iterator ite4 = listeProprietes2.iterator();
                                 Element ele4;
                                 while(ite4.hasNext()){
                                    ele4 = (Element)ite4.next();
                                    if(ele4.getName().equals("content")){
                                       StringTokenizer token = new StringTokenizer(ele4.getValue(), "|");
                                       String cheminContent = "Fichiers ACP\\" + token.nextToken().substring(11).replace("/", "\\");
                                       File fichierContent = new File(cheminContent);
                                       File cheminDestination = new File("Export" + chemin + "\\" + nomFichier);
                                       copier(fichierContent, cheminDestination);
                                    }
                                 }
                              }
                           }
                      }
                   }
              }
         }
     
   }
  
   public static void main(String[] args) throws Exception {
      
      lireXML("Fichiers ACP\\FDC2.xml");
      
   }
   
   public static boolean copier( File source, File destination ){  //Methode permettant la copie d'un fichier
        boolean resultat = false;
        
        // Declaration des flux
        java.io.FileInputStream sourceFile=null;
        java.io.FileOutputStream destinationFile=null;
        try {
                // Création du fichier :
                destination.createNewFile();
                // Ouverture des flux
                sourceFile = new java.io.FileInputStream(source);
                destinationFile = new java.io.FileOutputStream(destination);
                // Lecture par segment de 0.5Mo 
                byte buffer[]=new byte[512*1024];
                int nbLecture;
                while( (nbLecture = sourceFile.read(buffer)) != -1 ) {
                        destinationFile.write(buffer, 0, nbLecture);
                } 
                
                // Copie réussie
                resultat = true;
        } catch( java.io.FileNotFoundException f ) {
        } catch( java.io.IOException e ) {
        } finally {
                // Quoi qu'il arrive, on ferme les flux
                try {
                        sourceFile.close();
                } catch(Exception e) { }
                try {
                        destinationFile.close();
                } catch(Exception e) { }
        } 
        return( resultat );
}

}
bab
Member II

Re: Script de lecture d'un export ACP

Bonjour ,

Merci pour le code. Cependant j'arrive pas à le tester.

Voici ce que j'ai fais :

J'ai crée un projet java dans le quel je mis ton script ,
j'ai déposé le fichier xml de l'acp à la racine du projet,
dans un répertoire Fichiers ACP. Mais ça marche pas.

Dite moi si j'ai oublié quels que choses ?

Cordialement.
bab
Member II

Re: Script de lecture d'un export ACP

Bonjour,

Personne n'a testé ce bout coude  :?:

Cordialement.