/**************************************************************************************
* Copyright (C) 2008 EsperTech, Inc. All rights reserved. *
* http://esper.codehaus.org *
* http://www.espertech.com *
* ---------------------------------------------------------------------------------- *
* The software in this package is published under the terms of the GPL license *
* a copy of which has been included with this distribution in the license.txt file. *
**************************************************************************************/
package com.espertech.esper.filter;
/**
* Holds a range of double values with a minimum (start) value and a maximum (end) value.
*/
public final class DoubleRange implements Range
{
private Double min;
private Double max;
private int hashCode;
/**
* Constructor - takes range endpoints.
* @param min is the low endpoint
* @param max is the high endpoint
*/
public DoubleRange(Double min, Double max)
{
this.min = min;
this.max = max;
if ((min != null) && (max != null))
{
if (min > max)
{
this.max = min;
this.min = max;
}
}
hashCode = 7;
if (min != null)
{
hashCode = 31*hashCode;
hashCode ^= min.hashCode();
}
if (max != null)
{
hashCode = 31*hashCode;
hashCode ^= max.hashCode();
}
}
/**
* Returns low endpoint.
* @return low endpoint
*/
public final Double getMin()
{
return min;
}
public Object getHighEndpoint() {
return max;
}
public Object getLowEndpoint() {
return min;
}
/**
* Returns high endpoint.
* @return high endpoint
*/
public final Double getMax()
{
return max;
}
public final boolean equals(Object other)
{
if (other == this)
{
return true;
}
if (!(other instanceof DoubleRange))
{
return false;
}
DoubleRange otherRange = (DoubleRange) other;
return ((otherRange.max.doubleValue() == this.max) && (otherRange.min.doubleValue() == this.min));
}
public final int hashCode()
{
return hashCode;
}
public final String toString()
{
return "DoubleRange" +
" min=" + min +
" max=" + max;
}
}