Class SFieldEnum<T extends Enum<T>>

All Implemented Interfaces:
Serializable
Direct Known Subclasses:
EnumField

public class SFieldEnum<T extends Enum<T>> extends SFieldScalar
Represents Enum field meta data. Note that internal storage is now Enum, not String, which is more consistent if less flexible eg. if database has bad data. So getObject() returns Enum.
See Also:
  • Constructor Details

  • Method Details

    • getEnumClass

      public Class<T> getEnumClass()
    • queryFieldValue

      public Object queryFieldValue(ResultSet rs, int sqlIndex) throws Exception
      Description copied from class: SFieldMeta
      Issues a JDBC get*() on the result set for the field and converts the database type to the appropriate internal type, eg, Double for a double field. The first column has sqlIndex==1.
      Specified by:
      queryFieldValue in class SFieldMeta
      Throws:
      Exception
    • convertToDataSetFieldType

      protected Object convertToDataSetFieldType(Object raw)
      Internal representation of SFieldEnum is Enum.
      Specified by:
      convertToDataSetFieldType in class SFieldMeta
    • defaultSqlDataType

      public String defaultSqlDataType()
      Description copied from class: SFieldScalar
      The default data type if not overriden by overrideSqlDataType. This is only called when the data type is actually needed by CREATE TABLE, ie if no sqlDataTypeOverride is specified.
      Specified by:
      defaultSqlDataType in class SFieldScalar
    • isFKeyCompatible

      public boolean isFKeyCompatible(SFieldScalar field)
      Nota : foreign key is allowed if the enum values can be stored in the database... We don't force checking the values (ie use same enum type)
    • writeFieldValue

      public Object writeFieldValue(Object value)
      Description copied from class: SFieldMeta
      Converts a single value from internal representation to database representation. Used primarily by the writeFieldValue above, but also used for converting optimistic lock values in SRecordInstance.flush.

      Overidden by SFieldBoolean. (not by SFieldString).

      NOTE: This does NOT need to handle NULL values (those are handled seperately by SRecordInstance)

      Overrides:
      writeFieldValue in class SFieldMeta
    • javaSqlType

      public int javaSqlType()
      Specified by:
      javaSqlType in class SFieldScalar
      Returns:
      int constant from java.sql.Types, used for setting sql datatype with null values