com.hazelcast.mapreduce.aggregation
Class Supplier<KeyIn,ValueIn,ValueOut>

java.lang.Object
  extended by com.hazelcast.mapreduce.aggregation.Supplier<KeyIn,ValueIn,ValueOut>
Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
All Implemented Interfaces:
Serializable
Direct Known Subclasses:
AcceptAllSupplier, KeyPredicateSupplier, PredicateSupplier

@Beta
public abstract class Supplier<KeyIn,ValueIn,ValueOut>
extends Object
implements Serializable

The Supplier interface is used to supply values from input data structures like IMap or MultiMap to an aggregation. Suppliers can also be used to filter elements based on keys or values using KeyPredicates or Predicates.
Additionally you can provide a PropertyExtractor implementation to extract or transform selected values to another value type. This is necessary if you don't want to aggregate the actual value type of the maps but an attribute of it.

The following examples using Java 8 Lambda syntax but everything is fully Java 6 or 7 compatible using implementations of the interfaces.

     // Select all values, no need to transform
     Supplier supplier = Supplier.all();

     // Select all values but transform to Integer
     Supplier supplier = Supplier.all((value) -> value.intValue());

     // Select only values where the value is bigger than 50
     Supplier supplier = Supplier.fromPredicate((entry) -> entry.getValue().intValue() > 50);

     // Select only values where the value is bigger than 50 and than chain it to a
     // supplier transformation to transform it into an Integer
     Supplier supplier = Supplier.fromPredicate((entry) -> entry.getValue().intValue() > 50,
                                                Supplier.all((value) -> value.intValue()));

     // Select only values where the key starts with "Foo"
     Supplier supplier = Supplier.fromKeyPredicate((key) -> key.startsWith("Foo"));

     // Select only values where the key starts with "Foo" and than chain it to a
     // supplier transformation to transform it into an Integer
     Supplier supplier = Supplier.fromKeyPredicate((key) -> key.startsWith("Foo"),
                                                   Supplier.all((value) -> value.intValue()));
 

Since:
3.3
See Also:
Serialized Form

Constructor Summary
Supplier()
           
 
Method Summary
static
<KeyIn,ValueIn,ValueOut>
Supplier<KeyIn,ValueIn,ValueOut>
all()
          The predefined Supplier selects all values and does not perform any kind of data transformation.
static
<KeyIn,ValueIn,ValueOut>
Supplier<KeyIn,ValueIn,ValueOut>
all(PropertyExtractor<ValueIn,ValueOut> propertyExtractor)
          The predefined Supplier selects all values and performs the given PropertyExtractors transformation to the input data.
abstract  ValueOut apply(Map.Entry<KeyIn,ValueIn> entry)
          The apply method is used to apply the actual filtering or extraction / transformation to the input entry.
If the input value should be ignored by the aggregation, the Supplier has to return
static
<KeyIn,ValueIn,ValueOut>
Supplier<KeyIn,ValueIn,ValueOut>
fromKeyPredicate(KeyPredicate<KeyIn> keyPredicate)
          The predefined Supplier selects values using the given KeyPredicate and does not perform any kind of data transformation.
static
<KeyIn,ValueIn,ValueOut>
Supplier<KeyIn,ValueIn,ValueOut>
fromKeyPredicate(KeyPredicate<KeyIn> keyPredicate, Supplier<KeyIn,ValueIn,ValueOut> chainedSupplier)
          The predefined Supplier selects values using the given KeyPredicate and chains the filtered value to the given Supplier which might perform data transformation.
static
<KeyIn,ValueIn,ValueOut>
Supplier<KeyIn,ValueIn,ValueOut>
fromPredicate(Predicate<KeyIn,ValueIn> predicate)
          The predefined Supplier selects values using the given Predicate and does not perform any kind of data transformation.
static
<KeyIn,ValueIn,ValueOut>
Supplier<KeyIn,ValueIn,ValueOut>
fromPredicate(Predicate<KeyIn,ValueIn> predicate, Supplier<KeyIn,ValueIn,ValueOut> chainedSupplier)
          The predefined Supplier selects values using the given Predicate and chains the filtered value to the given Supplier which might perform data transformation.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

Supplier

public Supplier()
Method Detail

apply

public abstract ValueOut apply(Map.Entry<KeyIn,ValueIn> entry)
The apply method is used to apply the actual filtering or extraction / transformation to the input entry.
If the input value should be ignored by the aggregation, the Supplier has to return
null
as the supplied value, therefor
null
is not a legal value itself!
All custom suppliers have to be serializable, if they hold internal state remember that the same supplier instance might be used from multiple threads concurrently.

Parameters:
entry - the entry key-value pair to supply to the aggregation
Returns:
the supplied value or null if value should be ignored

all

public static <KeyIn,ValueIn,ValueOut> Supplier<KeyIn,ValueIn,ValueOut> all()
The predefined Supplier selects all values and does not perform any kind of data transformation. Input value types need to match the aggregations expected value type to make this Supplier work.

Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
Returns:
all values from the underlying data structure as stored

all

public static <KeyIn,ValueIn,ValueOut> Supplier<KeyIn,ValueIn,ValueOut> all(PropertyExtractor<ValueIn,ValueOut> propertyExtractor)
The predefined Supplier selects all values and performs the given PropertyExtractors transformation to the input data. The returned value's type of the transformation needs to match the expected value type of the aggregation.

Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
Returns:
all values from the underlying data structure transformed using the given PropertyExtractor

fromPredicate

public static <KeyIn,ValueIn,ValueOut> Supplier<KeyIn,ValueIn,ValueOut> fromPredicate(Predicate<KeyIn,ValueIn> predicate)
The predefined Supplier selects values using the given Predicate and does not perform any kind of data transformation. Input value types need to match the aggregations expected value type to make this Supplier work.

Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
Returns:
selected values from the underlying data structure as stored

fromPredicate

public static <KeyIn,ValueIn,ValueOut> Supplier<KeyIn,ValueIn,ValueOut> fromPredicate(Predicate<KeyIn,ValueIn> predicate,
                                                                                      Supplier<KeyIn,ValueIn,ValueOut> chainedSupplier)
The predefined Supplier selects values using the given Predicate and chains the filtered value to the given Supplier which might perform data transformation.

Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
Returns:
all values from the underlying data structure, possibly transformed using the chains Supplier

fromKeyPredicate

public static <KeyIn,ValueIn,ValueOut> Supplier<KeyIn,ValueIn,ValueOut> fromKeyPredicate(KeyPredicate<KeyIn> keyPredicate)
The predefined Supplier selects values using the given KeyPredicate and does not perform any kind of data transformation. Input value types need to match the aggregations expected value type to make this Supplier work.

Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
Returns:
selected values from the underlying data structure as stored

fromKeyPredicate

public static <KeyIn,ValueIn,ValueOut> Supplier<KeyIn,ValueIn,ValueOut> fromKeyPredicate(KeyPredicate<KeyIn> keyPredicate,
                                                                                         Supplier<KeyIn,ValueIn,ValueOut> chainedSupplier)
The predefined Supplier selects values using the given KeyPredicate and chains the filtered value to the given Supplier which might perform data transformation.

Type Parameters:
KeyIn - the input key type
ValueIn - the input value type
ValueOut - the supplied value type
Returns:
all values from the underlying data structure, possibly transformed using the chains Supplier


Copyright © 2015 Hazelcast, Inc.. All Rights Reserved.