package com.linkedin.thirdeye.client.diffsummary;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.fasterxml.jackson.annotation.JsonProperty;
public class DimensionValues implements Comparable<DimensionValues> {
@JsonProperty("values")
private List<String> values;
public DimensionValues() {
this.values = new ArrayList<String>();
}
public DimensionValues(List<String> values) {
this.values = values;
}
public String get(int index) {
return values.get(index);
}
public List<String> values() {
return Collections.<String> unmodifiableList(values);
}
public int size() {
return values.size();
}
/**
* Example Results:
* 1. D1 = {"a"} D2 = {"s"} ==> compare strings "a" and "s" directly
* 2. D1 = {"a"} D2 = {"a", "b"} ==> D1 > D2
* 3. D1 = {"s"} D2 = {"a", "b"} ==> compare strings "a" and "s" directly
* {@inheritDoc}
* @see java.lang.Comparable#compareTo(java.lang.Object)
*/
@Override
public int compareTo(DimensionValues other) {
if (values.size() == 0)
return 1;
Iterator<String> ite = other.values.iterator();
for (int i = 0; i < values.size(); ++i) {
if (ite.hasNext()) {
String oString = ite.next();
if (values.get(i).equals(oString))
continue;
return values.get(i).compareTo(oString);
} else {
return -1;
}
}
return 1;
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.SIMPLE_STYLE);
}
}