Class FieldDescriptor


  • public final class FieldDescriptor
    extends java.lang.Object
    The class FieldDescriptor contains the column metadata of the XSQLVAR server data structure used to describe one column for input or output.

    FieldDescriptor is an immutable type, the value of a field is maintained separately in RowValue.

    Author:
    Mark Rotteveel
    • Constructor Detail

      • FieldDescriptor

        public FieldDescriptor​(int position,
                               DatatypeCoder datatypeCoder,
                               int type,
                               int subType,
                               int scale,
                               int length,
                               java.lang.String fieldName,
                               java.lang.String tableAlias,
                               java.lang.String originalName,
                               java.lang.String originalTableName,
                               java.lang.String ownerName)
        Constructor for metadata FieldDescriptor.
        Parameters:
        position - Position of this field (0-based), or -1 if position is not known (e.g. for test code)
        datatypeCoder - Instance of DatatypeCoder to use when decoding column data (note that another instance may be derived internally, which then will be returned by getDatatypeCoder())
        type - Column SQL type
        subType - Column subtype
        scale - Column scale
        length - Column defined length
        fieldName - Column alias name
        tableAlias - Column table alias
        originalName - Column original name
        originalTableName - Column original table
        ownerName - Owner of the column/table
    • Method Detail

      • getPosition

        public int getPosition()
        Returns:
        The 0-based position of this field (or -1)
      • getType

        public int getType()
        Returns:
        The Firebird type of this field
      • getSubType

        public int getSubType()
        Returns:
        The Firebird subtype of this field
      • getScale

        public int getScale()
        Returns:
        The scale of this field
      • getLength

        public int getLength()
        Returns:
        The declared (maximum) length of this field
      • getFieldName

        public java.lang.String getFieldName()
        Returns:
        The (aliased) field name
      • getTableAlias

        public java.lang.String getTableAlias()
        Returns:
        The (aliased) table name
      • getOriginalName

        public java.lang.String getOriginalName()
        Returns:
        The original name of the field (e.g. the column name in the table)
      • getOriginalTableName

        public java.lang.String getOriginalTableName()
        Returns:
        The original table name
      • getOwnerName

        public java.lang.String getOwnerName()
        Returns:
        The owner
      • isFbType

        public boolean isFbType​(int fbType)
        Check if the type of this field is the specified Firebird data type.

        This method assumes the not-nullable data type is passed, on checking the nullable bit of getType() is set to 0.

        Parameters:
        fbType - One of the SQL_ data type identifier values
        Returns:
        true if the type is the same as the type of this field
      • isNullable

        public boolean isNullable()
        Returns:
        true if this field is nullable.
      • isDbKey

        public boolean isDbKey()
        Determines if this is a db-key (RDB$DB_KEY) of a table.

        NOTE: Technically it could also be a normal CHAR CHARACTER SET OCTETS column called DB_KEY.

        Returns:
        true if the field is a RDB$DB_KEY
        Since:
        4.0
      • getCharacterLength

        public int getCharacterLength()
        The length in characters of this field.

        This takes into account the max bytes per character of the character set.

        Returns:
        Character length, or -1 for non-character types (including blobs)
      • getCharacterSetId

        public int getCharacterSetId()
        Determines the character set id (without collation id).
        Returns:
        Character set id for the type, if the type has no character set, than ISCConstants.CS_dynamic is returned
      • typeEquals

        public boolean typeEquals​(FieldDescriptor other)
        Limited equals that only checks if the data type in the provided field descriptor is the same as this descriptor.

        The fields checked are:

        • type
        • subType
        • scale
        • length

        Parameters:
        other - Field descriptor to check
        Returns:
        true when other is not null and has the same type definition as this instance, false otherwise.
      • getPaddingByte

        public byte getPaddingByte()
        Padding to use for fields of this type.
        Returns:
        padding byte (generally 0x00, or 0x20 for non-binary character data).
        Since:
        5
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • equals

        public boolean equals​(java.lang.Object obj)
        Overrides:
        equals in class java.lang.Object
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class java.lang.Object