Class AbstractAggregation<T extends AggregationResultValue>

  • All Implemented Interfaces:
    Aggregation
    Direct Known Subclasses:
    Average, Maximum, Minimum, Sum

    public abstract class AbstractAggregation<T extends AggregationResultValue>
    extends java.lang.Object
    implements Aggregation
    Abstrakte Basisklasse für Aggregationen, die AggregationResultValue zur Vereinfachung benutzen. Vorgehensweise: AggregationResultValue ableiten, falls Zusatzinformationen je Attribut gespeichert werden sollen (sonst kann AggregationResultValue selbst verwendet werden). Für die Aggregation diese Klasse ableiten und die erforerlichen Methoden überschreiben. createAggregationResultValue() sollte dabei eine Methode sein, die eine Instanz des verwendeten AggregationResultValue-Typs erzeugt. Optional kann am Ende finish() überschieben werden um am Ende noch das Ergebnis zu berechnen (z.B. bei der Berechnung des Durchschnitts am Ende noch durch die Anzahl der aggregierten Daten teilen)
    • Method Summary

      Modifier and Type Method Description
      void aggregate​(ResultValue value)
      Führt die Aggregierung durch.
      protected abstract void aggregate​(T result, ExpressionResult newValue)
      Berechnung der Aggregation, der Implementierende sollte etwas aufrufen wie result.set(x) wobei x aus result.getValue() als altem Aggregationswert und newValue als neuem Wert berechnet wird.
      protected abstract java.util.function.Supplier<T> createAggregationResultValue()  
      void finish​(T t)
      Schließt die Berechnung von T als Aggregationswert ab.
      ResultValue getResult()
      Liefert das Ergebnis der Aggregation.
      java.lang.String toString()  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
    • Constructor Detail

      • AbstractAggregation

        public AbstractAggregation()
    • Method Detail

      • getResult

        public final ResultValue getResult()
                                    throws java.lang.UnsupportedOperationException
        Description copied from interface: Aggregation
        Liefert das Ergebnis der Aggregation. Der Aufruf dieser Methode kennzeichnet einen neuen Aggregationszyklus.
        Specified by:
        getResult in interface Aggregation
        Returns:
        Aggregierter Wert.
        Throws:
        java.lang.UnsupportedOperationException - Operation kann auf den Daten nicht durchgeführt werden.
        See Also:
        Aggregation.getResult()
      • createAggregationResultValue

        protected abstract java.util.function.Supplier<T> createAggregationResultValue()
      • finish

        public void finish​(T t)
        Schließt die Berechnung von T als Aggregationswert ab. Hier kann z.B. bei der Durchschnittsaggregation zum Schluss durch die Anzahl Werte (AggregationResultValue.getAggregationCount()) dividiert werden.
        Parameters:
        t - Bisheriger berechneter Wert und Rückgabe
      • aggregate

        protected abstract void aggregate​(T result,
                                          ExpressionResult newValue)
        Berechnung der Aggregation, der Implementierende sollte etwas aufrufen wie result.set(x) wobei x aus result.getValue() als altem Aggregationswert und newValue als neuem Wert berechnet wird.
        Parameters:
        result - Alter Wert und Rückgabe
        newValue - Wert der dazu aggregiert werden soll
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object