package com.linkedin.thirdeye.client.comparison;
import java.util.ArrayList;
import java.util.List;
import org.joda.time.DateTime;
// TODO rename to TimeOnTimeComparisonRow?
public class Row {
private Row() {
}
DateTime baselineStart;
DateTime baselineEnd;
DateTime currentStart;
DateTime currentEnd;
String dimensionName = "all";
String dimensionValue = "all";
List<Row.Metric> metrics = new ArrayList<>();
static String DELIM = "\t\t";
public DateTime getBaselineStart() {
return baselineStart;
}
public DateTime getBaselineEnd() {
return baselineEnd;
}
public DateTime getCurrentStart() {
return currentStart;
}
public DateTime getCurrentEnd() {
return currentEnd;
}
public String getDimensionName() {
return dimensionName;
}
public String getDimensionValue() {
return dimensionValue;
}
public List<Row.Metric> getMetrics() {
return metrics;
}
public static void setDELIM(String dELIM) {
DELIM = dELIM;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(baselineStart).append(DELIM).append(baselineEnd).append(DELIM);
sb.append(currentStart).append(DELIM).append(currentEnd).append(DELIM);
sb.append(dimensionName).append(DELIM).append(dimensionValue);
for (Metric metric : metrics) {
sb.append(DELIM).append(metric.baselineValue).append(DELIM).append(metric.currentValue);
}
return sb.toString();
}
static class Builder {
Row row;
public Builder() {
row = new Row();
}
public void setBaselineStart(DateTime baselineStart) {
row.baselineStart = baselineStart;
}
public void setBaselineEnd(DateTime baselineEnd) {
row.baselineEnd = baselineEnd;
}
public void setCurrentStart(DateTime currentStart) {
row.currentStart = currentStart;
}
public void setCurrentEnd(DateTime currentEnd) {
row.currentEnd = currentEnd;
}
public void setDimensionName(String dimensionName) {
row.dimensionName = dimensionName;
}
public void setDimensionValue(String dimensionValue) {
row.dimensionValue = dimensionValue;
}
public void addMetric(String metricName, double baselineValue, double currentValue) {
row.metrics.add(new Metric(metricName, baselineValue, currentValue));
}
public Row build() {
return row;
}
}
public static class Metric {
String metricName;
Double baselineValue;
Double currentValue;
public String getMetricName() {
return metricName;
}
public Double getBaselineValue() {
return baselineValue;
}
public Double getCurrentValue() {
return currentValue;
}
public Metric(String metricName, Double baselineValue, Double currentValue) {
super();
this.metricName = metricName;
this.baselineValue = baselineValue;
this.currentValue = currentValue;
}
}
}