Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > ETL > Talend
Talend Forum d'entraide sur Talend (Talend Open Studio, ...). Avant de poster --> FAQ Talend, Tutoriels Talend
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/03/2011, 17h27   #1
Nouveau Membre du Club
 
Jef Lehembre
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 41
Détails du profil
Informations personnelles :
Nom : Jef Lehembre
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mars 2011
Messages : 41
Points : 34
Points : 34
Par défaut Comment tOracleInput récupére t il les données de la requête en paramètre?

Bonjour,

je viens vers vous car je n'arrive pas à comprendre comment le code du tOracleInput_begin.javajet arrive à lire la requête qui est passée en paramètre dans le tOracleInput.

Effectivement dans le .xml, on définit bien le paramètre QUERY :

Code :
1
2
3
4
5
 
        <PARAMETER NAME="QUERY" FIELD="MEMO_SQL" NUM_ROW="100"
            REQUIRED="true">
            <DEFAULT>"select id, name from employee"</DEFAULT>
        </PARAMETER>
Cependant dans le code Javajet qui charge les données, je ne vois pas ou on passe la requête en paramètre...



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
 
public void createStatement(INode node) {
            super.createStatement(node);
            String useCursor= ElementParameterParser.getValue(node, "__USE_CURSOR__");
            String cursorSize= ElementParameterParser.getValue(node, "__CURSOR_SIZE__");
            IF(("true").equals(useCursor)) {
%>
                stmt_<%=cid %>.setFetchSize(<%=cursorSize %>);
<%
            }
        }
        //-----------according schema type to generate ResultSet
        public void generateStringResultSet(String firstConnName, IMetadataColumn COLUMN, int currentColNo, String trimMethod) {
            String columnType = COLUMN.getType();
            IF(columnType != NULL && ("CLOB").equals(columnType)) {
%>
                java.io.Reader reader_<%=cid%> = rs_<%=cid %>.getCharacterStream(<%=currentColNo%>);
                java.io.BufferedReader br_<%=cid%> = NULL;
                IF(reader_<%=cid%> != NULL) {
                    br_<%=cid%> = new java.io.BufferedReader(reader_<%=cid%>);                                             
                     StringBuffer content_<%=cid%> = new StringBuffer();
                     int c_<%=cid%> =0;
                     while( (c_<%=cid%> = br_<%=cid%>.READ()) != -1) {
                         content_<%=cid%>.append((char)c_<%=cid%>);
                    }
                     br_<%=cid%>.close();
                    <%=firstConnName%>.<%=COLUMN.getLabel()%> = content_<%=cid%>.toString();
                } else {
                    <%=firstConnName%>.<%=COLUMN.getLabel()%> = NULL;
                }                                         
<%
            } else {
%>
                     tmpContent_<%=cid%> = rs_<%=cid %>.getString(<%=currentColNo%>);
                    IF(tmpContent_<%=cid%> != NULL) {
                        <%=firstConnName%>.<%=COLUMN.getLabel()%> = tmpContent_<%=cid%><%=trimMethod%>;
                    } else {
                        <%=firstConnName%>.<%=COLUMN.getLabel()%> = NULL;
                    }                                         
<%
            }
        }
 
           public void generateBytesResultSet(String firstConnName, IMetadataColumn COLUMN, int currentColNo) {
%>
            byte [] tmpBytes_<%=cid%> = rs_<%=cid %>.getBytes(<%=currentColNo%>);
            IF(tmpBytes_<%=cid%> != NULL) {
                <%=firstConnName%>.<%=COLUMN.getLabel()%> = tmpBytes_<%=cid%>;
            } else {
                <%=firstConnName%>.<%=COLUMN.getLabel()%> = NULL;
            }        
<%
        }
Croaker est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/03/2011, 23h25   #2
Rédacteur/Modérateur
 
Avatar de CyberChouan
 
Homme Benoît Courtine
Directeur technique
Inscription : janvier 2007
Messages : 2 744
Détails du profil
Informations personnelles :
Nom : Homme Benoît Courtine
Âge : 29
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Directeur technique
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2007
Messages : 2 744
Points : 4 202
Points : 4 202
Envoyer un message via MSN à CyberChouan
Les composants de type tBase... sont un peu particuliers.

Comme il y a une grande partie de code commune aux différents types de bases, un partie de ce code est mutualisée dans des templates "parents".

Le champ "QUERY" étant commun a tous les tBaseInput, il fait partie de ce code mutualisé.

Concrètement, ce champ est donc injecté dans le code java finalement produit par l'appel à :

Code :
super.createStatement(node);
Le code qui reste dans le tOracleInput ne concerne que les paramètres spécifiques au composant Oracle.
__________________
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
CyberChouan est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/03/2011, 09h57   #3
Nouveau Membre du Club
 
Jef Lehembre
Consultant en Business Intelligence
Inscription : mars 2011
Messages : 41
Détails du profil
Informations personnelles :
Nom : Jef Lehembre
Localisation : France

Informations professionnelles :
Activité : Consultant en Business Intelligence

Informations forums :
Inscription : mars 2011
Messages : 41
Points : 34
Points : 34
Merci pour cette réponse très rapide, tu m'évites des heures de recherche =)

Il est logique que le code soit mutualisé, cependant cela complique un peu mes affaires en ce qui concerne de modifier ce composant...

Effectivement je voulais le modifier de sorte à ce que l'utilisateur final ne puisse modifier la requête principale et ne puisse que rajouter que quelques champs via une autre box "memo_sql" qui seraient insérés dans le select cependant ça va être un peu plus compliqué que je ne pensais du coup!

Encore merci en tout cas!
Croaker est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 23h56.


 
 
 
 
Partenaires

Hébergement Web