package com.revolsys.collection.range; import com.revolsys.util.number.Floats; public class FloatRange extends AbstractRange<Float> { private float from; private float to; public FloatRange() { } public FloatRange(final float value) { this(value, value); } public FloatRange(final float from, final float to) { if (from < to) { this.from = from; this.to = to; } else { this.from = to; this.to = from; } } @Override public AbstractRange<?> expand(final Object value) { final Float floatValue = Floats.toFloat(value); if (floatValue == null) { return null; } else { return super.expand(floatValue); } } @Override public Float getFrom() { return this.from; } public Float getRange() { return this.to - this.from; } @Override public Float getTo() { return this.to; } @Override protected FloatRange newRange(final Object from, final Object to) { return new FloatRange((Float)from, (Float)to); } @Override public Float next(final Object value) { if (value == null) { return null; } else { final Float floatValue = Floats.toFloat(value); if (floatValue == null) { return null; } else { final float number = floatValue.floatValue(); if (number == Float.MAX_VALUE) { return null; } else { return number + 1; } } } } @Override public Float previous(final Object value) { if (value == null) { return null; } else { final Float floatValue = Floats.toFloat(value); if (floatValue == null) { return null; } else { final float number = floatValue.floatValue(); if (number == Float.MIN_VALUE) { return null; } else { return number - 1; } } } } protected void setFrom(final float from) { this.from = from; } protected void setTo(final float to) { this.to = to; } @Override public long size() { return (long)Math.ceil(this.to) - (long)Math.floor(this.from) + 1; } }