package ru.ulstu.models; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import java.util.ArrayList; import java.util.List; public class TimeSeries { private List values = new ArrayList<>(); private String name; public TimeSeries(String name) { this.name = name; } @JsonCreator public TimeSeries(@JsonProperty(value = "values") List values, @JsonProperty(value = "name") String name) { this.values = values; this.name = name; } public TimeSeries() { } public TimeSeries(List values) { this.values = values; } public List getValues() { return values; } public void setValues(List values) { this.values = values; } public String getName() { return name; } public void setName(String name) { this.name = name; } public boolean isEmpty() { return values.isEmpty(); } public void addValue(TimeSeriesValue timeSeriesValue) { values.add(timeSeriesValue); } public void addValue(TimeSeriesValue basedOnValue, Double value) { values.add(new TimeSeriesValue(basedOnValue.getDate().plusDays(1), value)); } public TimeSeriesValue getLastValue() { return values.get(values.size() - 1); } public int getLength() { return values.size(); } public TimeSeriesValue getFirstValue() { if ((values.size() > 0)) { return values.get(0); } throw new RuntimeException("Временной ряд пуст"); } public Double getNumericValue(int t) { if ((values.size() > t) && (t >= 0)) { return values.get(t).getValue(); } throw new RuntimeException("Индекс выходит за границы временного ряда"); } @Override public String toString() { return "TimeSeries{" + "values=" + values + ", name='" + name + '\'' + '}'; } }