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 - source class
        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.