Class RowDescriptorBuilder


  • public final class RowDescriptorBuilder
    extends java.lang.Object
    Builder to construct an immutable RowDescriptor.

    The row descriptor is constructed by defining the fields, and using addField() to add the current field definition to the row. The field data is then reset (as if resetField() was called, to prepare for the next field to add.

    This class can also be used to construct individual FieldDescriptor objects.

    Since:
    3.0
    Author:
    Mark Rotteveel
    • Constructor Detail

      • RowDescriptorBuilder

        public RowDescriptorBuilder​(int size,
                                    DatatypeCoder datatypeCoder)
        Constructs an instance of RowDescriptorBuilder for size fields.
        Parameters:
        size - Number of fields
        datatypeCoder - DatatypeCoder for decoding field data
    • Method Detail

      • getSize

        public int getSize()
        Returns:
        Number of fields the row will hold.
      • setType

        public RowDescriptorBuilder setType​(int type)
        Set the Firebird data type of the field.
        Parameters:
        type - Data type
        Returns:
        this builder
      • setSubType

        public RowDescriptorBuilder setSubType​(int subType)
        Set the Firebird subtype of the field.
        Parameters:
        subType - Subtype
        Returns:
        this builder
        See Also:
        setType(int)
      • setScale

        public RowDescriptorBuilder setScale​(int scale)
        Set the scale of the field.
        Parameters:
        scale - Scale
        Returns:
        this builder
        See Also:
        setType(int)
      • setLength

        public RowDescriptorBuilder setLength​(int length)
        Set the defined length of the field.
        Parameters:
        length - Defined (maximum) length of the field
        Returns:
        this builder
      • setFieldName

        public RowDescriptorBuilder setFieldName​(java.lang.String fieldName)
        Sets the (aliased) field name.
        Parameters:
        fieldName - The field name
        Returns:
        this builder
        See Also:
        setOriginalName(String)
      • setOriginalName

        public RowDescriptorBuilder setOriginalName​(java.lang.String originalName)
        Sets the original field name.
        Parameters:
        originalName - The original field name
        Returns:
        this builder
        See Also:
        setFieldName(String)
      • setOriginalTableName

        public RowDescriptorBuilder setOriginalTableName​(java.lang.String originalTableName)
        Sets the original name of the underlying table.
        Parameters:
        originalTableName - The table name
        Returns:
        this builder
        See Also:
        setTableAlias(String)
      • setFieldIndex

        public RowDescriptorBuilder setFieldIndex​(int index)
        Sets the field index for the current field under construction.

        Even though addField() increments the current field index, it is advisable to always explicitly set the index using this method or at(int) as it improves readability.

        Parameters:
        index - Index of the field
        Returns:
        this builder
        Throws:
        java.lang.IndexOutOfBoundsException - When index is not between 0 (inclusive) and getSize() (exclusive)
        java.lang.IllegalStateException - When a FieldDescriptor is already defined on the specified index
      • getCurrentFieldIndex

        public int getCurrentFieldIndex()
        Returns:
        The index for the current field
      • setOwnerName

        public RowDescriptorBuilder setOwnerName​(java.lang.String ownerName)
        Sets the owner (database username) of the field.
        Parameters:
        ownerName - Name of the owner
        Returns:
        this builder
      • toFieldDescriptor

        public FieldDescriptor toFieldDescriptor()
        Creates a FieldDescriptor based on the current field data of this RowDescriptorBuilder.
        Returns:
        FieldDescriptor
      • resetField

        public RowDescriptorBuilder resetField()
        Resets the fields of this builder to the Java defaults.
      • copyFieldFrom

        public RowDescriptorBuilder copyFieldFrom​(FieldDescriptor sourceFieldDescriptor)
        Set this builder with the values of the source FieldDescriptor for further modification through this builder.
        Parameters:
        sourceFieldDescriptor - Source for the initial values
        Returns:
        this builder
      • addField

        public RowDescriptorBuilder addField()
        Adds the current field data to the row and prepares this builder for the next field by resetting all values.
        Returns:
        this builder
        See Also:
        resetField()
      • addField

        public RowDescriptorBuilder addField​(FieldDescriptor fieldDescriptor)
        Adds the FieldDescriptor on the current fieldIndex as the next in the row, and increments the current field index by 1.

        This method does not call resetField(), so a partial definition of a field can exist inside this builder after calling this method.

        Parameters:
        fieldDescriptor - FieldDescriptor to add
        Returns:
        this builder
      • isComplete

        public boolean isComplete()
        Returns:
        true when all FieldDescriptor entries have been defined
      • getFirstUnprocessedIndex

        public int getFirstUnprocessedIndex()
        Returns:
        Returns the index of the first unprocessed FieldDescriptor, or getSize() if all fields have been set.