See: Description
| Interface | Description |
|---|---|
| AggregationTransformation | Deprecated
Since 2.3.0, replaced by
AggregationTransformation. |
| AggregationTransformationExecutionContext | Deprecated
Since 2.3.0, replaced by
AggregationTransformationExecutionContext. |
| TransferTransformationExecutionContext | Deprecated
Since 2.3.0, replaced by
TransferTransformationExecutionContext. |
| Transformation<T extends TransformationExecutionContext> | Deprecated
Since 2.3.0, replaced by
Transformation. |
| TransformationConfigurationContext | Deprecated
Since 2.3.0, replaced by
TransformationConfigurationContext. |
| TransformationDefinition | Deprecated
Since 2.3.0, replaced by
TransformationDefinition. |
| TransformationExecutionContext | Deprecated
Since 2.3.0, replaced by
TransformationExecutionContext. |
| XMLExportTransformationExecutionContext | Deprecated
Since 2.3.0, replaced by
ExportTransformationExecutionContext. |
| XMLImportTransformationExecutionContext | Deprecated
Since 2.3.0, replaced by
ImportTransformationExecutionContext. |
| Class | Description |
|---|---|
| AggregationTransformationExecutionValue | Deprecated
Since 2.3.0, replaced by
AggregationTransformationExecutionValue. |
| ApplicationType |
Defines possible application types.
|
| InputDefinition | Deprecated
Since 2.3.0, replaced by
InputDefinition. |
| OutputDefinition | Deprecated
Since 2.3.0, replaced by
OutputDefinition. |
| ParameterDefinition | Deprecated
Since 2.3.0, replaced by
ParameterDefinition. |
| TransformationCatalog | Deprecated
Since 2.3.0, replaced by
TransformationCatalog. |
| Enum | Description |
|---|---|
| Operation |
Classes and interfaces to call {addon.label} transformation functions to convert data for import, export and transfer.
You must define a custom transformation function before adding it to your code TransformationCatalog.
For example:
public final class TransformationDefinitionTest implements TransformationDefinition
{
public String getCode()
{
return "TRANSFORMATION_DEFINITION_TEST";
}
public UserMessage getLabel()
{
return UserMessage.createInfo("Transformation function test");
}
public UserMessage getDescription()
{
return UserMessage.createInfo("Transformation function test");
}
public List<InputDefinition> getInputDefinitions()
{
List<InputDefinition> inputDefinitions = new ArrayList<InputDefinition>();
inputDefinitions.add(new InputDefinition(
"Source field value",
UserMessage.createInfo("Storing source field value."),
SchemaTypeName.XS_INT,
false));
return inputDefinitions;
}
public OutputDefinition getOutputDefinition()
{
return new OutputDefinition(
UserMessage.createInfo("Storing target field value."),
SchemaTypeName.XS_STRING,
false);
}
public List<ParameterDefinition> getParameterDefinitions()
{
return new ArrayList<ParameterDefinition>();
}
public Transformation getTransformation(Operation operation)
{
switch (operation)
{
case IMPORT_XML:
return new XMLImportTransformationTest();
case EXPORT_XML:
return new XMLExportTransformationTest();
case TRANSFER_DATA:
return new TransferTransformationTest();
default:
return null;
}
}
public boolean isBidirectional()
{
return true;
}
public boolean isAggregation()
{
return false;
}
}
Next, create the implementation definition.
Example of import XML
public final class XMLImportTransformationTest implements Transformation<XMLImportTransformationExecutionContext>
{
public void setup(TransformationConfigurationContext configurationContext)
throws DataExchangeException
{
}
public Object execute(XMLImportTransformationExecutionContext executionContext)
throws DataExchangeException
{
if (executionContext == null)
{
throw new DataExchangeException(UserMessage.createError("Context is not initialized."));
}
Object inputValue = executionContext.getInputValue();
SchemaNode node = executionContext.getTargetSchemaNode();
if (inputValue == null)
{
return null;
}
try
{
if (Integer.class.isInstance(inputValue))
{
return node.formatToXsString(inputValue);
}
if (String.class.isInstance(inputValue))
{
String tmpValue = String.valueOf(inputValue);
if (tmpValue == null)
{
return null;
}
return node.parseXsString(tmpValue);
}
throw new DataExchangeException(UserMessage.createError("Invalid input data."));
}
catch (ClassCastException ex)
{
throw new DataExchangeException(ex);
}
catch (ConversionException ex)
{
throw new DataExchangeException(ex);
}
catch (Exception ex)
{
throw new DataExchangeException(ex);
}
}
}
Example of export XML
public final class XMLExportTransformationTest implements Transformation<XMLExportTransformationExecutionContext>
{
public void setup(TransformationConfigurationContext configurationContext)
throws DataExchangeException
{
}
public Object execute(XMLExportTransformationExecutionContext executionContext)
throws DataExchangeException
{
if (executionContext == null)
{
throw new DataExchangeException(UserMessage.createError("Context is not initialized."));
}
Object inputValue = executionContext.getInputValue();
SchemaNode node = executionContext.getSourceSchemaNode();
if (inputValue == null)
{
return null;
}
try
{
if (Integer.class.isInstance(inputValue))
{
return node.formatToXsString(inputValue);
}
if (String.class.isInstance(inputValue))
{
String tmpValue = String.valueOf(inputValue);
if (tmpValue == null)
{
return null;
}
return node.parseXsString(tmpValue);
}
throw new DataExchangeException(UserMessage.createError("Invalid input data."));
}
catch (ClassCastException ex)
{
throw new DataExchangeException(ex);
}
catch (ConversionException ex)
{
throw new DataExchangeException(ex);
}
catch (Exception ex)
{
throw new DataExchangeException(ex);
}
}
}
Example of transfer data
public final class TransferTransformationTest implements Transformation<TransferTransformationExecutionContext>
{
public void setup(TransformationConfigurationContext configurationContext)
throws DataExchangeException
{
}
public Object execute(TransferTransformationExecutionContext executionContext)
throws DataExchangeException
{
if (executionContext == null)
{
throw new DataExchangeException(UserMessage.createError("Context is not initialized."));
}
Object inputValue = executionContext.getInputValue();
SchemaNode node = executionContext.getSourceSchemaNode();
if (inputValue == null)
{
return null;
}
try
{
if (Integer.class.isInstance(inputValue))
{
return node.formatToXsString(inputValue);
}
if (String.class.isInstance(inputValue))
{
String tmpValue = String.valueOf(inputValue);
if (tmpValue == null)
{
return null;
}
return node.parseXsString(tmpValue);
}
throw new DataExchangeException(UserMessage.createError("Invalid input data."));
}
catch (ClassCastException ex)
{
throw new DataExchangeException(ex);
}
catch (ConversionException ex)
{
throw new DataExchangeException(ex);
}
catch (Exception ex)
{
throw new DataExchangeException(ex);
}
}
}
Finally, the transformation function must be registered in the add-on in order to be available in the configuration:
TransformationCatalog.add(new TransformationDefinitionTest());
First, create the custom aggregation transformation function definition.
For example:
public class AggregationDefinitionTest implements TransformationDefinition
{
public String getCode()
{
return "AGGREGATION_DEFINITION_TEST";
}
public UserMessage getLabel()
{
return UserMessage.createInfo("Aggregate of integer numbers");
}
public UserMessage getDescription()
{
return UserMessage.createInfo("The sum of the input integers");
}
public List<InputDefinition> getInputDefinitions()
{
List<InputDefinition> inputDefinitions = new ArrayList<InputDefinition>();
inputDefinitions.add(new InputDefinition(
"Source field values",
UserMessage.createInfo("List of input integers to calculate."),
SchemaTypeName.XS_INT,
true));
return inputDefinitions;
}
public OutputDefinition getOutputDefinition()
{
return new OutputDefinition(
UserMessage.createInfo("The sum of the input integers."),
SchemaTypeName.XS_INT,
false);
}
public List<ParameterDefinition> getParameterDefinitions()
{
return new ArrayList<ParameterDefinition>();
}
public Transformation getTransformation(Operation operation)
{
return new AggregationTransformationTest();
}
public boolean isBidirectional()
{
return false;
}
public boolean isAggregation()
{
return true;
}
}
Next, the definition of the implementation must be created. For example:
public class AggregationTransformationTest implements AggregationTransformation
{
public void setup(TransformationConfigurationContext configurationContext)
throws DataExchangeException
{
}
public Object execute(AggregationTransformationExecutionContext executionContext)
throws DataExchangeException
{
if (executionContext == null)
{
throw new DataExchangeException(UserMessage.createError("Context is not initialized."));
}
List<AggregationTransformationExecutionValue> inputs = executionContext.getInputValues();
if (inputs == null || inputs.isEmpty())
{
return inputs;
}
int sumOfInput = 0;
for (AggregationTransformationExecutionValue executeValue : inputs)
{
if (executeValue == null || executeValue.getValue() == null)
{
continue;
}
sumOfInput += this.sumOfInput(executeValue.getValue());
}
return Integer.valueOf(sumOfInput);
}
private int sumOfInput(Object inputValue) throws DataExchangeException
{
if (Integer.class.isInstance(inputValue))
{
return ((Integer) inputValue).intValue();
}
try
{
return Integer.valueOf((String) inputValue).intValue();
}
catch (Exception ex)
{
throw new DataExchangeException(ex);
}
}
}
Finally, the aggregation transformation function must be registered in the add-on in order to be available in the configuration:
TransformationCatalog.add(new AggregationDefinitionTest());