package com.revolsys.collection.range;
import com.revolsys.util.number.Integers;
public class IntRange extends AbstractRange<Integer> {
private int from;
private int to;
public IntRange() {
}
public IntRange(final int value) {
this(value, value);
}
public IntRange(final int from, final int 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 Integer intValue = Integers.toInteger(value);
if (intValue == null) {
return null;
} else {
return super.expand(intValue);
}
}
@Override
public Integer getFrom() {
return this.from;
}
@Override
public Integer getTo() {
return this.to;
}
@Override
protected IntRange newRange(final Object from, final Object to) {
return new IntRange((Integer)from, (Integer)to);
}
@Override
public Integer next(final Object value) {
if (value == null) {
return null;
} else {
final Integer intValue = Integers.toInteger(value);
if (intValue == null) {
return null;
} else {
final int number = intValue.intValue();
if (number == Integer.MAX_VALUE) {
return null;
} else {
return number + 1;
}
}
}
}
@Override
public Integer previous(final Object value) {
if (value == null) {
return null;
} else {
final Integer intValue = Integers.toInteger(value);
if (intValue == null) {
return null;
} else {
final int number = intValue.intValue();
if (number == Integer.MIN_VALUE) {
return null;
} else {
return number - 1;
}
}
}
}
protected void setFrom(final int from) {
this.from = from;
}
protected void setTo(final int to) {
this.to = to;
}
@Override
public long size() {
return this.to - this.from + 1;
}
}