Package org.apache.sis.feature
Class AbstractOperation
- Object
-
- AbstractIdentifiedType
-
- AbstractOperation
-
- All Implemented Interfaces:
Serializable,BiFunction<AbstractFeature,ParameterValueGroup,Object>,Deprecable
public abstract class AbstractOperation extends AbstractIdentifiedType implements BiFunction<AbstractFeature,ParameterValueGroup,Object>
Describes the behaviour of a feature type as a function or a method. Operations can:- Compute values from the attributes.
- Perform actions that change the attribute values.
Example: a mutator operation may raise the height of a dam. This changes may affect other properties like the watercourse and the reservoir associated with the dam.The value is computed, or the operation is executed, byapply(Feature, ParameterValueGroup). If the value is modifiable, new value can be set by call toAttribute.setValue(Object).Warning: this class is experimental and may change after we gained more experience on this aspect of ISO 19109.- Since:
- 0.6
- See Also:
DefaultFeatureType, Serialized Form
Defined in the
sis-featuremodule
-
-
Field Summary
-
Fields inherited from class AbstractIdentifiedType
DEFINITION_KEY, DEPRECATED_KEY, DESCRIPTION_KEY, DESIGNATION_KEY, NAME_KEY
-
-
Constructor Summary
Constructors Constructor Description AbstractOperation(Map<String,?> identification)Constructs an operation from the given properties.
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract Objectapply(AbstractFeature feature, ParameterValueGroup parameters)Executes the operation on the specified feature with the specified parameters.booleanequals(Object obj)Compares this operation with the given object for equality.Set<String>getDependencies()Returns the names of feature properties that this operation needs for performing its task.abstract ParameterDescriptorGroupgetParameters()Returns a description of the input parameters.abstract AbstractIdentifiedTypegetResult()Returns the expected result type, ornullif none.inthashCode()Returns a hash code value for this operation.StringtoString()Returns a string representation of this operation.-
Methods inherited from class AbstractIdentifiedType
getDefinition, getDescription, getDesignation, getName, getRemarks, isDeprecated
-
Methods inherited from class Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface BiFunction
andThen
-
-
-
-
Constructor Detail
-
AbstractOperation
public AbstractOperation(Map<String,?> identification)
Constructs an operation from the given properties. The identification map is given unchanged to the super-class constructor. The following table is a reminder of main (not all) recognized map entries:Recognized map entries (non exhaustive list) Map key Value type Returned by "name" GenericNameorStringAbstractIdentifiedType.getName()"definition" InternationalStringorStringAbstractIdentifiedType.getDefinition()"designation" InternationalStringorStringAbstractIdentifiedType.getDesignation()"description" InternationalStringorStringAbstractIdentifiedType.getDescription()"deprecated" BooleanAbstractIdentifiedType.isDeprecated()- Parameters:
identification- the name and other information to be given to this operation.
-
-
Method Detail
-
getParameters
public abstract ParameterDescriptorGroup getParameters()
Returns a description of the input parameters.- Returns:
- description of the input parameters.
-
getResult
public abstract AbstractIdentifiedType getResult()
Returns the expected result type, ornullif none.Warning: In a future SIS version, the return type may be changed toorg.opengis.feature.IdentifiedType. This change is pending GeoAPI revision.- Returns:
- the type of the result, or
nullif none.
-
apply
public abstract Object apply(AbstractFeature feature, ParameterValueGroup parameters)
Executes the operation on the specified feature with the specified parameters. The value returned by this method depends on the value returned bygetResult():- If
getResult()returnsnull, then this method should returnnull. - If
getResult()returns an instance ofAttributeType, then this method shall return an instance ofAttributeand theAttribute.getType() == getResult()relation should hold. - If
getResult()returns an instance ofFeatureAssociationRole, then this method shall return an instance ofFeatureAssociationand theFeatureAssociation.getRole() == getResult()relation should hold.
Analogy: if we compareOperationtoMethodin the Java language, then this method is equivalent toMethod.invoke(Object, Object...). TheFeatureargument is equivalent tothisin the Java language, and may benullif the operation does not need a feature instance (like static methods in the Java language).Warning: In a future SIS version, the parameter type and return value may be changed toorg.opengis.feature.Featureandorg.opengis.feature.Propertyrespectively. This change is pending GeoAPI revision.- Specified by:
applyin interfaceBiFunction<AbstractFeature,ParameterValueGroup,Object>- Parameters:
feature- the feature on which to execute the operation. Can benullif the operation does not need feature instance.parameters- the parameters to use for executing the operation. Can benullif the operation does not take any parameters.- Returns:
- the operation result, or
nullif this operation does not produce any result.
- If
-
getDependencies
public Set<String> getDependencies()
Returns the names of feature properties that this operation needs for performing its task. This method does not resolve transitive dependencies, i.e. if a dependency is itself an operation having other dependencies, the returned set will contain the name of that operation but not the names of that operation dependencies (unless they are the same that the direct dependencies ofthis).Rational: this information is needed for writing theThe default implementation returns an empty set.SELECTSQL statement to send to a database server. The requested columns will typically be all attributes declared in aFeatureType, but also any additional columns needed for the operation while not necessarily included in theFeatureType.- Returns:
- the names of feature properties needed by this operation for performing its task.
-
hashCode
public int hashCode()
Returns a hash code value for this operation. The default implementation computes a hash code from the parameters descriptor and result type.- Overrides:
hashCodein classAbstractIdentifiedType- Returns:
- the hash code for this type.
-
equals
public boolean equals(Object obj)
Compares this operation with the given object for equality. The default implementation compares the parameters descriptor and result type.- Overrides:
equalsin classAbstractIdentifiedType- Parameters:
obj- the object to compare with this type.- Returns:
trueif the given object is equals to this type.
-
-