cancel
Showing results for 
Search instead for 
Did you mean: 

Web Services : décrire le répertoire

denisr
Champ in-the-making
Champ in-the-making
Bonjour à tous,
dans le cadre d'une migration de notre Knowledge database vers alfresco j'ai besoin de retranscrire des noms de répertoires en mode Alfresco (/app:company_home/cm:folder1/…) . Les utilisateurs de notre Knowledge database (maison) ont été  assez prolixes et ont utilisés à peu près tous les caractères accessibles (facilement) avec un clavier AZERTY. :lol:

J'ai bien compris que certains caractères étaient interdits, genre '<blanc>' qu'il faut écrire '_x0020_' ou '&' , '_x0026', bref avec leur valeur hexa, et au fur et à mesure j'en découvre d'autres comme ','.
:?: En fait, quelqu'un a-t-il la liste hexaustive des caractères qu'il faut transformer en hexa ? (ou la liste des caractères accessibles directement , i.e. sans code hexa…), ça me serait d'une grande aide.
:arrow: Une bière virtuelle à celui qui me fournit cette info…
Merci d'avance.

Cordialement,
DenisR
11 REPLIES 11

denisr
Champ in-the-making
Champ in-the-making
Il faut que vous relisiez en détail ma réponse de ce matin à Philippe De Rivarola ou j'envoie ce que j'encode et l'exception que j'ai dans Alfresco, ainsi que la référence du navigateur de noeuds sinon nous perdrons du temps tous les deux!

(par DenisR le 15 Avr 2008 10:40 am)

Merci d'avance de regarder avec précision ce qui est écrit car sinon je n'avance pas, je me répète.

Cordialement,
DenisR

denisr
Champ in-the-making
Champ in-the-making
J'ai trouvé l'erreur , désolé pour le dérangement.

La référence du noeud dans le navigateur était:
/{http://www.alfresco.org/model/application/1.0}company_home/{http://www.alfresco.org/model/content/1.... Trade/{http://www.alfresco.org/model/content/1.0}Head Quarter Shared Services/{http://www.alfresco.org/model/content/1.0}Finance/{http://www.alfresco.org/model/content/1.0}1 - BUDGET/{http://www.alfresco.org/model/content/1.0}Budget 2007  

Et l'exception d'Alfresco était:
09:04:45,113 DEBUG [org.alfresco.repo.webservice.Utils] Resolving path: /app:com
pany_home/cm:GL_x0020_TRADE/cm:Head_x0020_Quarter_x0020_Shared_x0020_Services/cm
:Finance/cm:_x0031__x0020_-_x0020_BUDGET/cm:Budget_x0020_2007
09:04:45,124 ERROR [org.alfresco.repo.webservice.accesscontrol.AccessControlWebS
ervice] Unexpected error occurred
java.lang.IllegalStateException: Failed to resolve to a single NodeRef with para
meters (store=workspace:SpacesStore uuid=null path=/app:company_home/cm:GL_x0020
_TRADE/cm:Head_x0020_Quarter_x0020_Shared_x0020_Services/cm:Finance/cm:_x0031__x
0020_-_x0020_BUDGET/cm:Budget_x0020_2007), found 0 nodes.

L'erreur était "GL TRADE" au lieu de "GL Trade" !!!


Ca me permet de publier le code suivant de transformation d'un path à la mode "java" ou "Unix"  en path alfresco web services:

   
import org.alfresco.webservice.util.ISO9075;

public String BuildAlfrescoPath(String javaPath)

   {

      String inter=new String("");
      String rootPath="/app:company_home";
      String alfPath;
      // Il faut transformer javapath avant lui avoir rajoute cm: et app:
      // attention on ne touche pas aux slash
      // donc on va de / en / pour construire notre nouvelle string:
      int pos=0;
      int trouve=0,length=javaPath.length();
      while(pos<length && (trouve=javaPath.indexOf("/",pos))>=pos){              
         if(trouve>pos){
            inter+="/";
            alfPath=javaPath.substring(pos,trouve);
            inter+=ISO9075.encode(alfPath);
         }
         pos=trouve+1;
      }
      if(trouve==0){
         // le cas de bord ou javaPath vaut /
         return(rootPath);
      }

      // ne pas oublier le bout de string apres le dernier /
      length=inter.length();
      if(trouve<0){
         inter+="/";
         alfPath=javaPath.substring(pos);
         inter+=ISO9075.encode(alfPath);
      }
      else{// on a trouve un / a la fin?
         // Attention, a cause de la ligne qui suit il faut enlever le dernier / si il y en a un
         if(inter.substring(length-1).equals("/")==true){
            inter=inter.substring(0,inter.length()-2);
         }
      }
      inter= inter.replace("/", MyConstants.MYCM);
      alfPath=rootPath+inter;
      return alfPath;

   }

Avec :
MyConstants.MYCM="/cm:";