package com.revolsys.util;
import javax.measure.Measure;
import javax.measure.unit.NonSI;
import javax.measure.unit.Unit;
import com.revolsys.datatype.DataTypes;
public interface Measures {
static Measure<?> newMeasure(final Object value) {
if (value == null) {
return null;
} else if (value instanceof Measure) {
return (Measure<?>)value;
} else if (value instanceof Number) {
final Number number = (Number)value;
return Measure.valueOf(number.doubleValue(), NonSI.PIXEL);
} else {
final String string = DataTypes.toString(value);
return newMeasure(string);
}
}
static Measure<?> newMeasure(final String string) {
if (Property.hasValue(string)) {
final Measure<?> measure = Measure.valueOf(string);
final Number value = measure.getValue();
final Unit<?> unit = measure.getUnit();
return Measure.valueOf(value.doubleValue(), unit);
} else {
return null;
}
}
static String toString(final Object value) {
if (value == null) {
return null;
} else {
final Measure<?> measure = newMeasure(value);
final double doubleValue = measure.getValue().doubleValue();
if (Double.isInfinite(doubleValue) || Double.isNaN(doubleValue)) {
return String.valueOf(doubleValue) + " " + measure.getUnit();
} else {
return measure.toString();
}
}
}
}