Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagexml
titleExample config for passing attribute id's to custom transformation
<?xml version="1.0" encoding="UTF-8"?>
<transformationModule version="1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.wldelft.nl/fews" xsi:schemaLocation="http://www.wldelft.nl/fews http://fews.wldelft.nl/schemas/version1.0/transformationModule.xsd">
	<variable>
		<variableId>input</variableId>
		<timeSeriesSet>
			<moduleInstanceId>UserDefinedFunctionTest</moduleInstanceId>
			<valueType>scalar</valueType>
			<parameterId>Q.m</parameterId>
			<locationSetId>locationAttributeTest</locationSetId>
			<timeSeriesType>external historical</timeSeriesType>
			<timeStep unit="day" multiplier="1"/>
			<relativeViewPeriod unit="day" start="0" end="1"/>
			<readWriteMode>editing visible to all future task runs</readWriteMode>
		</timeSeriesSet>
	</variable>
	<variable>
		<variableId>output</variableId>
		<timeSeriesSet>
			<moduleInstanceId>UserDefinedFunctionTest</moduleInstanceId>
			<valueType>scalar</valueType>
			<parameterId>Q.dis</parameterId>
			<locationSetId>locationAttributeTest</locationSetId>
			<timeSeriesType>external historical</timeSeriesType>
			<timeStep unit="day" multiplier="1"/>
			<relativeViewPeriod unit="day" start="0" end="1"/>
			<readWriteMode>editing visible to all future task runs</readWriteMode>
		</timeSeriesSet>
	</variable>
	<transformation id="userDefinedFunctionTestWithLocationAttributes">
		<custom>
			<userDefined>
				<input>
					<fieldName>input</fieldName>
					<inputVariable>
						<variableId>input</variableId>
					</inputVariable>
				</input>
				<options>
					<string key="stringAttributeID" value="stringAttributeKey"></string>
					<string key="booleanAttributeID" value="booleanAttributeKey"></string>
					<string key="dateTimeAttributeID" value="dateTimeAttributeKey"></string>
					<string key="doubleAttributeID" value="doubleAttributeKey"></string>
				</options>
				<output>
					<fieldName>output</fieldName>
					<outputVariable>
						<variableId>output</variableId>
					</outputVariable>
				</output>
				<className>nl.wldelft.fews.openapi.transformationmodule.CustomTestFunctionWithLocationAttributes</className>
			</userDefined>
		</custom>
	</transformation>
</transformationModule>

Example Java class:

Code Block
languagejava
titleExample Java class for custom transformation processing location attributes
package nl.wldelft.fews.openapi.transformationmodule;

import nl.wldelft.util.timeseries.Variable;

import java.util.Arrays;

public class CustomTestFunctionWithLocationAttributes implements Calculation, LocationAttributeValuesProviderConsumer {
    @Input
    Variable input = null;

    @Input
    String stringAttributeID = null;
    @Input
    String booleanAttributeID = null;
    @Input
    String dateTimeAttributeID = null;
    @Input
    String doubleAttributeID = null;

    @Output
    Variable output = null;

    private LocationAttributeValuesProvider locationAttributeValuesProvider = null;

    @Override
    public void calculate() throws Exception {
        String locationId = input.header.getLocationId();

        // Single value
        locationAttributeValuesProvider.getBooleanValue(locationId, booleanAttributeID);
        locationAttributeValuesProvider.getStringValue(locationId, stringAttributeID);
        locationAttributeValuesProvider.getNumericValue(locationId, doubleAttributeID);
        locationAttributeValuesProvider.getDateTimeValue(locationId, dateTimeAttributeID);

        // Multivalued
        locationAttributeValuesProvider.getBooleanValues(locationId, booleanAttributeID);
        locationAttributeValuesProvider.getStringValues(locationId, stringAttributeID);
        locationAttributeValuesProvider.getNumericValues(locationId, doubleAttributeID);
        locationAttributeValuesProvider.getDateTimeValues(locationId, dateTimeAttributeID);
    }

    @Override
    public void setLocationAttributeValuesProvider(LocationAttributeValuesProvider locationAttributeValuesProvider) {
        this.locationAttributeValuesProvider = locationAttributeValuesProvider;
    }
}