Customer Portal

new component upsert

Comments 3

  • Avatar
    avackova
    0
    Comment actions Permalink
    Hello,
    you can also add your component to CloverGUI (see Chapter 2. Integrating a Custom Component in CloverGUI) and then use it as all other components (d&d it from palette to your graph, connect with edges etc).
    By the way: do you need something what DBOutputTable can't do? DBOutputTable has all functionality your write in your post about.
  • Avatar
    cloveuser
    0
    Comment actions Permalink
    Thanks for the reply.
    I am following the chapter2 to build and integrate my component.
    I am trying to execute the following query

    merge into t1 using t2 on (t1.first_name = t2.first_name and t1.last_name=t2.last_name)
    when matched then
    update set salary = t2.salary
    when not matched then
    insert(first_name,last_name, salary) values (t2.first_name,t2.last_name, t2.salary);

    I had put this in the query property. It gives me a error. (Description Resource Path Location Type
    ENGINE: Error during graph initialization (No enum const class org.jetel.connection.jdbc.SQLCloverStatement$QueryType.MERGE). importdata.grf testinsert/graph 1239999735546 Clover Problems
    ).

    This is the reason, I went ahead to develop a custom component.
    I have created a customcomponents.xml as described in tht tutorial but it doesn't say how we can get a dropdown with all the connections for the graph. Can you suggest me how to achieve this?
    Thanks
    Nag
  • Avatar
    avackova
    0
    Comment actions Permalink
    Hello,
    as I understand you want to execute a "static" sql query, when there is no input to your component, don't you? In such case you should use DBExecute component, while DBOutputTable can handle insert, update or delete queries only and expected clover records on input.
    customcomponents.xml file defines properties needed for creation of your component (used by fromXML(TransformationGraph graph, Element xmlElement) method of your component). You can inform CloverGUI, which editors to use also. Eg. if your component requires connection parameter, the proper line in customcomponents.xml should look like follow:
          <property category="basic" displayName="DB connection" modifiable="true" name="dbConnection" nullable="true" required="true">
    <singleType name="connection"/>
    </property>

    It means:
    • category="basic" - property is displayed in basic properties group

    • displayName="DB connection" - name visible when editing component

    • modifiable="true" - property value can be changed

    • name="dbConnection" - name used by cloveretl.engine while reading from xml - the same as the property name in your component java code

    • nullable="true"

    • required="true"

    • singleType name="connection" - uses "connection" editor - combo with db connections available in graph

    For choosing table from database you can use singleType name="table"

Please sign in to leave a comment.