be.SIRAPRISE.typeimplementations
Interface AggregationOperatorImplementation

All Superinterfaces:
OperatorImplementation, OperatorImplementation_V0104
All Known Implementing Classes:
AND_BOOLEAN_BOOLEAN, EQ_BOOLEAN_BOOLEAN, MAX_DATE_DATE, MAX_FLOAT_FLOAT, MAX_INT_INT, MAX_LONG_LONG, MAX_TIMEOFDAY_TIMEOFDAY, MIN_DATE_DATE, MIN_FLOAT_FLOAT, MIN_INT_INT, MIN_LONG_LONG, MIN_TIMEOFDAY_TIMEOFDAY, MULT_FLOAT_FLOAT, MULT_INT_INT, MULT_LONG_LONG, OR_BOOLEAN_BOOLEAN, PLUS_AVERAGE_AVERAGE, PLUS_DECIMAL_DECIMAL, PLUS_FLOAT_FLOAT, PLUS_INT_INT, PLUS_LONG_LONG, PLUS_TIMEOFDAY_TIMEOFDAY, XOR_BOOLEAN_BOOLEAN

public interface AggregationOperatorImplementation
extends OperatorImplementation_V0104

AggregationOperatorImplementation is the interface that must/can be implemented by all operator implementations that are both commutative and associative, meaning in particular :

  1. The basic form of the operator is binary, i.e. it has two arguments.
  2. Those arguments are of the same type.
  3. The return type is the same as the arguments.
  4. The mathematical property holds for this operator that for all a,b,c : ((a op b) op c) == (a op (b op c)).
  5. The mathematical property of commutativity holds as well (i.e. for all a,c : (a op c) == (c op a)).

Sira_prise's aggregation operations on attribute values within relations can only be performed using operators that implement this interface. An operator such as e.g. String concatenation satisfies the property of associativity, but not that of commutativity. Such operators cannot be used in aggregation operations.

Author:
Erwin Smout

Method Summary
 ScalarValueBuffer getIdentityElement()
          Gets the identity element of the operator in its domain.
 
Methods inherited from interface be.SIRAPRISE.typeimplementations.OperatorImplementation_V0104
isDeterministic
 
Methods inherited from interface be.SIRAPRISE.typeimplementations.OperatorImplementation
executeOperator, getArgumentTypeNames, getReturnTypeName
 

Method Detail

getIdentityElement

ScalarValueBuffer getIdentityElement()
                                     throws NoIdentityElementException
Gets the identity element of the operator in its domain.

Returns:
The identity element.
Throws:
NoIdentityElementException - if no such element exists within the (finite bounds of the) operator's domain.