Package com.orchestranetworks.addon.dint.transformation
package com.orchestranetworks.addon.dint.transformation
Provides classes and interfaces to define and register transformations.
A transformation can be added to SourceFieldMappingStep, or TransformationMappingStep. You can execute multiple transformations as a chain. For example:-
To capitalize string data before inserting it in the target table:
- First, get SourceFieldMappingStep from TableMapping. - Use StringUpperCase transformation to perform uppercase conversion on the source field. - Finally, map to the target field. -
To add a prefix such as 'Mr/Ms' to a name field and insert into the target table:
- First get ConstantTransformationMappingStep from TableMapping. - Use StringConcat transformation to concatenate with the name field from the source table. - Finally, map to the target field. -
To capitalize only the first name of the full name string and insert into the target table:
- First, get SourceFieldMappingStep from TableMapping. - Use StringSplit transformation to split full name string into two variable 'firstName' and 'lastName'. - Use StringUpperCase transformation to perform uppercase conversion on the 'firstName' variable. - Use StringConcat transformation to concatenate with the variable 'lastName', the output of the previous split step. - Finally, map to the target field.
A custom transformation needs to be registered to be displayed in the mapping screen:
TransformationRegistry.getInstance().add(new ACustomTransformationDefinition());
The following is an example of a custom transformation function with a generic input structure:
public class AddressAggregate implements TransformationDefinition<GenericDataObject, String> { private static final InputDefinition INPUT_COUNTRY = new InputDefinition( "country", UserMessage.createInfo("Country"), UserMessage.createInfo("'Country' will be put at the end after concatenation."), DefaultDataTypes.STRING, false); private static final InputDefinition INPUT_CITY = new InputDefinition( "city", UserMessage.createInfo("City"), UserMessage.createInfo("'City' will be put before 'Country' after concatenation."), DefaultDataTypes.STRING, false); private static final InputDefinition INPUT_STREET = new InputDefinition( "street", UserMessage.createInfo("Street"), UserMessage.createInfo("'Street' will be put before 'City' after concatenation."), DefaultDataTypes.STRING, false); private static final InputDefinition INPUT_NUMBER = new InputDefinition( "number", UserMessage.createInfo("Number"), UserMessage.createInfo("'Number' will be put at the beginning after concatenation."), DefaultDataTypes.INTEGER, false); private static final OutputDefinition OUTPUT_ADDRESS = new OutputDefinition( "address", UserMessage.createInfo("Output address"), UserMessage.createInfo("Output address description"), DefaultDataTypes.STRING, false); public InputDefinition getInputDefinition() { return new InputDefinition( "Complex input name", "Complex input label", "Complex input description", Arrays.asList(INPUT_COUNTRY, INPUT_CITY, INPUT_STREET, INPUT_NUMBER)); } public OutputDefinition getOutputDefinition() { return OUTPUT_ADDRESS; } public TransformationFunction<GenericDataObject, String> getFunction() { return new TransformationFunction<GenericDataObject, String>() { public String transform(TransformationExecutionContext<GenericDataObject> context) throws DataIntegrationException { GenericDataObject inputValue = context.getInputValue(); String country = inputValue.getValue(INPUT_COUNTRY.getName()); String city = inputValue.getValue(INPUT_CITY.getName()); String street = inputValue.getValue(INPUT_STREET.getName()); Integer number = inputValue.getValue(INPUT_NUMBER.getName()); String output = MessageFormat .format("{0} {1} street, {2} city, {3}", number, street, city, country); return output; } }; } }
The following is an example of a custom transformation function with a generic output structure:
public class SplitStringComplexOutput implements TransformationDefinition<String, GenericDataObject> { InputDefinition INPUT_STRING = new InputDefinition( "Information", DintAPIInfoMessages.get_Dint_Transform_StringSplitFunction_Input_Name(), DintAPIInfoMessages.get_Dint_Transform_StringSplitFunction_Input_Description(), DefaultDataTypes.STRING, false); private static final OutputDefinition OUTPUT_STRING = new OutputDefinition( "Name", UserMessage.createInfo("Name"), UserMessage.createInfo("Name description"), DefaultDataTypes.STRING, false); private static final OutputDefinition OUTPUT_INTEGER = new OutputDefinition( "Age", UserMessage.createInfo("Age"), UserMessage.createInfo("Age description"), DefaultDataTypes.INTEGER, false); public InputDefinition getInputDefinition() { return this.INPUT_STRING; } public OutputDefinition getOutputDefinition() { return new OutputDefinition( "Complex output", "Complex output label", "Complex output description", Arrays.asList(OUTPUT_STRING, OUTPUT_INTEGER)); } public TransformationFunction<String, GenericDataObject> getFunction() { return new TransformationFunction<String, GenericDataObject>() { public GenericDataObject transform(TransformationExecutionContext<String> context) throws DataIntegrationException { String inputValue = context.getInputValue(); List<String> results = Arrays .asList(inputValue.split(Pattern.quote(this.separator))); String name = results.get(0); Integer age = Integer.valueOf(results.get(1)); GenericDataObject complexData = GenericDataObject.newInstance(); complexData.setValue(OUTPUT_STRING.getName(), name); complexData.setValue(OUTPUT_INTEGER.getName(), age); return complexData; } }; } }Please refer to the corresponding package for the detail and examples.
-
ClassDescriptionRepresents the value structure of a generic input or output of a transformation.The definition of a transformation's input.The definition of a transformation's output.The definition of a transformation's parameter.Categories of transformations.Allows to access the configuration of a transformation.Definition of a transformation.Accesses the data to be transformed.Transforms data based on
TransformationDefinition
.RegistersTransformationDefinition
s to be displayed in the mapping screen.