Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Due to some maintenance operations, stambia.org will be switched to read-only mode during the 13th November. It will be possible to read and download, but impossible to post on the forums or create new accounts. For any question please contact the support team.

Topic-icon Solved Comment passer le contenu d'un fichier dans une variable ?

More
11 Aug 2017 11:40 #1 by Virginie_Samson
Virginie_Samson created the topic: Comment passer le contenu d'un fichier dans une variable ?
Bonjour
Nous avons besoin de récupérer une valeur dans un fichier (qui ne contient qu'une ligne et qu'une colonne).
Actuellement, nous devons créer un mapping, utilisant une table physique, sur laquelle pointera la variable.
Est ce possible d’interroger directement un fichier plat à partir d'une variable pour en connaitre le contenu ?

Merci d'avance
Virginie
More
11 Aug 2017 14:36 - 16 Aug 2017 15:16 #2 by Nicolas Verscheure
Nicolas Verscheure replied the topic: Comment passer le contenu d'un fichier dans une variable ?
Si j'ai bien compris la demande, c'est très simple en utilisant Groovy :



Il faut juste lire le fichier en Groovy et mettre la valeur dans une variable.
Je n'ai pas fait la partie récupération dynamique du nom de fichier à partir d'une metadata.
Voici le code Groovy :
def line  
new File("C:\\Stambia\\test.txt").withReader { line = it.readLine() }  
__ctx__.publishVariable("~/firstLine",line)

J'ai mis le zip du projet exemple.

Nicolas
Attachments:
Last Edit: 16 Aug 2017 15:16 by Nicolas Verscheure.
More
16 Aug 2017 14:49 #3 by Virginie_Samson
Virginie_Samson replied the topic: Comment passer le contenu d'un fichier dans une variable ?
Bonjour Nicolas
J'ai cette erreur là à l'execution.
GetFirstLineOfFileAndPublish/Récup Ligne pour alimenter la Variable
javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, Script1.groovy: 1: unexpected char: 0xA0 @ line 1, column 10.
1 error

at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:115)
at javax.script.AbstractScriptEngine.eval(Unknown Source)
at com.indy.engine.actionCodes.ScriptingActionCodeI.executeCodewithRSet(SourceFile:152)
at com.indy.engine.actionCodes.ScriptingActionCodeI.executeSimpleCode(SourceFile:324)
at com.indy.engine.action.common.ActionCodeTypeI.executeCode(SourceFile:1646)
at com.indy.engine.action.common.ActionCodeTypeI.run(SourceFile:1805)
at java.lang.Thread.run(Unknown Source)
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, Script1.groovy: 1: unexpected char: 0xA0 @ line 1, column 10.
1 error

Faut il une version spécifique de Stambia ?
Nous sommes en S18.0.3

Merci d'avance
Cordialement
Virginie SAMSON
More
16 Aug 2017 15:15 #4 by Nicolas Verscheure
Nicolas Verscheure replied the topic: Comment passer le contenu d'un fichier dans une variable ?
C'est un soucis d'UTF-8. Voici une nouvelle version du code :
def line  
new File("C:\\Stambia\\test.txt").withReader('UTF-8') { line = it.readLine() }
__ctx__.publishVariable("~/firstLine",line)

This attachment is hidden for guests.
Please log in or register to see it.

This message has an attachment file.
Please log in or register to see it.

More
16 Aug 2017 16:06 #5 by Virginie_Samson
Virginie_Samson replied the topic: Comment passer le contenu d'un fichier dans une variable ?
def line  
new File("C:\\Produits\\Stambia\\Fichiers_Locaux\\Test.txt").withReader('UTF-8') { line = it.readLine() }  
__ctx__.publishVariable("~/PremiereLigne",line)

Voici ma version
Et mon message d'erreur ,-(

GetFirstLineOfFileAndPublish/Récup Ligne pour alimenter la Variable
javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, Script2.groovy: 1: unexpected char: 0xA0 @ line 1, column 10.
1 error
Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed, Script2.groovy: 1: unexpected char: 0xA0 @ line 1, column 10.
1 error
More
16 Aug 2017 16:28 - 16 Aug 2017 16:53 #6 by Nicolas Verscheure
Nicolas Verscheure replied the topic: Comment passer le contenu d'un fichier dans une variable ?
Erreur d'analyse pour l'UTF-8 (je pense que c'est un problème de fin de ligne).
Par contre, je n'arrive pas à reproduire une erreur de ce type.
Serait-il possible de reprendre le process ci-joint, de l'importer dans le Designer et ensuite de l'exécuter avec le Runtime local ?

This attachment is hidden for guests.
Please log in or register to see it.

This message has an attachment file.
Please log in or register to see it.

Last Edit: 16 Aug 2017 16:53 by Nicolas Verscheure.
More
17 Aug 2017 10:15 #7 by Virginie_Samson
Virginie_Samson replied the topic: Comment passer le contenu d'un fichier dans une variable ?
Avec ce process, ça fonctionne.
Mon fichier était assez basique aussi, cf ci joint
This attachment is hidden for guests.
Please log in or register to see it.

This message has an attachment file.
Please log in or register to see it.

More
17 Aug 2017 16:20 #8 by Nicolas Verscheure
Nicolas Verscheure replied the topic: Comment passer le contenu d'un fichier dans une variable ?
J'ai testé avec ce fichier, mais je n'ai pas l'erreur.
Bizarre. Voici mon environnement :
Windows 7
Designer 18.0.3
Runtime version: s17.2.14_20150625
Java version: 1.6.0_45 vendor: Sun Microsystems Inc. home: C:\Program Files\Java\jdk1.6.0_45\jre
More
18 Aug 2017 10:47 #9 by Virginie_Samson
Virginie_Samson replied the topic: Comment passer le contenu d'un fichier dans une variable ?
Voici le mien
Windows 7 SP1
Designer S18.0.3
Runtime : 17.2.15
Java version :C:\Program Files\Java\jre1.8.0_121\bin\server\jvm.dll
More
18 Aug 2017 10:49 #10 by Virginie_Samson
Virginie_Samson replied the topic: Comment passer le contenu d'un fichier dans une variable ?
Petite question supplémentaire associée...
Dans un mapping est il possible de traiter un fichier via une étape de stage (sur une BDD) puis de mettre l'information résultante dans une variable ?