java - Naming a Talend Custom Component - Not working except for tTutorialRow -
i have been following talend tutorial on "how create custom component". if follow example verbatim, files named follows , placed inside of folder ttutorialrow, tutorial works:
ttutorialrow_java.xml ttutorialrow_messages.properties ttutorialrow_begin.javajet ttutorialrow_main.javajet ttutorialrow_end.javajet this using following code:
ttutorialrow_java.xml:
<component> <header plateform="all" serial="" version="2.0" status="alpha" compatibility="all" author="talend" release_date="20070525a" startable="false" > <signature/> </header> <families> <family>helium</family> </families> <documentation> <url/> </documentation> <connectors> <connector ctype="flow" max_input="1"/> <connector ctype="iterate" max_output="1" max_input="1"/> <connector ctype="subjob_ok" max_input="1" /> <connector ctype="subjob_error" max_input="1" /> <connector ctype="component_ok" /> <connector ctype="component_error" /> <connector ctype="run_if" /> </connectors> <parameters> <parameter name="addresses" field="table" required="true" num_row="3" nb_lines="5" show="true"> <items based_on_schema="false"> <item name="username" /> <item name="domain" /> </items> </parameter> </parameters> <codegeneration/> <returns> <return name="nb_line" type="id_integer" availability="after"/> </returns> </component> ttutorialrow_messages.properties:
long_name=tutorial component help=org.talend.help.tutorialrow nb_line.name=number of lines addresses.item.username=username addresses.item.domain=domain addresses.name=addresses ttutorialrow_begin.javajet:
<%@ jet imports=" org.talend.core.model.process.inode org.talend.core.model.process.elementparameterparser org.talend.core.model.metadata.imetadatatable org.talend.core.model.metadata.imetadatacolumn org.talend.core.model.process.iconnection org.talend.core.model.process.iconnectioncategory org.talend.designer.codegen.config.codegeneratorargument org.talend.core.model.metadata.types.javatypesmanager org.talend.core.model.metadata.types.javatype java.util.list java.util.map " %> <% codegeneratorargument codegenargument = (codegeneratorargument) argument; inode node = (inode)codegenargument.getargument(); string cid = node.getuniquename(); list<map<string, string>> lines = (list<map<string,string>>)elementparameterparser.getobjectvalue(node, "__addresses__"); %> java.util.list<string> addresses_<%=cid %> = new java.util.arraylist<string>(); <% (int i=0; i<lines.size(); i++) { map<string, string> line = lines.get(i); %> addresses_<%=cid %>.add(<%= line.get("username") %> + "@" + <%= line.get("domain") %>); <% } %> int nb_line_<%=cid %> = 0; ttutorialrow_main.javajet:
<%@ jet imports=" org.talend.core.model.process.inode org.talend.core.model.process.elementparameterparser org.talend.core.model.metadata.imetadatatable org.talend.core.model.metadata.imetadatacolumn org.talend.core.model.process.iconnection org.talend.core.model.process.iconnectioncategory org.talend.designer.codegen.config.codegeneratorargument org.talend.core.model.metadata.types.javatypesmanager org.talend.core.model.metadata.types.javatype java.util.list java.util.map " %> <% codegeneratorargument codegenargument = (codegeneratorargument) argument; inode node = (inode)codegenargument.getargument(); string cid = node.getuniquename(); %> string[] adresses_<%=cid %> = addresses_<%=cid %>.toarray(new string[] {}); system.out.print(nb_line_<%=cid %>++ + ": "); (int i_<%=cid %> = 0; i_<%=cid %> < adresses_<%=cid %>.length; i_<%=cid %>++ ) { system.out.print(adresses_<%=cid %>[i_<%=cid %>]); if (i_<%=cid %> < adresses_<%=cid %>.length-1) system.out.print(","); } system.out.println(); ttutorialrow_end.javajet:
<%@ jet imports=" org.talend.core.model.process.inode org.talend.core.model.process.elementparameterparser org.talend.core.model.metadata.imetadatatable org.talend.core.model.metadata.imetadatacolumn org.talend.core.model.process.iconnection org.talend.core.model.process.iconnectioncategory org.talend.designer.codegen.config.codegeneratorargument org.talend.core.model.metadata.types.javatypesmanager org.talend.core.model.metadata.types.javatype java.util.list java.util.map " %> <% codegeneratorargument codegenargument = (codegeneratorargument) argument; inode node = (inode)codegenargument.getargument(); string cid = node.getuniquename(); %> globalmap.put("<%=cid %>_nb_line",nb_line_<%=cid %>); if change files name from:
ttutorialrow_java.xml ttutorialrow_messages.properties ttutorialrow_begin.javajet ttutorialrow_main.javajet ttutorialrow_end.javajet to:
myproject_java.xml myproject_messages.properties myproject_begin.javajet myproject_main.javajet myproject_end.javajet and update folder name myproject, adding component no longer works. how can add component new name?
thanks!
the answer there naming specifics/requirements incorporating custom component in talend.
the following worked:
i had include folder inside of main folder named tprojectname, containing:
tprojectname_begin.javajet tprojectname_end.javajet tprojectname_icon32.png tprojectname_java.xml tprojectname_main.javajet tprojectname_message.properties these files did not have changed @ inside format in question section of stackoverflow question.
Comments
Post a Comment