package betsy.common.analytics.aggregation; import static java.util.Objects.requireNonNull; public class AggregationRules { public static AggregationRule<Boolean, TrivalentResult> GO_BIG_OR_GO_HOME = values -> { if(requireNonNull(values).stream().allMatch(i -> i)) { return TrivalentResult.PLUS; } else if(requireNonNull(values).stream().allMatch(i -> !i)) { return TrivalentResult.MINUS; } else { return TrivalentResult.PLUS_MINUS; } }; public static AggregationRule<TrivalentResult, TrivalentResult> EXTREMA = values -> { if(requireNonNull(values).stream().allMatch(i -> i == TrivalentResult.PLUS)) { return TrivalentResult.PLUS; } else if (requireNonNull(values).stream().allMatch(i -> i == TrivalentResult.MINUS)) { return TrivalentResult.MINUS; } else { return TrivalentResult.PLUS_MINUS; } }; /** * By sorting the first one is always the best one. * * UNUSED */ public static AggregationRule<TrivalentResult, TrivalentResult> BEST = values -> requireNonNull(values).stream().sorted().findFirst().orElse(TrivalentResult.MINUS); }