/*
* GeoTools - The Open Source Java GIS Toolkit
* http://geotools.org
*
* (C) 2008, Open Source Geospatial Foundation (OSGeo)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation;
* version 2.1 of the License.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*/
package org.geotools.temporal.object;
import javax.measure.unit.Unit;
import org.geotools.util.Utilities;
import org.opengis.temporal.IntervalLength;
/**
*A data type for intervals of time which supports the expression of duration in
* terms of a specified multiple of a single unit of time.
*
* @author Mehdi Sidhoum (Geomatys)
*
* @source $URL$
*/
public class DefaultIntervalLength extends DefaultDuration implements IntervalLength {
/**
* This is the name of the unit of measure used to express the length of the interval.
*/
private Unit unit;
/**
* This is the base of the multiplier of the unit.
*/
private int radix;
/**
* This is the exponent of the base.
*/
private int factor;
/**
* This is the length of the time interval as an integer multiple of one radix(exp -factor) of the specified unit.
*/
private int value;
/**
* Creates a new instance of IntervalUnit example : Unit="second" radix=10 factor=3 value=7 specifies a time interval length of 7ms.
* @param unit
* @param radix
* @param factor
* @param value
*/
public DefaultIntervalLength(Unit unit, int radix, int factor, int value) {
this.unit = unit;
this.radix = radix;
this.factor = factor;
this.value = value;
}
/**
* The unit of measure used to express the length of the interval.
*/
public Unit getUnit() {
return unit;
}
/**
* A positive integer that is the base of the mulitplier of the unit.
*/
public int getRadix() {
return radix;
}
/**
* The exponent of the base.
*/
public int getFactor() {
return factor;
}
public int getValue() {
return value;
}
@Override
public long getTimeInMillis() {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean equals(final Object object) {
if (object == this) {
return true;
}
if (object instanceof DefaultIntervalLength) {
final DefaultIntervalLength that = (DefaultIntervalLength) object;
return Utilities.equals(this.factor, that.factor) &&
Utilities.equals(this.radix, that.radix) &&
Utilities.equals(this.unit, that.unit) &&
Utilities.equals(this.value, that.unit);
}
return false;
}
@Override
public int hashCode() {
int hash = 5;
hash = 37 * hash + (this.unit != null ? this.unit.hashCode() : 0);
hash = 37 * hash + this.factor;
hash = 37 * hash + this.radix;
hash = 37 * hash + this.value;
return hash;
}
@Override
public String toString() {
StringBuilder s = new StringBuilder("IntervalLength:").append('\n');
if (unit != null) {
s.append("unit:").append(unit).append('\n');
}
s.append("radix:").append(radix).append('\n');
s.append("factor:").append(factor).append('\n');
s.append("value:").append(value).append('\n');
return s.toString();
}
}