Interface FieldDef

  • All Known Subinterfaces:
    AnyAtomicDef, AnyDef, AnyJsonAtomicDef, AnyRecordDef, ArrayDef, BinaryDef, BooleanDef, DoubleDef, EnumDef, FixedBinaryDef, FloatDef, IntegerDef, JsonDef, LongDef, MapDef, NumberDef, RecordDef, StringDef, TimestampDef

    public interface FieldDef
    FieldDef represents an immutable metadata object used to represent a single data type. A data type defines a set of values, which are said to belong to or be instances of that data type. Data types are either atomic or complex. Atomic types define sets of atomic values, like integers, doubles, strings, etc. Complex types represent complex values, i.e., values that contain other (nested) values, like records, arrays, and maps.

    All supported data types are represented as instances of FieldDef. Supported types are defined in the enumeration Type. Instances of FieldDef are created when defining the fields for a new Table, or during query processing.

    Each instance has these properties:

    • type -- the kind of the type (one of the values of the FieldDef.Type enum.
    • description -- an optional description used when defining the type.

    Since:
    3.0
    • Method Detail

      • clone

        FieldDef clone()
        Perform a deep copy of this FieldDef instance.
        Returns:
        a new instance equal to this
      • getDescription

        java.lang.String getDescription()
        Returns the description of the field.
        Returns:
        the description of the field if set, otherwise null
      • getType

        FieldDef.Type getType()
        Returns the type of the field.
        Returns:
        the type of the field
      • isType

        boolean isType​(FieldDef.Type type)
        Returns true if the type of this field matches the parameter.
        Returns:
        true if the type of this field matches the parameter
      • isValidKeyField

        boolean isValidKeyField()
        Returns:
        true if this type can participate in a primary key. Only atomic types can be part of a key. Among the atomic types, Boolean, Binary and FixedBinary are not allowed in keys.
      • isValidIndexField

        boolean isValidIndexField()
        Returns:
        true if this type can participate in an index. Only atomic types can be part of an index key. Among the atomic types, Boolean, Binary and FixedBinary are not allowed in index keys.
      • isAny

        boolean isAny()
        Returns true if this is an AnyDef.
        Returns:
        true if this is an AnyDef, false otherwise
        Since:
        4.0
      • isAnyRecord

        boolean isAnyRecord()
        Returns true if this is an AnyRecordDef.
        Returns:
        true if this is an AnyRecordDef, false otherwise
        Since:
        4.0
      • isAnyAtomic

        boolean isAnyAtomic()
        Returns true if this is an AnyAtomicDef.
        Returns:
        true if this is an AnyAtomicDef, false otherwise
        Since:
        4.0
      • isNumber

        boolean isNumber()
        Returns true if this is a NumberDef.
        Returns:
        true if this is a NumberDef, false otherwise
        Since:
        4.4
      • isAnyJsonAtomic

        boolean isAnyJsonAtomic()
        Returns true if this is an AnyJsonAtomicDef.
        Returns:
        true if this is an AnyJsonAtomicDef, false otherwise
        Since:
        4.3
      • isBoolean

        boolean isBoolean()
        Returns true if this is a BooleanDef.
        Returns:
        true if this is a BooleanDef, false otherwise
      • isBinary

        boolean isBinary()
        Returns true if this is a BinaryDef.
        Returns:
        true if this is a BinaryDef, false otherwise
      • isDouble

        boolean isDouble()
        Returns true if this is a DoubleDef.
        Returns:
        true if this is a DoubleDef, false otherwise
      • isEnum

        boolean isEnum()
        Returns true if this is an EnumDef.
        Returns:
        true if this is an EnumDef, false otherwise
      • isFixedBinary

        boolean isFixedBinary()
        Returns true if this is a FixedBinaryDef.
        Returns:
        true if this is a FixedBinaryDef, false otherwise
      • isFloat

        boolean isFloat()
        Returns true if this is a FloatDef.
        Returns:
        true if this is a FloatDef, false otherwise
      • isInteger

        boolean isInteger()
        Returns true if this is an IntegerDef.
        Returns:
        true if this is an IntegerDef, false otherwise
      • isLong

        boolean isLong()
        Returns true if this is a LongDef.
        Returns:
        true if this is a LongDef, false otherwise
      • isString

        boolean isString()
        Returns true if this is a StringDef.
        Returns:
        true if this is a StringDef, false otherwise
      • isUUIDString

        boolean isUUIDString()
        Returns true if this is a STRING AS UUID type
        Returns:
        true if this is a STRING AS UUID type, false otherwise
      • isTimestamp

        boolean isTimestamp()
        Returns true if this is a TimestampDef.
        Returns:
        true if this is a TimestampDef, false otherwise
        Since:
        4.3
      • isArray

        boolean isArray()
        Returns true if this is an ArrayDef.
        Returns:
        true if this is an ArrayDef, false otherwise
      • isMap

        boolean isMap()
        Returns true if this is a MapDef.
        Returns:
        true if this is a MapDef, false otherwise
      • isRecord

        boolean isRecord()
        Returns true if this is a RecordDef.
        Returns:
        true if this is a RecordDef, false otherwise
      • isJson

        boolean isJson()
        Returns true if this is a JSON type.
        Returns:
        true if this is a JSON type, false otherwise
        Since:
        4.2
      • isAtomic

        boolean isAtomic()
        Returns true if this is an atomic type.
        Returns:
        true if this is an atomic type, false otherwise
        Since:
        4.0
      • isNumeric

        boolean isNumeric()
        Returns true if this is a numeric type.
        Returns:
        true if this is a numeric type, false otherwise
        Since:
        4.0
      • isComplex

        boolean isComplex()
        Returns true if this is a complex type.
        Returns:
        true if this is a complex type, false otherwise
        Since:
        4.0
      • isPrecise

        boolean isPrecise()
        Since:
        20.1
      • isMRCounter

        default boolean isMRCounter()
        Returns true if this is a multi-region counter.
        Returns:
        true if this is a multi-region counter, false otherwise.
        Since:
        21.1
      • asAny

        AnyDef asAny()
        Casts to AnyDef.
        Returns:
        an AnyDef
        Throws:
        java.lang.ClassCastException - if this is not an AnyDef
        Since:
        4.0
      • asAnyRecord

        AnyRecordDef asAnyRecord()
        Casts to AnyRecordDef.
        Returns:
        an AnyRecordDef
        Throws:
        java.lang.ClassCastException - if this is not an AnyRecordDef
        Since:
        4.0
      • asAnyAtomic

        AnyAtomicDef asAnyAtomic()
        Casts to AnyAtomicDef.
        Returns:
        an AnyAtomicDef
        Throws:
        java.lang.ClassCastException - if this is not an AnyAtomicDef
        Since:
        4.0
      • asAnyJsonAtomic

        AnyJsonAtomicDef asAnyJsonAtomic()
        Casts to AnyJsonAtomicDef.
        Returns:
        an AnyJsonAtomicDef
        Throws:
        java.lang.ClassCastException - if this is not an AnyJsonAtomicDef
        Since:
        4.3
      • asBinary

        BinaryDef asBinary()
        Casts to BinaryDef.
        Returns:
        a BinaryDef
        Throws:
        java.lang.ClassCastException - if this is not a BinaryDef
      • asNumber

        NumberDef asNumber()
        Casts to NumberDef.
        Returns:
        a NumberDef
        Throws:
        java.lang.ClassCastException - if this is not a NumberDef
        Since:
        4.4
      • asBoolean

        BooleanDef asBoolean()
        Casts to BooleanDef.
        Returns:
        a BooleanDef
        Throws:
        java.lang.ClassCastException - if this is not a BooleanDef
      • asDouble

        DoubleDef asDouble()
        Casts to DoubleDef.
        Returns:
        a DoubleDef
        Throws:
        java.lang.ClassCastException - if this is not a DoubleDef
      • asEnum

        EnumDef asEnum()
        Casts to EnumDef.
        Returns:
        an EnumDef
        Throws:
        java.lang.ClassCastException - if this is not an EnumDef
      • asFixedBinary

        FixedBinaryDef asFixedBinary()
        Casts to FixedBinaryDef.
        Returns:
        a FixedBinaryDef
        Throws:
        java.lang.ClassCastException - if this is not a FixedBinaryDef
      • asFloat

        FloatDef asFloat()
        Casts to FloatDef.
        Returns:
        a FloatDef
        Throws:
        java.lang.ClassCastException - if this is not a FloatDef
      • asInteger

        IntegerDef asInteger()
        Casts to IntegerDef.
        Returns:
        an IntegerDef
        Throws:
        java.lang.ClassCastException - if this is not an IntegerDef
      • asLong

        LongDef asLong()
        Casts to LongDef.
        Returns:
        a LongDef
        Throws:
        java.lang.ClassCastException - if this is not a LongDef
      • asString

        StringDef asString()
        Casts to StringDef.
        Returns:
        a StringDef
        Throws:
        java.lang.ClassCastException - if this is not a StringDef
      • asTimestamp

        TimestampDef asTimestamp()
        Casts to TimestampDef.
        Returns:
        a TimestampDef
        Throws:
        java.lang.ClassCastException - if this is not a TimestampDef
        Since:
        4.3
      • asArray

        ArrayDef asArray()
        Casts to ArrayDef.
        Returns:
        an ArrayDef
        Throws:
        java.lang.ClassCastException - if this is not an ArrayDef
      • asMap

        MapDef asMap()
        Casts to MapDef.
        Returns:
        a MapDef
        Throws:
        java.lang.ClassCastException - if this is not a MapDef
      • asRecord

        RecordDef asRecord()
        Casts to RecordDef.
        Returns:
        a RecordDef
        Throws:
        java.lang.ClassCastException - if this is not a RecordDef
      • asJson

        JsonDef asJson()
        Casts to JsonDef.
        Returns:
        a JsonDef
        Throws:
        java.lang.ClassCastException - if this is not a JsonDef
        Since:
        4.2
      • createArray

        ArrayValue createArray()
        Creates an empty ArrayValue.
        Returns:
        an empty ArrayValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create an ArrayValue
      • createNumber

        NumberValue createNumber​(int value)
        Creates a NumberValue instance based on the value
        Parameters:
        value - the value to use
        Returns:
        a NumberValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a NumberValue
        Since:
        4.4
      • createNumber

        NumberValue createNumber​(long value)
        Creates a NumberValue instance based on the value
        Parameters:
        value - the value to use
        Returns:
        a NumberValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a NumberValue
        Since:
        4.4
      • createNumber

        NumberValue createNumber​(float value)
        Creates a NumberValue instance based on the value
        Parameters:
        value - the value to use
        Returns:
        a NumberValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a NumberValue
        Since:
        4.4
      • createNumber

        NumberValue createNumber​(double value)
        Creates a NumberValue instance based on the value
        Parameters:
        value - the value to use
        Returns:
        a NumberValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a NumberValue
        Since:
        4.4
      • createNumber

        NumberValue createNumber​(java.math.BigDecimal value)
        Creates a NumberValue instance based on the value
        Parameters:
        value - a non-null BigDecimal value
        Returns:
        a NumberValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a NumberValue
        Since:
        4.4
      • createBinary

        BinaryValue createBinary​(byte[] value)
        Creates a BinaryValue instance based on the value.
        Parameters:
        value - the byte array to use for the new value object. Must not be null.
        Returns:
        a BinaryValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a BinaryValue or if the value is null
      • createBoolean

        BooleanValue createBoolean​(boolean value)
        Creates a BooleanValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a BooleanValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a BooleanValue
      • createDouble

        DoubleValue createDouble​(double value)
        Creates a DoubleValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a DoubleValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a DoubleValue
      • createEnum

        EnumValue createEnum​(java.lang.String value)
        Creates an EnumValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a EnumValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create an EnumValue or if the value is not valid for the definition
      • createFixedBinary

        FixedBinaryValue createFixedBinary​(byte[] value)
        Creates a FixedBinaryValue instance based on the value.
        Parameters:
        value - the value to use. It must not be null.
        Returns:
        a FixedBinaryValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a FixedBinaryValue or if the value is null or not valid for the definition
      • createFloat

        FloatValue createFloat​(float value)
        Creates a FloatValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a FloatValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a FloatValue
      • createInteger

        IntegerValue createInteger​(int value)
        Creates an IntegerValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a IntegerValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create an IntegerValue or if the value is not valid for the definition
      • createLong

        LongValue createLong​(long value)
        Creates a LongValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a LongValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a LongValue
      • createTimestamp

        TimestampValue createTimestamp​(java.sql.Timestamp value)
        Creates a TimestampValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a TimestampValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a TimestampValue
        Since:
        4.3
      • createMap

        MapValue createMap()
        Creates an empty MapValue.
        Returns:
        an empty MapValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a MapValue
      • createRecord

        RecordValue createRecord()
        Creates an empty RecordValue.
        Returns:
        an empty RecordValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a RecordValue
      • createString

        StringValue createString​(java.lang.String value)
        Creates a StringValue instance based on the value.
        Parameters:
        value - the value to use
        Returns:
        a StringValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a StringValue
      • createJsonNull

        FieldValue createJsonNull()
        Creates a special FieldValue instance representing a JSON null. This value returns true for FieldValue.isJsonNull().
        Returns:
        a FieldValue
        Throws:
        java.lang.IllegalArgumentException - if this instance is not able to create a JSON null (is not of type JSON)
        Since:
        4.3