You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by mb...@apache.org on 2013/01/27 20:32:00 UTC
svn commit: r1439153 - in
/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range:
DoubleRange.java Endpoint.java FloatRange.java IntegerRange.java
LongRange.java NumericRange.java
Author: mbenson
Date: Sun Jan 27 19:32:00 2013
New Revision: 1439153
URL: http://svn.apache.org/viewvc?rev=1439153&view=rev
Log:
start to merge commonalities among NumericRanges, including a few small bugfixes
Modified:
commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/DoubleRange.java
commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/Endpoint.java
commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/FloatRange.java
commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/IntegerRange.java
commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/LongRange.java
commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/NumericRange.java
Modified: commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/DoubleRange.java
URL: http://svn.apache.org/viewvc/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/DoubleRange.java?rev=1439153&r1=1439152&r2=1439153&view=diff
==============================================================================
--- commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/DoubleRange.java (original)
+++ commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/DoubleRange.java Sun Jan 27 19:32:00 2013
@@ -19,7 +19,6 @@ package org.apache.commons.functor.gener
import org.apache.commons.functor.BinaryFunction;
import org.apache.commons.functor.UnaryProcedure;
-import org.apache.commons.lang3.Validate;
/**
* A generator for a range of doubles.
@@ -29,23 +28,6 @@ import org.apache.commons.lang3.Validate
*/
public class DoubleRange extends NumericRange<Double> {
- // attributes
- // ---------------------------------------------------------------
- /**
- * Left limit.
- */
- private final Endpoint<Double> leftEndpoint;
-
- /**
- * Right limit.
- */
- private final Endpoint<Double> rightEndpoint;
-
- /**
- * Increment step.
- */
- private final double step;
-
/**
* Calculate default step.
*/
@@ -110,20 +92,9 @@ public class DoubleRange extends Numeric
* @param rightBoundType type of right bound
* @param step increment
*/
- public DoubleRange(double from, BoundType leftBoundType, double to,
- BoundType rightBoundType, double step) {
- this.leftEndpoint = Validate
- .notNull(new Endpoint<Double>(from, leftBoundType),
- "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(new Endpoint<Double>(to, rightBoundType),
- "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to && Math.signum(step) != Math.signum(to - from)) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public DoubleRange(double from, BoundType leftBoundType, double to, BoundType rightBoundType, double step) {
+ this(new Endpoint<Double>(Double.valueOf(from), leftBoundType), new Endpoint<Double>(Double.valueOf(to),
+ rightBoundType), Double.valueOf(step));
}
/**
@@ -133,19 +104,8 @@ public class DoubleRange extends Numeric
* @param to end
* @param step increment
*/
- public DoubleRange(Endpoint<Double> from, Endpoint<Double> to, double step) {
- this.leftEndpoint = Validate
- .notNull(from, "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(to, "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to
- && Math.signum(step) != Math.signum(to.getValue().doubleValue()
- - from.getValue().doubleValue())) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public DoubleRange(Endpoint<Double> from, Endpoint<Double> to, Double step) {
+ super(from, to, step);
}
// methods
@@ -154,27 +114,6 @@ public class DoubleRange extends Numeric
/**
* {@inheritDoc}
*/
- public Endpoint<Double> getLeftEndpoint() {
- return this.leftEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Endpoint<Double> getRightEndpoint() {
- return this.rightEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Double getStep() {
- return this.step;
- }
-
- /**
- * {@inheritDoc}
- */
public void run(UnaryProcedure<? super Double> proc) {
final double step = this.getStep();
final boolean includeLeftValue = this.getLeftEndpoint()
@@ -208,45 +147,4 @@ public class DoubleRange extends Numeric
}
}
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "DoubleRange<" + this.leftEndpoint.toLeftString() + ", "
- + this.rightEndpoint.toRightString() + ", " + this.step + ">";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (!(obj instanceof DoubleRange)) {
- return false;
- }
- DoubleRange that = (DoubleRange) obj;
- return this.leftEndpoint.equals(that.leftEndpoint)
- && this.rightEndpoint.equals(that.rightEndpoint)
- && this.step == that.step;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- int hash = "DoubleRange".hashCode();
- hash <<= 2;
- hash ^= this.leftEndpoint.getValue().hashCode();
- hash <<= 2;
- hash ^= this.rightEndpoint.getValue().hashCode();
- hash <<= 2;
- hash ^= Double.valueOf(this.step).hashCode();
- return hash;
- }
-
}
Modified: commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/Endpoint.java
URL: http://svn.apache.org/viewvc/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/Endpoint.java?rev=1439153&r1=1439152&r2=1439153&view=diff
==============================================================================
--- commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/Endpoint.java (original)
+++ commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/Endpoint.java Sun Jan 27 19:32:00 2013
@@ -84,8 +84,7 @@ public class Endpoint<T extends Comparab
return false;
}
Endpoint<?> that = (Endpoint<?>) obj;
- return this.boundType == that.boundType
- && this.value.equals(that.value);
+ return this.boundType == that.boundType && this.value.equals(that.value);
}
/**
Modified: commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/FloatRange.java
URL: http://svn.apache.org/viewvc/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/FloatRange.java?rev=1439153&r1=1439152&r2=1439153&view=diff
==============================================================================
--- commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/FloatRange.java (original)
+++ commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/FloatRange.java Sun Jan 27 19:32:00 2013
@@ -19,7 +19,6 @@ package org.apache.commons.functor.gener
import org.apache.commons.functor.BinaryFunction;
import org.apache.commons.functor.UnaryProcedure;
-import org.apache.commons.lang3.Validate;
/**
* A generator for a range of float.
@@ -29,23 +28,6 @@ import org.apache.commons.lang3.Validate
*/
public class FloatRange extends NumericRange<Float> {
- // attributes
- // ---------------------------------------------------------------
- /**
- * Left limit.
- */
- private final Endpoint<Float> leftEndpoint;
-
- /**
- * Right limit.
- */
- private final Endpoint<Float> rightEndpoint;
-
- /**
- * Increment step.
- */
- private final float step;
-
/**
* Calculate default step.
*/
@@ -109,20 +91,9 @@ public class FloatRange extends NumericR
* @param rightBoundType type of right bound
* @param step increment
*/
- public FloatRange(float from, BoundType leftBoundType, float to,
- BoundType rightBoundType, float step) {
- this.leftEndpoint = Validate
- .notNull(new Endpoint<Float>(from, leftBoundType),
- "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(new Endpoint<Float>(to, rightBoundType),
- "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to && Math.signum(step) != Math.signum(to - from)) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public FloatRange(float from, BoundType leftBoundType, float to, BoundType rightBoundType, float step) {
+ this(new Endpoint<Float>(Float.valueOf(from), leftBoundType), new Endpoint<Float>(Float.valueOf(to),
+ rightBoundType), Float.valueOf(step));
}
/**
@@ -132,19 +103,8 @@ public class FloatRange extends NumericR
* @param to end
* @param step increment
*/
- public FloatRange(Endpoint<Float> from, Endpoint<Float> to, float step) {
- this.leftEndpoint = Validate
- .notNull(from, "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(to, "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to
- && Math.signum(step) != Math.signum(to.getValue().doubleValue()
- - from.getValue().doubleValue())) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public FloatRange(Endpoint<Float> from, Endpoint<Float> to, Float step) {
+ super(from, to, step);
}
// methods
@@ -152,27 +112,6 @@ public class FloatRange extends NumericR
/**
* {@inheritDoc}
*/
- public Endpoint<Float> getLeftEndpoint() {
- return this.leftEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Endpoint<Float> getRightEndpoint() {
- return this.rightEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Float getStep() {
- return this.step;
- }
-
- /**
- * {@inheritDoc}
- */
public void run(UnaryProcedure<? super Float> proc) {
final float step = this.getStep();
final boolean includeLeftValue = this.getLeftEndpoint()
@@ -206,45 +145,4 @@ public class FloatRange extends NumericR
}
}
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "FloatRange<" + this.leftEndpoint.toLeftString() + ", "
- + this.rightEndpoint.toRightString() + ", " + this.step + ">";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (!(obj instanceof FloatRange)) {
- return false;
- }
- FloatRange that = (FloatRange) obj;
- return this.leftEndpoint.equals(that.leftEndpoint)
- && this.rightEndpoint.equals(that.rightEndpoint)
- && this.step == that.step;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- int hash = "FloatRange".hashCode();
- hash <<= 2;
- hash ^= this.leftEndpoint.getValue().hashCode();
- hash <<= 2;
- hash ^= this.rightEndpoint.getValue().hashCode();
- hash <<= 2;
- hash ^= Float.valueOf(this.step).hashCode();
- return hash;
- }
-
}
Modified: commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/IntegerRange.java
URL: http://svn.apache.org/viewvc/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/IntegerRange.java?rev=1439153&r1=1439152&r2=1439153&view=diff
==============================================================================
--- commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/IntegerRange.java (original)
+++ commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/IntegerRange.java Sun Jan 27 19:32:00 2013
@@ -19,7 +19,6 @@ package org.apache.commons.functor.gener
import org.apache.commons.functor.BinaryFunction;
import org.apache.commons.functor.UnaryProcedure;
-import org.apache.commons.lang3.Validate;
/**
* A range of integers.
@@ -29,23 +28,6 @@ import org.apache.commons.lang3.Validate
*/
public class IntegerRange extends NumericRange<Integer> {
- // attributes
- // ---------------------------------------------------------------
- /**
- * Left limit.
- */
- private final Endpoint<Integer> leftEndpoint;
-
- /**
- * Right limit.
- */
- private final Endpoint<Integer> rightEndpoint;
-
- /**
- * Increment step.
- */
- private final int step;
-
/**
* Calculate default step.
*/
@@ -110,20 +92,9 @@ public class IntegerRange extends Numeri
* @param rightBoundType type of right bound
* @param step increment
*/
- public IntegerRange(int from, BoundType leftBoundType, int to,
- BoundType rightBoundType, int step) {
- this.leftEndpoint = Validate
- .notNull(new Endpoint<Integer>(from, leftBoundType),
- "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(new Endpoint<Integer>(to, rightBoundType),
- "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to && Integer.signum(step) != Integer.signum(to - from)) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public IntegerRange(int from, BoundType leftBoundType, int to, BoundType rightBoundType, int step) {
+ this(new Endpoint<Integer>(Integer.valueOf(from), leftBoundType), new Endpoint<Integer>(Integer.valueOf(to),
+ rightBoundType), Integer.valueOf(step));
}
/**
@@ -133,43 +104,12 @@ public class IntegerRange extends Numeri
* @param to end
* @param step increment
*/
- public IntegerRange(Endpoint<Integer> from, Endpoint<Integer> to, int step) {
- this.leftEndpoint = Validate
- .notNull(from, "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(to, "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to
- && Integer.signum(step) != Integer.signum(to.getValue()
- - from.getValue())) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
- }
+ public IntegerRange(Endpoint<Integer> from, Endpoint<Integer> to, Integer step) {
+ super(from, to, step);
+ }
// methods
// ---------------------------------------------------------------
- /**
- * {@inheritDoc}
- */
- public Endpoint<Integer> getLeftEndpoint() {
- return this.leftEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Endpoint<Integer> getRightEndpoint() {
- return this.rightEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Integer getStep() {
- return this.step;
- }
/**
* {@inheritDoc}
@@ -207,45 +147,4 @@ public class IntegerRange extends Numeri
}
}
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "IntegerRange<" + this.leftEndpoint.toLeftString()
- + ", " + this.rightEndpoint.toRightString()
- + ", " + this.step + ">";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (!(obj instanceof IntegerRange)) {
- return false;
- }
- IntegerRange that = (IntegerRange) obj;
- return this.leftEndpoint.equals(that.leftEndpoint)
- && this.rightEndpoint.equals(that.rightEndpoint)
- && this.step == that.step;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- int hash = "IntegerRange".hashCode();
- hash <<= 2;
- hash ^= this.leftEndpoint.getValue();
- hash <<= 2;
- hash ^= this.rightEndpoint.getValue();
- hash <<= 2;
- hash ^= this.step;
- return hash;
- }
}
Modified: commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/LongRange.java
URL: http://svn.apache.org/viewvc/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/LongRange.java?rev=1439153&r1=1439152&r2=1439153&view=diff
==============================================================================
--- commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/LongRange.java (original)
+++ commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/LongRange.java Sun Jan 27 19:32:00 2013
@@ -16,7 +16,6 @@ package org.apache.commons.functor.gener
import org.apache.commons.functor.BinaryFunction;
import org.apache.commons.functor.UnaryProcedure;
-import org.apache.commons.lang3.Validate;
/**
* A range of longs.
@@ -25,24 +24,6 @@ import org.apache.commons.lang3.Validate
* @version $Revision$ $Date$
*/
public final class LongRange extends NumericRange<Long> {
- // attributes
- //---------------------------------------------------------------
-
- /**
- * Left limit.
- */
- private final Endpoint<Long> leftEndpoint;
-
- /**
- * Right limit.
- */
- private final Endpoint<Long> rightEndpoint;
-
- /**
- * Increment step.
- */
- private final long step;
-
/**
* Calculate default step.
*/
@@ -106,20 +87,9 @@ public final class LongRange extends Num
* @param rightBoundType type of right bound
* @param step increment
*/
- public LongRange(long from, BoundType leftBoundType, long to,
- BoundType rightBoundType, long step) {
- this.leftEndpoint = Validate
- .notNull(new Endpoint<Long>(from, leftBoundType),
- "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(new Endpoint<Long>(to, rightBoundType),
- "Right Endpoint argument must not be null");
- this.step = step;
- if (from != to && Long.signum(step) != Long.signum(to - from)) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public LongRange(long from, BoundType leftBoundType, long to, BoundType rightBoundType, long step) {
+ this(new Endpoint<Long>(Long.valueOf(from), leftBoundType),
+ new Endpoint<Long>(Long.valueOf(to), rightBoundType), Long.valueOf(step));
}
/**
@@ -129,18 +99,8 @@ public final class LongRange extends Num
* @param to end
* @param step increment
*/
- public LongRange(Endpoint<Long> from, Endpoint<Long> to, long step) {
- this.leftEndpoint = Validate
- .notNull(from, "Left Endpoint argument must not be null");
- this.rightEndpoint = Validate
- .notNull(to, "Right Endpoint argument must not be null");
- this.step = step;
- if (from.equals(to) == Boolean.FALSE
- && Long.signum(step) != Long.signum(to.getValue() - from.getValue())) {
- throw new IllegalArgumentException("Will never reach " + to
- + " from " + from
- + " using step " + step);
- }
+ public LongRange(Endpoint<Long> from, Endpoint<Long> to, Long step) {
+ super(from, to, step);
}
// methods
@@ -181,66 +141,4 @@ public final class LongRange extends Num
}
}
- /**
- * {@inheritDoc}
- */
- public Endpoint<Long> getLeftEndpoint() {
- return this.leftEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Endpoint<Long> getRightEndpoint() {
- return this.rightEndpoint;
- }
-
- /**
- * {@inheritDoc}
- */
- public Long getStep() {
- return this.step;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "LongRange<" + this.leftEndpoint.toLeftString() + ", "
- + this.rightEndpoint.toRightString() + ", " + step + ">";
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public boolean equals(Object obj) {
- if (obj == this) {
- return true;
- }
- if (!(obj instanceof LongRange)) {
- return false;
- }
- LongRange that = (LongRange) obj;
- return this.leftEndpoint.equals(that.leftEndpoint)
- && this.rightEndpoint.equals(that.rightEndpoint)
- && this.step == that.step;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public int hashCode() {
- int hash = "LongRange".hashCode();
- hash <<= 2;
- hash ^= this.leftEndpoint.getValue();
- hash <<= 2;
- hash ^= this.rightEndpoint.getValue();
- hash <<= 2;
- hash ^= this.step;
- return hash;
- }
-
}
Modified: commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/NumericRange.java
URL: http://svn.apache.org/viewvc/commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/NumericRange.java?rev=1439153&r1=1439152&r2=1439153&view=diff
==============================================================================
--- commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/NumericRange.java (original)
+++ commons/proper/functor/branches/FUNCTOR-14-mm/core/src/main/java/org/apache/commons/functor/generator/range/NumericRange.java Sun Jan 27 19:32:00 2013
@@ -20,6 +20,7 @@ package org.apache.commons.functor.gener
import java.util.Collection;
import org.apache.commons.functor.generator.loop.LoopGenerator;
+import org.apache.commons.lang3.Validate;
/**
* A base class for numeric ranges. The elements within this range must be a
@@ -35,6 +36,57 @@ import org.apache.commons.functor.genera
* @version $Revision: $ $Date: $
*/
public abstract class NumericRange<T extends Number & Comparable<T>> extends LoopGenerator<T> implements Range<T, T> {
+ // attributes
+ // ---------------------------------------------------------------
+ /**
+ * Left limit.
+ */
+ protected final Endpoint<T> leftEndpoint;
+
+ /**
+ * Right limit.
+ */
+ protected final Endpoint<T> rightEndpoint;
+
+ protected final T step;
+
+ /**
+ * Create a new NumericRange instance.
+ * @param from left endpoint
+ * @param to right endpoint
+ * @param step
+ */
+ protected NumericRange(Endpoint<T> from, Endpoint<T> to, T step) {
+ this.leftEndpoint = Validate.notNull(from, "Left Endpoint argument must not be null");
+ this.rightEndpoint = Validate.notNull(to, "Right Endpoint argument must not be null");
+ this.step = Validate.notNull(step, "step argument must not be null");
+ final int cmp = to.getValue().compareTo(from.getValue());
+ if (cmp != 0 && Double.valueOf(Math.signum(step.doubleValue())).intValue() != cmp) {
+ throw new IllegalArgumentException(String.format("Will never reach %s from %s using step %s", to, from,
+ step));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Endpoint<T> getLeftEndpoint() {
+ return leftEndpoint;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public Endpoint<T> getRightEndpoint() {
+ return rightEndpoint;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public T getStep() {
+ return step;
+ }
/**
* {@inheritDoc}
@@ -110,4 +162,43 @@ public abstract class NumericRange<T ext
return true;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String toString() {
+ return String.format("%s<%s, %s, %s>", getClass().getSimpleName(), this.leftEndpoint.toLeftString(),
+ rightEndpoint.toRightString(), this.step);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public boolean equals(Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof NumericRange<?>)) {
+ return false;
+ }
+ NumericRange<?> that = (NumericRange<?>) obj;
+ return this.leftEndpoint.equals(that.leftEndpoint) && this.rightEndpoint.equals(that.rightEndpoint)
+ && this.step.equals(that.step);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public int hashCode() {
+ int hash = getClass().getSimpleName().hashCode();
+ hash <<= 2;
+ hash ^= this.leftEndpoint.getValue().hashCode();
+ hash <<= 2;
+ hash ^= this.rightEndpoint.getValue().hashCode();
+ hash <<= 2;
+ hash ^= this.step.hashCode();
+ return hash;
+ }
}