Class OffsetDateTimeType

All Implemented Interfaces:
DataType<OffsetDateTime>

@Service(DataType.class) public final class OffsetDateTimeType extends AbstractDateTimeType<OffsetDateTime>
Datatype for OffsetDateTime.

Stored as 2 columns:

  1. the timestamp normalized to GMT (hence sortable)
  2. the zone offset in seconds
The MAPNULL option maps to 1970-01-01 00:00:00+00:00.
This type is sortable by the first column.
  • Constructor Details

    • OffsetDateTimeType

      public OffsetDateTimeType()
      Creates the datatype for OffsetDateTime.
  • Method Details

    • timestampOf

      public static Timestamp timestampOf(OffsetDateTime value)
      Derives the timestamp from an OffsetDateTime value.
      Parameters:
      value - the OffsetDateTime value
      Returns:
      the timestamp
    • offsetOf

      public static int offsetOf(OffsetDateTime value)
      Derives the timezone offset from an OffsetDateTime value.
      Parameters:
      value - the OffsetDateTime value
      Returns:
      the timezone offset in seconds
    • getJavaType

      public String getJavaType()
      Description copied from interface: DataType
      Gets the name of the Java type.
      Returns:
      the type
    • isMapNullSupported

      public boolean isMapNullSupported()
      Description copied from interface: DataType
      Returns whether this type supports mapping null values to some well-defined constant.
      Specified by:
      isMapNullSupported in interface DataType<OffsetDateTime>
      Overrides:
      isMapNullSupported in class AbstractDataType<OffsetDateTime>
      Returns:
      true if mapNull supported
    • getMappedNullValue

      public Object getMappedNullValue(Backend backend, int index)
      Description copied from interface: DataType
      Gets the mapped non-null value that represents the model's null value.
      The method throws a BackendException, if !DataType.isMapNullSupported().
      Specified by:
      getMappedNullValue in interface DataType<OffsetDateTime>
      Overrides:
      getMappedNullValue in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the backend, null if not backend-specific
      index - the column index
      Returns:
      the non-null mapped value
    • getColumnCount

      public int getColumnCount(Backend backend)
      Description copied from interface: DataType
      Gets the number of database columns.
      A tentackle type may be mapped to more than one column for multi-column types such as BMoney.
      Specified by:
      getColumnCount in interface DataType<OffsetDateTime>
      Overrides:
      getColumnCount in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the backend, ignored if !DataType.isColumnCountBackendSpecific()
      Returns:
      default is 1
    • getCommentSuffix

      public Optional<String> getCommentSuffix(Backend backend, int index)
      Description copied from interface: DataType
      Gets the optional comment suffix.
      If present, it will be appended to the comment.

      Important: for datatypes with more than one column, none or exactly one should be without suffix. See WurbletArgument in tentackle-wurblets.

      Specified by:
      getCommentSuffix in interface DataType<OffsetDateTime>
      Overrides:
      getCommentSuffix in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the backend, ignored if !DataType.isColumnCountBackendSpecific()
      index - the column index
      Returns:
      the optional suffix
    • getColumnGetter

      public String getColumnGetter(int index, String varName)
      Description copied from interface: DataType
      Returns the java code to get the value of a column.
      Specified by:
      getColumnGetter in interface DataType<OffsetDateTime>
      Overrides:
      getColumnGetter in class AbstractDataType<OffsetDateTime>
      Parameters:
      index - the column index
      varName - the java variable name
      Returns:
      the java code, empty string if this is a single column type
    • getColumnAlias

      public String getColumnAlias(int index)
      Description copied from interface: DataType
      Gets the alias name of a column.
      Specified by:
      getColumnAlias in interface DataType<OffsetDateTime>
      Overrides:
      getColumnAlias in class AbstractDataType<OffsetDateTime>
      Parameters:
      index - the column index
      Returns:
      the column's alias
    • getColumnValue

      public Object getColumnValue(Backend backend, int index, OffsetDateTime value)
      Description copied from interface: DataType
      Gets the value of a column.
      Specified by:
      getColumnValue in interface DataType<OffsetDateTime>
      Overrides:
      getColumnValue in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the backend, ignored if !DataType.isColumnCountBackendSpecific()
      index - the column index
      value - the datatype's value according to the model
      Returns:
      the column's value
    • getSize

      public int getSize(Backend backend, int index, Integer size)
      Description copied from interface: DataType
      Gets the column size.
      Sizes may be differently aligned according to the backend.
      Specified by:
      getSize in interface DataType<OffsetDateTime>
      Overrides:
      getSize in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the backend
      index - the column index
      size - the size from the model
      Returns:
      the column size
    • getScale

      public int getScale(Backend backend, int index, Integer scale)
      Description copied from interface: DataType
      Gets the column scale.
      The scale may be differently aligned according to the backend.
      Specified by:
      getScale in interface DataType<OffsetDateTime>
      Overrides:
      getScale in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the backend
      index - the column index
      scale - the scale from the model
      Returns:
      the column scale
    • getSqlType

      public SqlType getSqlType(Backend backend, int index)
      Description copied from interface: DataType
      Gets the SQL type.
      For predefined types, the type must be the same for all backends and the backend argument may be null.
      Application specific types, however, can use different sql types for different backends and for those types the backend argument is always valid.
      Parameters:
      backend - the backend, not used by predefined types
      index - the column index
      Returns:
      the SQL type
    • valueOf

      public OffsetDateTime valueOf(String str)
      Description copied from interface: DataType
      Parses a string and converts to the value of this type.
      The method is used to parse a literal (for example the default value defined in the model).

      Notice: the method doesn't use any locale, so the results are always the same regardless of the JVM's locale.

      Parameters:
      str - the source string
      Returns:
      the value
    • toString

      public String toString(OffsetDateTime object)
      Description copied from interface: DataType
      Takes an object and converts it to a string that can in turn be parsed with DataType.valueOf(String).
      The method is used to print a literal (for example the default value of a dumped attribute).

      Notice: the method doesn't use any locale, so the results are always the same regardless of the JVM's locale.

      Specified by:
      toString in interface DataType<OffsetDateTime>
      Overrides:
      toString in class AbstractDataType<OffsetDateTime>
      Parameters:
      object - the object of this DataType
      Returns:
      the printable string
    • toLiteral

      public String toLiteral(String str, Integer index)
      Description copied from interface: DataType
      Takes the string representation of a value and converts it to an SQL literal.
      Some types need single quotes, for example.
      Specified by:
      toLiteral in interface DataType<OffsetDateTime>
      Overrides:
      toLiteral in class AbstractDataType<OffsetDateTime>
      Parameters:
      str - the value string
      index - the column index, null if applies to object of this type
      Returns:
      the SQL literal
    • valueOfLiteralToCode

      public String valueOfLiteralToCode(String str, Integer index)
      Description copied from interface: DataType
      Creates the java code to apply the valueOf method to a String.
      Specified by:
      valueOfLiteralToCode in interface DataType<OffsetDateTime>
      Overrides:
      valueOfLiteralToCode in class AbstractDateTimeType<OffsetDateTime>
      Parameters:
      str - the literal to be parsed
      index - the column index, null if applies to object of this type
      Returns:
      the java code
    • set

      public Object[] set(Backend backend, PreparedStatement statement, int pos, OffsetDateTime object, boolean mapNull, Integer size) throws SQLException
      Description copied from interface: DataType
      Sets the object into a prepared statement.
      Must be implemented if DataType.isPredefined() returns false. Not invoked by framework otherwise.
      Parameters:
      backend - the database backend
      statement - the prepared statement
      pos - the position of the first SQL value
      object - the object, may be null
      mapNull - true if map null-values to non-null values
      size - the optional size specified in the model
      Returns:
      the values stored in the prepared statement
      Throws:
      SQLException - if failed
    • set

      public Object set(Backend backend, PreparedStatement statement, int pos, OffsetDateTime object, int index, boolean mapNull, Integer size) throws SQLException
      Description copied from interface: DataType
      Sets a column of an object into a prepared statement.
      Must be implemented if DataType.isPredefined() returns false. Not invoked by framework otherwise.
      Specified by:
      set in interface DataType<OffsetDateTime>
      Overrides:
      set in class AbstractDataType<OffsetDateTime>
      Parameters:
      backend - the database backend
      statement - the prepared statement
      pos - the position of the first SQL value
      object - the object, may be null
      index - the column index
      mapNull - true if map null-values to non-null values
      size - the optional size specified in the model
      Returns:
      the object stored in the prepared statement
      Throws:
      SQLException - if failed
    • get

      public OffsetDateTime get(Backend backend, ResultSet resultSet, int[] pos, boolean mapNull, Integer size) throws SQLException
      Description copied from interface: DataType
      Gets the object from a result set.
      Must be implemented if DataType.isPredefined() returns false. Not invoked by framework otherwise.
      Parameters:
      backend - the database backend
      resultSet - the result set
      pos - the column positions in the result set
      mapNull - true if unmap null-values from non-null values
      size - the optional size specified in the model
      Returns:
      the object or null if column(s) IS NULL
      Throws:
      SQLException - if failed
    • parse

      public OffsetDateTime parse(String str) throws BackendException
      Converts a string to an offset date time.
      Parameters:
      str - the string
      Returns:
      the date time
      Throws:
      BackendException - if parsing failed
    • format

      public String format(OffsetDateTime dateTime)
      Converts an offset date time object to a string.
      Parameters:
      dateTime - the date time
      Returns:
      the formatted string