Class TimeMapper

  • All Implemented Interfaces:
    DomainMapper

    public abstract class TimeMapper
    extends java.lang.Object
    implements DomainMapper
    DomainMapper for mapping values to epochs in a common time scale. The target domain is doubles giving the number of seconds since the Unix epoch (1970-01-01T00:00:00). The time scale is generally assumed to be UTC, though conversions may not always be performed, for instance for values in which the intended time scale is not obvious.

    A java (IEEE 754) double has 52+1 bits of precision, which I make 52*ln(2)/ln(10)=15.65 decimal places, and a year contains 3.15e7 seconds, which gives you the following precisions:

    • epoch +/- 1.7 months: 1 nanosecond precision
    • epoch +/- 140 years: 1 microsecond precision
    • epoch +/- 140 kyears: 1 millisecond precision
    • epoch +/- 140 Myears: 1 second precision
    That means around microsecond precision for values near the current epoch (unless this software proves more long lasting than I anticipate). It should be OK for most purposes.
    Since:
    12 Aug 2013
    Author:
    Mark Taylor
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static TimeMapper DECIMAL_YEAR
      Mapper for numeric values in decimal year (since 0 AD).
      static TimeMapper ISO_8601
      Mapper for ISO-8601 strings.
      static TimeMapper JD
      Mapper for numeric values in Julian Day.
      static TimeMapper MJD
      Mapper for numeric values in Modified Julian Date.
      static java.lang.String TARGET_NAME
      Returns target domain name ("Time").
      static TimeMapper UNIX_SECONDS
      Mapper for numeric values (already) in unix seconds.
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected TimeMapper​(java.lang.Class sourceClass, java.lang.String sourceName, java.lang.String sourceDescription)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Class getSourceClass()
      Returns the type of values from which this mapper instance can convert.
      java.lang.String getSourceDescription()
      Returns a description of the type of source values which this mapper can convert from.
      java.lang.String getSourceName()
      Returns a short name for the type of source values which this mapper can convert from.
      java.lang.String getTargetName()
      Returns TARGET_NAME.
      static TimeMapper[] getTimeMappers()
      Returns a selection of time mapper instances.
      abstract double toUnixSeconds​(java.lang.Object sourceValue)
      Maps a source value to time in seconds since the Unix epoch.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • TARGET_NAME

        public static final java.lang.String TARGET_NAME
        Returns target domain name ("Time").
        See Also:
        Constant Field Values
      • DECIMAL_YEAR

        public static final TimeMapper DECIMAL_YEAR
        Mapper for numeric values in decimal year (since 0 AD).
      • MJD

        public static final TimeMapper MJD
        Mapper for numeric values in Modified Julian Date.
      • JD

        public static final TimeMapper JD
        Mapper for numeric values in Julian Day.
      • UNIX_SECONDS

        public static final TimeMapper UNIX_SECONDS
        Mapper for numeric values (already) in unix seconds.
      • ISO_8601

        public static final TimeMapper ISO_8601
        Mapper for ISO-8601 strings.
    • Constructor Detail

      • TimeMapper

        protected TimeMapper​(java.lang.Class sourceClass,
                             java.lang.String sourceName,
                             java.lang.String sourceDescription)
        Constructor.
        Parameters:
        sourceClass -
        sourceName - source type name
        sourceDescription - source type description
    • Method Detail

      • getSourceClass

        public java.lang.Class getSourceClass()
        Description copied from interface: DomainMapper
        Returns the type of values from which this mapper instance can convert.
        Specified by:
        getSourceClass in interface DomainMapper
        Returns:
        class of mapper source objects to which this mapper can be applied
      • getSourceName

        public java.lang.String getSourceName()
        Description copied from interface: DomainMapper
        Returns a short name for the type of source values which this mapper can convert from.
        Specified by:
        getSourceName in interface DomainMapper
        Returns:
        mapper source type name
      • getSourceDescription

        public java.lang.String getSourceDescription()
        Description copied from interface: DomainMapper
        Returns a description of the type of source values which this mapper can convert from.
        Specified by:
        getSourceDescription in interface DomainMapper
        Returns:
        mapper source type description
      • toUnixSeconds

        public abstract double toUnixSeconds​(java.lang.Object sourceValue)
        Maps a source value to time in seconds since the Unix epoch.
        Parameters:
        sourceValue - value in source domain
        Returns:
        number of seconds since midnight 1 Jan 1970
      • getTimeMappers

        public static TimeMapper[] getTimeMappers()
        Returns a selection of time mapper instances.