org.das2.datum
Class Units

java.lang.Object
  extended by org.das2.datum.Units
All Implemented Interfaces:
Displayable
Direct Known Subclasses:
EnumerationUnits, NumberUnits

public abstract class Units
extends java.lang.Object
implements Displayable


Field Summary
static Units bytes
           
static Units bytesPerSecond
           
static TimeLocationUnits cdfEpoch
          cdf epoch milliseconds since midnight, 01-Jan-0000.
static Units celciusDegrees
           
static Units centigrade
          begin of LocationUnits.
static Units cmps
           
static Units days
           
static Units dB
           
static Units degrees
           
static Units dimensionless
           
static Units eV
           
static Units fahrenheitDegrees
           
static Units fahrenheitScale
           
static Units hertz
           
static Units hours
           
static Units inches
           
static Units kelvin
           
static Units kiloBytes
           
static Units kiloBytesPerSecond
           
static Units kiloHertz
           
static Units kiloMeters
           
static Units log10Ratio
           
static Units logERatio
           
static Units megaHertz
           
static Units meters
           
static Units microseconds
           
static Units milliseconds
           
static Units minutes
           
static TimeLocationUnits mj1958
          roughly days since noon on some day in 1958, Julian - 2436204.5 to be more precise.
static TimeLocationUnits mjd
          The Modified Julian Day (MJD) is the number of days (with decimal fraction of the day) that have elapsed since midnight at the beginning of Wednesday November 17, 1858.
static Units nanoseconds
           
static Units pcm3
          1 / cm3
static Units percent
          ratiometric units
static Units percentIncrease
          Define a set of units to describe ratiometric (logarithmic) spacing.
static Units radians
           
static Units seconds
           
static TimeLocationUnits t1970
          seconds since midnight Jan 1, 1970.
static TimeLocationUnits t2000
          Seconds since midnight Jan 1, 2000.
static TimeLocationUnits us1980
          Microseconds since midnight Jan 1, 1980.
static TimeLocationUnits us2000
          Microseconds since midnight Jan 1, 2000.
static Units v2pm2Hz
          volts / m2 Hz
static Units wpm2
          Watts / m2
 
Constructor Summary
protected Units(java.lang.String id)
           
protected Units(java.lang.String id, java.lang.String description)
           
 
Method Summary
abstract  Datum add(java.lang.Number a, java.lang.Number b, Units bUnits)
           
 double convertDoubleTo(Units toUnits, double value)
          convert the double in this units' space to toUnits' space.
abstract  Datum createDatum(double value)
           
abstract  Datum createDatum(double value, double resolution)
           
abstract  Datum createDatum(int value)
           
abstract  Datum createDatum(long value)
           
abstract  Datum createDatum(java.lang.Number value)
           
abstract  Datum divide(java.lang.Number a, java.lang.Number b, Units bUnits)
           
 java.lang.String format(Datum datum)
           
 Basis getBasis()
          return the Basis which defines the meaning of zero and the direction of positive values, such as "since midnight, Jan 1, 1970"
static Units getByName(java.lang.String s)
          returns a Units object with the given string representation that is stored in the unitsMap.
 Units[] getConvertableUnits()
           
 UnitsConverter getConverter(Units toUnits)
           
static UnitsConverter getConverter(Units fromUnits, Units toUnits)
          lookup the UnitsConverter object that takes numbers from fromUnits to toUnits.
abstract  DatumFormatterFactory getDatumFormatterFactory()
           
 Datum getFillDatum()
           
 double getFillDouble()
           
 float getFillFloat()
           
 int getFillInt()
           
 long getFillLong()
           
 java.lang.String getId()
           
 javax.swing.Icon getListIcon()
          An icon can be provided that will be shown in a list along with the textual description of the element.
 java.lang.String getListLabel()
          return a String that will help the user identify this item when choosing from a list.
 Units getOffsetUnits()
          return the units from the Basis for the unit, such as "seconds" in "seconds since midnight, Jan 1, 1970"
 java.lang.String grannyFormat(Datum datum)
           
 boolean isConvertableTo(Units toUnits)
           
 boolean isFill(double value)
           
 boolean isFill(float value)
           
 boolean isFill(int value)
           
 boolean isFill(long value)
           
 boolean isFill(java.lang.Number value)
           
 boolean isValid(double value)
          test if the double represents a valid datum in the context of this unit.
static void main(java.lang.String[] args)
           
abstract  Datum multiply(java.lang.Number a, java.lang.Number b, Units bUnits)
           
abstract  Datum parse(java.lang.String s)
           
 void registerConverter(Units toUnits, UnitsConverter converter)
           
abstract  Datum subtract(java.lang.Number a, java.lang.Number b, Units bUnits)
           
 java.lang.String toString()
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

dimensionless

public static final Units dimensionless

dB

public static final Units dB

radians

public static final Units radians

degrees

public static final Units degrees

celciusDegrees

public static final Units celciusDegrees

fahrenheitDegrees

public static final Units fahrenheitDegrees

hours

public static final Units hours

minutes

public static final Units minutes

seconds

public static final Units seconds

milliseconds

public static final Units milliseconds

microseconds

public static final Units microseconds

nanoseconds

public static final Units nanoseconds

days

public static final Units days

bytesPerSecond

public static final Units bytesPerSecond

kiloBytesPerSecond

public static final Units kiloBytesPerSecond

bytes

public static final Units bytes

kiloBytes

public static final Units kiloBytes

hertz

public static final Units hertz

kiloHertz

public static final Units kiloHertz

megaHertz

public static final Units megaHertz

eV

public static final Units eV

pcm3

public static final Units pcm3
1 / cm3


kelvin

public static final Units kelvin

cmps

public static final Units cmps

v2pm2Hz

public static final Units v2pm2Hz
volts / m2 Hz


wpm2

public static final Units wpm2
Watts / m2


inches

public static final Units inches

meters

public static final Units meters

kiloMeters

public static final Units kiloMeters

centigrade

public static final Units centigrade
begin of LocationUnits. These must be defined after the physical units to support Basis.


fahrenheitScale

public static final Units fahrenheitScale

us2000

public static final TimeLocationUnits us2000
Microseconds since midnight Jan 1, 2000.


us1980

public static final TimeLocationUnits us1980
Microseconds since midnight Jan 1, 1980.


t2000

public static final TimeLocationUnits t2000
Seconds since midnight Jan 1, 2000.


t1970

public static final TimeLocationUnits t1970
seconds since midnight Jan 1, 1970.


mj1958

public static final TimeLocationUnits mj1958
roughly days since noon on some day in 1958, Julian - 2436204.5 to be more precise.


mjd

public static final TimeLocationUnits mjd
The Modified Julian Day (MJD) is the number of days (with decimal fraction of the day) that have elapsed since midnight at the beginning of Wednesday November 17, 1858. Julian - 2400000.5


cdfEpoch

public static final TimeLocationUnits cdfEpoch
cdf epoch milliseconds since midnight, 01-Jan-0000. There must be skipped days, because this doesn't yeild 01-Jan-0000 for 0., but works fine at 1-1-2000.


percent

public static final Units percent
ratiometric units


percentIncrease

public static final Units percentIncrease
Define a set of units to describe ratiometric (logarithmic) spacing. Note that Units.percent is no longer the defacto ratiometric spacing, and Units.percentIncrease takes its place. Note the log10Ratio is the preferred method for expressing spacing, but all are convertible See logERatio, log10Ratio and google for "fold change."


log10Ratio

public static final Units log10Ratio

logERatio

public static final Units logERatio
Constructor Detail

Units

protected Units(java.lang.String id)

Units

protected Units(java.lang.String id,
                java.lang.String description)
Method Detail

getId

public java.lang.String getId()

registerConverter

public void registerConverter(Units toUnits,
                              UnitsConverter converter)

getConvertableUnits

public Units[] getConvertableUnits()

isConvertableTo

public boolean isConvertableTo(Units toUnits)
Returns:
true if the unit can be converted to toUnits.

getConverter

public static UnitsConverter getConverter(Units fromUnits,
                                          Units toUnits)
lookup the UnitsConverter object that takes numbers from fromUnits to toUnits. This will chain together UnitsConverters registered via units.registerConverter.

Parameters:
fromUnits -
toUnits -
Returns:
UnitsConverter object
Throws:
InconvertibleUnitsException - when the conversion is not possible.

getConverter

public UnitsConverter getConverter(Units toUnits)
Parameters:
toUnits -
Returns:
Throws:
java.lang.IllegalArgumentException - if conversion between units is not possible

convertDoubleTo

public final double convertDoubleTo(Units toUnits,
                                    double value)
convert the double in this units' space to toUnits' space. This method is final so that a converter must be registered.


toString

public java.lang.String toString()
Overrides:
toString in class java.lang.Object

getOffsetUnits

public Units getOffsetUnits()
return the units from the Basis for the unit, such as "seconds" in "seconds since midnight, Jan 1, 1970"

Returns:

getBasis

public Basis getBasis()
return the Basis which defines the meaning of zero and the direction of positive values, such as "since midnight, Jan 1, 1970"

Returns:

createDatum

public abstract Datum createDatum(double value)

createDatum

public abstract Datum createDatum(int value)

createDatum

public abstract Datum createDatum(long value)

createDatum

public abstract Datum createDatum(java.lang.Number value)

createDatum

public abstract Datum createDatum(double value,
                                  double resolution)

getFillDouble

public double getFillDouble()

getFillFloat

public float getFillFloat()

getFillInt

public int getFillInt()

getFillLong

public long getFillLong()

getFillDatum

public Datum getFillDatum()

isFill

public boolean isFill(double value)

isFill

public boolean isFill(float value)

isFill

public boolean isFill(long value)

isFill

public boolean isFill(int value)

isFill

public boolean isFill(java.lang.Number value)

isValid

public boolean isValid(double value)
test if the double represents a valid datum in the context of this unit. Note slight differences in implementation may cause isFill and isValid to produce inconsistent results. For example, this code checks for NaNs whereas isFill does not.

Returns:
true if the data is not fill and not NaN.

getDatumFormatterFactory

public abstract DatumFormatterFactory getDatumFormatterFactory()

parse

public abstract Datum parse(java.lang.String s)
                     throws java.text.ParseException
Throws:
java.text.ParseException

format

public java.lang.String format(Datum datum)

grannyFormat

public java.lang.String grannyFormat(Datum datum)

add

public abstract Datum add(java.lang.Number a,
                          java.lang.Number b,
                          Units bUnits)

subtract

public abstract Datum subtract(java.lang.Number a,
                               java.lang.Number b,
                               Units bUnits)

multiply

public abstract Datum multiply(java.lang.Number a,
                               java.lang.Number b,
                               Units bUnits)

divide

public abstract Datum divide(java.lang.Number a,
                             java.lang.Number b,
                             Units bUnits)

getByName

public static Units getByName(java.lang.String s)
returns a Units object with the given string representation that is stored in the unitsMap.

Throws:
java.lang.IllegalArgumentException - if the unit is not recognized.

main

public static void main(java.lang.String[] args)
                 throws java.text.ParseException
Throws:
java.text.ParseException

getListIcon

public javax.swing.Icon getListIcon()
Description copied from interface: Displayable
An icon can be provided that will be shown in a list along with the textual description of the element. This method should return null if there is no icon available.

Specified by:
getListIcon in interface Displayable

getListLabel

public java.lang.String getListLabel()
Description copied from interface: Displayable
return a String that will help the user identify this item when choosing from a list.

Specified by:
getListLabel in interface Displayable