package mil.nga.giat.geowave.analytic.mapreduce.kde.compare;
import java.io.DataInput;
import java.io.DataOutput;
import java.io.IOException;
import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.hadoop.io.WritableComparable;
public class ComparisonCellData implements
WritableComparable<ComparisonCellData>
{
private double summerPercentile;
private double winterPercentile;
public ComparisonCellData() {}
public ComparisonCellData(
final double summerPercentile,
final double winterPercentile ) {
this.summerPercentile = summerPercentile;
this.winterPercentile = winterPercentile;
}
@Override
public void readFields(
final DataInput input )
throws IOException {
summerPercentile = input.readDouble();
winterPercentile = input.readDouble();
}
@Override
public void write(
final DataOutput output )
throws IOException {
output.writeDouble(summerPercentile);
output.writeDouble(winterPercentile);
}
public double getSummerPercentile() {
return summerPercentile;
}
public double getWinterPercentile() {
return winterPercentile;
}
public double getCombinedPercentile() {
return applyCombinationFunction(
summerPercentile,
winterPercentile);
}
@Override
public int compareTo(
final ComparisonCellData other ) {
final double combined = getCombinedPercentile();
return Double.compare(
combined,
other.getCombinedPercentile());
}
@Override
public boolean equals(
Object val ) {
if (!(val instanceof ComparisonCellData)) {
return false;
}
if (val == this) {
return true;
}
return this.compareTo((ComparisonCellData) val) == 0;
}
@Override
public int hashCode() {
return new HashCodeBuilder(
2003,
6373).append(
summerPercentile).append(
winterPercentile).toHashCode();
}
private static double applyCombinationFunction(
final double summerPercentile,
final double winterPercentile ) {
return summerPercentile - winterPercentile;
}
}