Welcome Guest! Log in
×

Notice

The forum is in read only mode.
Stambia versions 2.x, 3.x, S17, S18, S19 and S20 are reaching End of Support January, 15th, 2024. Please consider upgrading to the supported Semarchy xDI versions. See Global Policy Support and the Semarchy Documentation.

The Stambia User Community is moving to Semarchy! All the applicable resources have already been moved or are currently being moved to their new location. Read more…

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

More
11 Aug 2017 11:40 #1 by Virginie_Samson
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
Replied by Nicolas Verscheure on 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
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
Replied by Nicolas Verscheure on 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
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
Replied by Nicolas Verscheure on 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
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
Replied by Nicolas Verscheure on 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
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
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 ?