Hello All,
In MathUtils there exists the method:
public static boolean checkOrder(double[] val, OrderDirection dir,
boolean strict, boolean abort) {
...code omitted...
}
I would like to replace it with the method:
public static boolean checkOrder(Comparable[] val, OrderDirection dir,
boolean strict, boolean abort ){
Comparable previous = val[0];
boolean ok = true;
int max = val.length;
int comp;
for (int i = 1; i < max; i++) {
comp = val[i].compareTo(previous);
switch (dir) {
case INCREASING:
if (strict) {
if (0 <= comp) {
ok = false;
}
} else {
if ( comp < 0) {
ok = false;
}
}
break;
case DECREASING:
if (strict) {
if (comp >= 0) {
ok = false;
}
} else {
if (comp > 0) {
ok = false;
}
}
break;
default:
// Should never happen.
throw new IllegalArgumentException();
}
if (!ok && abort) {
throw new NonMonotonousSequenceException(val[i], previous,
i, dir, strict);
}
previous = val[i];
}
return ok;
}
Would this be acceptable to all?
I would also need to change NonMonotonousSequenceException. It would take
comparables in the constructor and look like:
public NonMonotonousSequenceException(Comparable wrong,
Comparable previous,
int index,
MathUtils.OrderDirection
direction,
boolean strict) {
super(direction == MathUtils.OrderDirection.INCREASING ?
(strict ?
LocalizedFormats.NOT_STRICTLY_INCREASING_SEQUENCE :
LocalizedFormats.NOT_INCREASING_SEQUENCE) :
(strict ?
LocalizedFormats.NOT_STRICTLY_DECREASING_SEQUENCE :
LocalizedFormats.NOT_DECREASING_SEQUENCE),
(Number) previous.compareTo(wrong),
(Number)0, index, index - 1);
this.direction = direction;
this.strict = strict;
this.index = index;
this.previous = null;
this.previousComp = previous;
}
Thoughts?
Thanks!
-Greg