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/models/FormulaNode.java
-rw-r--r--
1561
 1package io.protobase.f7.models;
 2
 3import com.google.common.base.MoreObjects;
 4
 5import java.util.ArrayList;
 6import java.util.List;
 7
 8/**
 9 * A formula node is a named formula with 0 or more arguments that are other nodes.
10 */
11public class FormulaNode extends BaseObject implements Node {
12  private String name;
13  private List<Node> arguments;
14
15
16  public FormulaNode(String name, List<Node> arguments) {
17    this.name = name;
18    this.arguments = arguments;
19  }
20
21  public FormulaNode(String name) {
22    this.name = name;
23    this.arguments = new ArrayList<>();
24  }
25
26
27  public static Builder builder() {
28    return new Builder();
29  }
30
31  public boolean isEmpty() {
32    return arguments.isEmpty();
33  }
34
35  /**
36   * Get formula name.
37   *
38   * @return formula name.
39   */
40  public String getName() {
41    return name;
42  }
43
44  public List<Node> getArguments() {
45    return arguments;
46  }
47
48  @Override
49  public String toString() {
50    return MoreObjects.toStringHelper(this)
51        .add("name", name)
52        .add("arguments", arguments)
53        .toString();
54  }
55
56  @Override
57  public Object[] significantAttributes() {
58    return new Object[]{
59        name,
60        arguments
61    };
62  }
63
64  public static class Builder {
65    private String name;
66    private List<Node> arguments = new ArrayList<>();
67
68    public Builder name(String name) {
69      this.name = name;
70      return this;
71    }
72
73    public Builder value(Node value) {
74      arguments.add(value);
75      return this;
76    }
77
78    public FormulaNode build() {
79      return new FormulaNode(name, arguments);
80    }
81  }
82}