Interval.java
- /* Copyright 2015 Laurent COCAULT
- * Licensed to Laurent COCAULT under one or more contributor license agreements.
- * See the NOTICE file distributed with this work for additional information
- * regarding copyright ownership. Laurent COCAULT licenses this file to You
- * under the Apache License, Version 2.0 (the "License"); you may not use this
- * file except in compliance with the License. You may obtain a copy of the
- * License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package org.csp.constraint.model;
- /**
- * Represents a continuous interval on integer values. The _min and _max values
- * are inside the interval. The interval is defined as [_min;_max].
- */
- public class Interval<T extends Value<T>> implements Comparable<Interval<T>> {
- /**
- * Lower bound of the interval.
- */
- private T min_;
- /**
- * Upper bound of the interval.
- */
- private T max_;
- /**
- * Default constructor.
- * @param min
- * Initial lower bound of the interval
- * @param max
- * Initial upper bound of the interval
- */
- public Interval(final T min, final T max) {
- min_ = min;
- max_ = max;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public int compareTo(final Interval<T> other) {
- return min_.compareTo(other.min_);
- }
- /**
- * True if the given value is greater than the lower bound and lesser than
- * the upper bound.
- * @param value
- * to find in the interval
- * @return True if the value is in the interval
- */
- public boolean isInInterval(final T value) {
- return value != null && value.compareTo(min_) >= 0 &&
- value.compareTo(max_) <= 0;
- }
- /**
- * Returns the upper bound of the interval.
- * @return The maximum value of the interval
- */
- public T getMaxValue() {
- return max_;
- }
- /**
- * Returns the lower bound of the interval.
- * @return The minimum value of the interval
- */
- public T getMinValue() {
- return min_;
- }
- /**
- * Returns the number of elements in the interval.
- * @return The number of elements in the interval, 0 if it is empty
- */
- public int getSize() {
- return max_.getDistance(min_) + 1;
- }
- /**
- * True if the interval contains no value.
- * @return True if the interval is empty
- */
- public boolean isEmpty() {
- return getSize() == 0;
- }
- /**
- * Change the lower bound of the interval.
- * @param value
- * New lower bound
- */
- public void setMinValue(final T value) {
- min_ = value;
- }
- /**
- * Change the upper bound of the interval.
- * @param value
- * New upper bound
- */
- public void setMaxValue(final T value) {
- max_ = value;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public String toString() {
- return "[" + min_ + ";" + max_ + "]";
- }
- }