f7
f7 is a spreadsheet formula execution library
git clone https://git.vogt.world/f7.git
Log | Files | README.md | LICENSE.md
← All files
name: src/main/java/io/protobase/f7/formulas/statistical/COUNT.java
-rw-r--r--
1157
 1package io.protobase.f7.formulas.statistical;
 2
 3import io.protobase.f7.formulas.AbstractFormula;
 4import io.protobase.f7.formulas.FormulaName;
 5import io.protobase.f7.models.GridColumnRowKey;
 6import io.protobase.f7.utils.Filters;
 7import io.protobase.f7.utils.Mappers;
 8
 9import java.util.function.BiFunction;
10import java.util.function.Function;
11import java.util.stream.Collectors;
12import java.util.stream.Stream;
13
14/**
15 * The count of number values in a set of data.
16 */
17public class COUNT extends AbstractFormula {
18  public static FormulaName NAME = FormulaName.COUNT;
19  public static COUNT SELF = new COUNT();
20
21  public COUNT() {
22    super();
23  }
24
25  public COUNT(Function<Object, Object> lookup, BiFunction<GridColumnRowKey, Object, Object> collateralLookup) {
26    super(lookup, collateralLookup);
27  }
28
29  @Override
30  public Object internal(GridColumnRowKey origin, Object... values) {
31    checkAtLeastLength(values.length, 1, NAME);
32    return ((double) Stream.of(values)
33        .map(lookup)
34        .flatMap(Mappers::toFlatStreamGridFilterOnlyNumberLiterals)
35        .filter(Filters::isCoercableToNumeric)
36        .collect(Collectors.toList()).size());
37  }
38}