package com.bizo.asperatus.tracker.impl; import java.util.List; import org.apache.commons.lang.builder.ToStringBuilder; import com.bizo.asperatus.model.Dimension; import com.bizo.asperatus.model.Unit; final class Aggregation { private final String name; private final double count; private final double sum; private final double min; private final double max; private final Unit unit; private final List<Dimension> dimensions; public Aggregation( final String name, final double count, final double sum, final double min, final double max, final List<Dimension> dimensions) { this(name, count, sum, min, max, Unit.Count, dimensions); } public Aggregation( final String name, final double count, final double sum, final double min, final double max, final Unit unit, final List<Dimension> dimensions) { this.name = name; this.count = count; this.sum = sum; this.min = min; this.max = max; this.unit = unit; this.dimensions = dimensions; } public String getName() { return name; } public List<Dimension> getDimensions() { return dimensions; } public Unit getUnit() { return unit; } public double getCount() { return count; } public double getSum() { return sum; } public double getMin() { return min; } public double getMax() { return max; } public String toString() { return ToStringBuilder.reflectionToString(this); } @Override public int hashCode() { final int prime = 31; int result = 1; long temp; temp = Double.doubleToLongBits(count); result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + ((dimensions == null) ? 0 : dimensions.hashCode()); temp = Double.doubleToLongBits(max); result = prime * result + (int) (temp ^ (temp >>> 32)); temp = Double.doubleToLongBits(min); result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + ((name == null) ? 0 : name.hashCode()); temp = Double.doubleToLongBits(sum); result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + ((unit == null) ? 0 : unit.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Aggregation other = (Aggregation) obj; if (Double.doubleToLongBits(count) != Double.doubleToLongBits(other.count)) return false; if (dimensions == null) { if (other.dimensions != null) return false; } else if (!dimensions.equals(other.dimensions)) return false; if (Double.doubleToLongBits(max) != Double.doubleToLongBits(other.max)) return false; if (Double.doubleToLongBits(min) != Double.doubleToLongBits(other.min)) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; if (Double.doubleToLongBits(sum) != Double.doubleToLongBits(other.sum)) return false; if (unit != other.unit) return false; return true; } }