Home | Table of Contents | CTL Templates for Joiners | CloverETL 4.6.1
--- | --- | ---
Prev | Common Properties of Joiners | Next

### CTL Templates for Joiners

This transformation template is used in every Joiner and also in Reformat and DataIntersection.

Here is an example of how the Source tab for defining the transformation in CTL looks.

Figure 51.1. Source Tab of the Transform Editor in Joiners

Table 51.2. Functions in Joiners, DataIntersection and Reformat

CTL Template Functions
boolean init()
Required | No
Description | Initialize the component, setup the environment, global variables
Invocation | Called before processing the first record
Returns | `true` | `false` (in case of `false`, the graph fails)
integer transform()
Required | yes
Input Parameters | none
Returns | Integer numbers. See Return Values of Transformations for detailed information.
Invocation | Called repeatedly for each set of joined or intersected input records (Joiners and DataIntersection) and for each input record (Reformat).
Description | Allows you to map input fields to the output fields using a script. If any part of the `transform()` function for some output record causes fail of the `transform()` function, and if user has defined another function (`transformOnError()`), processing continues in this `transformOnError()` at the place where `transform()` failed. If `transform()` fails and user has not defined any `transformOnError()`, the whole graph will fail. The `transformOnError()` function gets the information gathered by `transform()` that was gotten from previously successfully processed code. Also error message and stack trace are passed to `transformOnError()`.
Example |
    function integer transform() {
       $out.0.name = $in.0.name;
       $out.0.address = $in.0.city + $in.0.street + $in.0.zip;
       $out.0.country = toUpper($in.0.country);
       return ALL;
    }
integer transformOnError(string errorMessage, string stackTrace, integer idx)
Required | no
Input Parameters | `string errorMessage`
`string stackTrace`
Returns | Integer numbers. See Return Values of Transformations for detailed information.
Invocation | Called if `transform()` throws an exception.
Description | It creates output records. If any part of the `transform()` function for some output record causes fail of the `transform()` function, and if user has defined another function (`transformOnError()`), processing continues in this `transformOnError()` at the place where `transform()` failed. If `transform()` fails and user has not defined any `transformOnError()`, the whole graph will fail. The `transformOnError()` function gets the information gathered by `transform()` that was gotten from previously successfully processed code. Also error message and stack trace are passed to `transformOnError()`.
Example |
    function integer transformOnError(
                           string errorMessage,
                           string stackTrace) {
       $in.0.name = $in.0.name;
       $in.0.address = $in.0.city + $in.0.street + $in.0.zip;
       $in.0.country = "country was empty";
       printErr(stackTrace);
       return ALL;
    }
string getMessage()
Required | No
Description | Prints error message specified and invoked by user
Invocation | Called in any time specified by user (called only when `transform()` returns value less than or equal to -2).
Returns | `string`
void preExecute()
Required | No
Input parameters | None
Returns | `void`
Description | May be used to allocate and initialize resources required by the transform. All resources allocated within this function should be released by the `postExecute()` function.
Invocation | Called during each graph run before the transform is executed.
void postExecute()
Required | No
Input parameters | None
Returns | `void`
Description | Should be used to free any resources allocated within the `preExecute()` function.
Invocation | Called during each graph run after the entire transform was executed.

| Important
Input records or fields and output records or fields Both inputs and outputs are accessible within the `transform()` and `transformOnError()` functions only. All of the other CTL template functions allow to access neither inputs nor outputs.

| Warning
Remember that if you do not hold these rules, NPE will be thrown!

Prev | Up | Next
Slave Duplicates | Home | Table of Contents | Java Interfaces for Joiners