Class UUIDType

All Implemented Interfaces:
DataType<UUID>

@Service(DataType.class) public final class UUIDType extends AbstractDataType<UUID>
Datatype for UUID.

For databases not supporting this type natively, it is mapped to VARCHAR(36).
There are alternatives (storing in 2 longs or 16 bytes, etc...), but manually written SQL queries may become rather tricky.

  • Field Details

    • NIL

      public static final UUID NIL
      the NIL value.
    • NIL_STR

      public static final String NIL_STR
      the NIL string.
  • Constructor Details

    • UUIDType

      public UUIDType()
      Creates the datatype for UUID.
  • Method Details

    • getJavaType

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

      public int[] getSortableColumns()
      Description copied from interface: DataType
      Gets the indexes to the sortable columns.
      The number and order of the indexes is reflected in the generated order-by SQL clause.
      Specified by:
      getSortableColumns in interface DataType<UUID>
      Overrides:
      getSortableColumns in class AbstractDataType<UUID>
      Returns:
      the column indexes, null or empty if datatype is not sortable in a meaningful manner by the database
    • 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<UUID>
      Overrides:
      isMapNullSupported in class AbstractDataType<UUID>
      Returns:
      true if mapNull supported
    • getMappedNullValue

      public UUID 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<UUID>
      Overrides:
      getMappedNullValue in class AbstractDataType<UUID>
      Parameters:
      backend - the backend, null if not backend-specific
      index - the column index
      Returns:
      the non-null mapped value
    • isPredefined

      public boolean isPredefined()
      Description copied from interface: DataType
      Returns whether this is a predefined type.
      Specified by:
      isPredefined in interface DataType<UUID>
      Overrides:
      isPredefined in class AbstractDataType<UUID>
      Returns:
      true if explicit methods provided by the persistence layer, false if generic methods must be used
    • 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
    • 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<UUID>
      Overrides:
      getSize in class AbstractDataType<UUID>
      Parameters:
      backend - the backend
      index - the column index
      size - the size from the model
      Returns:
      the column size
    • valueOf

      public UUID 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
    • 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<UUID>
      Overrides:
      valueOfLiteralToCode in class AbstractDataType<UUID>
      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, UUID 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
    • get

      public UUID 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