package com.code44.finance.graphs.pie; import java.util.ArrayList; import java.util.Collections; import java.util.List; public final class PieChartData { private final List<PieChartValue> values; private final long totalValue; private PieChartData(List<PieChartValue> values) { this.values = values; long total = 0; for (PieChartValue value : values) { total += value.getValue(); } this.totalValue = total; } public static Builder builder() { return new Builder(); } public List<PieChartValue> getValues() { return values; } public long getTotalValue() { return totalValue; } public static class Builder { private List<PieChartValue> values; public Builder() { } public Builder setValues(List<PieChartValue> values) { this.values = values; return this; } public Builder addValues(PieChartValue value) { if (values == null) { values = new ArrayList<>(); } values.add(value); return this; } public PieChartData build() { ensureSaneDefaults(); return new PieChartData(values); } private void ensureSaneDefaults() { if (values == null) { values = Collections.emptyList(); } } } }