Package db

Class Field

  • All Implemented Interfaces:
    java.lang.Comparable<Field>
    Direct Known Subclasses:
    BinaryField, BooleanField, ByteField, IntField, LongField, ShortField, StringField

    public abstract class Field
    extends java.lang.Object
    implements java.lang.Comparable<Field>
    Field is an abstract data wrapper for use with Records. Note that when comparing two Field instances both must be of the same class.

    Stored Schema Field Type Encoding:

    8-bit Legacy Field Type Encoding (I....FFF)

    Supported encodings: 0x00..0x06 and 0x80..0x86, where:
         FFF  - indexed field type (0..6)
         I    - index field indicator (only long primary keys were supported)
     

    8-bit Field Type Encoding (PPPPFFFF)

    (Reserved for future field extensions: 0x88 and 0xf0..0xff)
         0xff - see Schema.FIELD_EXTENSION_INDICATOR
     
    where:
         FFFF - normal/indexed field type
         PPPP - indexed table primary key type (1000b: LegacyIndexField)  
     
    • Field Detail

      • EMPTY_ARRAY

        public static final Field[] EMPTY_ARRAY
    • Method Detail

      • getLongValue

        public long getLongValue()
        Get field as a long value. All fixed-length field objects must implement this method
        Returns:
        long value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • setLongValue

        public void setLongValue​(long value)
        Set field's long value. All fixed-length field objects must implement this method
        Parameters:
        value - long value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • getIntValue

        public int getIntValue()
        Get field as an integer value.
        Returns:
        integer value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • setIntValue

        public void setIntValue​(int value)
        Set field's integer value.
        Parameters:
        value - integer value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • getShortValue

        public short getShortValue()
        Get field as a short value.
        Returns:
        short value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • setShortValue

        public void setShortValue​(short value)
        Set field's short value.
        Parameters:
        value - short value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • getByteValue

        public byte getByteValue()
        Get field as a byte value.
        Returns:
        byte value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • setByteValue

        public void setByteValue​(byte value)
        Set field's byte value.
        Parameters:
        value - byte value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • getBooleanValue

        public boolean getBooleanValue()
        Get field as a boolean value.
        Returns:
        boolean value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • setBooleanValue

        public void setBooleanValue​(boolean value)
        Set field's boolean value.
        Parameters:
        value - boolean value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • getBinaryData

        public abstract byte[] getBinaryData()
        Get data as a byte array.
        Returns:
        byte[]
      • setBinaryData

        public abstract void setBinaryData​(byte[] bytes)
        Set data from binary byte array. All variable-length fields must implement this method.
        Parameters:
        bytes - field data
        Throws:
        IllegalFieldAccessException - if error occurs while reading bytes into field which will generally be caused by the incorrect number of bytes provided to a fixed-length field.
      • getString

        public java.lang.String getString()
        Get field as a String value.
        Returns:
        String value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • setString

        public void setString​(java.lang.String str)
        Set field's String value.
        Parameters:
        str - String value
        Throws:
        IllegalFieldAccessException - thrown if method is not supported by specific Field instance.
      • isVariableLength

        public boolean isVariableLength()
        Returns:
        true if a Field instance is variable length, else false.
      • isSameType

        public boolean isSameType​(Field field)
        Determine if specified field is same type as this field
        Parameters:
        field - a Field instance
        Returns:
        true if field is same type as this field
      • copyField

        public abstract Field copyField()
        Create new instance of this field with the same value.
        Returns:
        new field instance with same value
      • newField

        public abstract Field newField()
        Create new instance of this field type.
        Returns:
        new field instance with undefined initial value
      • equals

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

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

        public abstract java.lang.String getValueAsString()
        Get field value as a formatted string
        Returns:
        field value string
      • canIndex

        public static boolean canIndex​(Field field)
        Determine if a specified field instance may be indexed
        Parameters:
        field - field to be checked
        Returns:
        true if field can be indexed