Class SFieldEnum<T extends java.lang.Enum<T>>

  • All Implemented Interfaces:
    java.io.Serializable
    Direct Known Subclasses:
    EnumField

    public class SFieldEnum<T extends java.lang.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:
    Serialized Form
    • Constructor Detail

      • SFieldEnum

        public SFieldEnum​(SRecordMeta<?> meta,
                          java.lang.String columnName,
                          java.lang.Class<T> enumType,
                          SFieldFlags... pvals)
        enumType is the Enum type backing this field
    • Method Detail

      • getEnumClass

        public java.lang.Class<T> getEnumClass()
      • queryFieldValue

        public java.lang.Object queryFieldValue​(java.sql.ResultSet rs,
                                                int sqlIndex)
                                         throws java.lang.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:
        java.lang.Exception
      • convertToDataSetFieldType

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

        public java.lang.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 java.lang.Object writeFieldValue​(java.lang.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