cancel
Showing results for 
Search instead for 
Did you mean: 

Fichier .CSV en sortie webscript

dabens
Champ in-the-making
Champ in-the-making
Bonjour tout le monde,
je dois générer un fichier CSV  via le webscript Alfresco mais j'ai qques difficultés.

J'ai crée le Fichier "list.get.desc.xml" (en spécifiant le format )

<webscript><shortname>List tags</shortname><description>Tags Alfresco</description><url>/list_tags</url><format default="csv"></format><authentication>user</authentication></webscript>

Fichier Javascript "list.get.js"

const filename = "output.csv";

function main()
{
   var file = createFile(filename);
   var content = "";

   var categoryResults = classification.getRootCategories("cm:taggable");
   categoryResults.sort(sortByName);
   var i = 0;
   for each (var result in categoryResults)
   {
      var query = '@cm\\:taggable:"' + result.getNodeRef() + '"';
      var nodes = search.luceneSearch(query);
      var message = ++i + ';"' + result.name + '";' + nodes.length;
      content += message + '\n';
      logger.warn(message);
   }
   file.content += content;
   return 1;
}

/* Sort the results by case-insensitive name */
function sortByName(a, b)
{
   return (b.properties.name.toLowerCase() > a.properties.name.toLowerCase() ? -1 : 1);
}

function createFile(name)
{
   var file = companyhome.childByNamePath(name);
   if (file == null)
      file = companyhome.createFile(name);
   if (file == null)
      throw new Error("Cannot create " + name);
   file.content = "";
   return file;
}

main();

Ce script javascript fonctionne parfaitement et génère bien le .CSV via :
http://localhost:8080/alfresco/command/script/execute?scriptPath=/Company%20Home/Data%20Dictionary/S...

Et enfin le fichier "list.get.csv.ftl" qui est vide puisque je ne sais pas quoi mettre dedans pour la génération du fichier.

Les exemples sur la génération de fichiers CSV sont inexistants sur le web , si vous avez des idées pour résoudre ce problème je serais preneur  Smiley Very Happy

Merci
7 REPLIES 7

sibe
Champ on-the-rise
Champ on-the-rise
Qu'est ce que tu veux exactement afficher sur ton template list.get.csv.ftl ?

Merci.

cleseach
Star Contributor
Star Contributor
Bonjour,

Pour information, le "format de sortie" CSV n'existe pas pour les webscripts.
Le CSV est du texte seul, il vous faut donc utiliser le suffixe "text" : list.get.text.ftl.

Après, pour ce qui est du "remplissage" de ce fichier, je vous renvoie à la question de mmly.

Cordialement,
Charles Le Seac'h

dabens
Champ in-the-making
Champ in-the-making
Bonjour,
je vous remercie pour ces infos.
Sur mon template je veux juste récupérer la sortie du fichier Javascript (c'est à dire le fichier "output.csv"), d'où l'interêt du "list.get.csv.ftl", qui me permet bien de générer un fichier .CSV mais sans les données envoyé par le javascript. La question est: Comment récupérer la sortie de mon Javascript sur le template ?

bertrandf
Champ on-the-rise
Champ on-the-rise
Bonjour,

Ce n'est pas tout à fait vrai de dire que le format CSV n'existe pas pour les webscripts, il n'est juste pas défini par défaut par Alfresco.
Pour l'ajouter il suffit de le déclarer :
  <!– Add mimetype text/csv –>
  <bean parent="webscripts.formatmap">
    <property name="formats">
      <props>
        <prop key="csv">text/csv</prop>
      </props>
    </property>
  </bean>
http://wiki.alfresco.com/wiki/3.0_Web_Scripts_Framework#HTTP_Response_Formats

Ensuite vous pouvez créer un template de rendu au format CSV : list.get.csv.ftl

Si vous voulez que ce rendu soit celui par défaut, vous pouvez le spécifier dans le fichier XML de description de votre webscript (list.get.desc.xml) :
<format default="csv" />

Sinon il vous suffit de spécifier le format de retour dans l'URL en ajoutant le paramètre format=csv.
http://wiki.alfresco.com/wiki/Web_Scripts#How_Do_I_Use_a_Web_Script.3F


Cordialement.

dabens
Champ in-the-making
Champ in-the-making
Bonjour BertrandF,
comme je l'ai marqué au dessus j'ai bien crée le template "list.get.csv.ftl" et spécifié le format par défaut dans le fichier xml:
<format default="csv" />

J'arrive donc à générer un fichier .csv mais qui est vide ou rempli avec des données enregistré en dur dans le template"list.get.csv.ftl"

Mon problème est que je ne sais pas comment envoyer les données du Javascript dans mon template … :cry:

bertrandf
Champ on-the-rise
Champ on-the-rise
Il faut utiliser la variable model.

Coté Javascript :
model.maVariable = "test";
model.monTableau = ["val1", "val2"];

Coté Freemarker, vous aurez accès à deux variables : maVariable et monTableau.
${maVariable}

<#list monTableau as val>
  ${val}
  <#if val_has_next>,</#if>
</#list>

http://docs.alfresco.com/4.0/topic/com.alfresco.enterprise.doc/concepts/ws-components.html

dabens
Champ in-the-making
Champ in-the-making
Je te remercie. ça fonctionne ^^