Module org.firebirdsql.jaybird
Package org.firebirdsql.gds.ng.fields

# Class RowDescriptor

java.lang.Object
org.firebirdsql.gds.ng.fields.RowDescriptor

All Implemented Interfaces:
  `Iterable<FieldDescriptor>`

public final class RowDescriptor extends Object implements Iterable<FieldDescriptor>
The class `RowDescriptor` is a java mapping of the XSQLDA server data structure used to describe the row metadata of one row for input or output.

RowDescriptor is immutable, values of a row are maintained separately in a `RowValue`.

Author:
  Mark Rotteveel

- ## Method Summary

  Modifier and Type
  Method
  Description
  `RowValue`
  `createDefaultFieldValues()`
  Creates a `RowValue` instance with default (`null`) values for each field.
  `RowValue`
  `createDeletedRowMarker()`
  Creates a deleted row marker.
  `static RowDescriptor`
  `createRowDescriptor(FieldDescriptor[] fieldDescriptors, DatatypeCoder datatypeCoder)`
  Creates an instance of `RowDescriptor` with the supplied `FieldDescriptor` instances.
  `static RowDescriptor`
  `empty(DatatypeCoder datatypeCoder)`
  Returns an empty row descriptor with the specified datatype coder.
  `boolean`
  `equals(Object obj)`
  `int`
  `getCount()`
  `DatatypeCoder`
  `getDatatypeCoder()`
  `IEncodingFactory`
  `getEncodingFactory()`
  `FieldDescriptor`
  `getFieldDescriptor(int index)`
  Gets the `FieldDescriptor` at the specified (0-based) index.
  `List<FieldDescriptor>`
  `getFieldDescriptors()`
  `int`
  `hashCode()`
  `Iterator<FieldDescriptor>`
  `iterator()`
  `String`
  `toString()`

  ### Methods inherited from class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface java.lang.Iterable

  `forEach, spliterator`

- ## Method Details

  - ### getDatatypeCoder

    public DatatypeCoder getDatatypeCoder()
    Returns:
      The `DatatypeCoder`.

  - ### getEncodingFactory

    public IEncodingFactory getEncodingFactory()
    Returns:
      The `IEncodingFactory`.

  - ### getCount

    public int getCount()
    Returns:
      The number of fields.

  - ### getFieldDescriptor

    public FieldDescriptor getFieldDescriptor(int index)
    Gets the `FieldDescriptor` at the specified (0-based) index.
    Parameters:
      `index` - 0-based index of the field
    Returns:
      FieldDescriptor
    Throws:
      `IndexOutOfBoundsException` - if index is not `0 <= index < getCount`

  - ### getFieldDescriptors

    public List<FieldDescriptor> getFieldDescriptors()
    Returns:
      An immutable List of the `FieldDescriptor` instances of this row.

  - ### createDefaultFieldValues

    public RowValue createDefaultFieldValues()
    Creates a `RowValue` instance with default (`null`) values for each field.

    All fields are marked as uninitialized.

    The (0-based) index of the each field value in the `RowValue` corresponds with the (0-based) index of the `FieldDescriptor` within this `RowDescriptor`.

    Returns:
      Uninitialized and empty `RowValue` instance for a row described by this descriptor.
    See Also:
      - `RowValue.defaultFor(RowDescriptor)`

  - ### createDeletedRowMarker

    public RowValue createDeletedRowMarker()
    Creates a deleted row marker.

    A deleted row marker is used in JDBC result sets for deleted rows, and to discern them from (updated) rows that are simply all `NULL`. This is for Jaybird internal implementation needs only.

    Returns:
      Deleted row marker with `count` number of rows, all set to null

  - ### iterator

    public Iterator<FieldDescriptor> iterator()
    Specified by:
      `iterator` in interface `Iterable<FieldDescriptor>`

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `Object`

  - ### equals

    public boolean equals(Object obj)
    Overrides:
      `equals` in class `Object`

  - ### hashCode

    public int hashCode()
    Overrides:
      `hashCode` in class `Object`

  - ### createRowDescriptor

    public static RowDescriptor createRowDescriptor(FieldDescriptor[] fieldDescriptors, DatatypeCoder datatypeCoder)
    Creates an instance of `RowDescriptor` with the supplied `FieldDescriptor` instances.
    Parameters:
      `fieldDescriptors` - field descriptors (array is cloned before use)
      `datatypeCoder` - datatype coder for the connection that uses this RowDescriptor.
    Returns:
      `RowDescriptor` instance

  - ### empty

    public static RowDescriptor empty(DatatypeCoder datatypeCoder)
    Returns an empty row descriptor with the specified datatype coder.
    Parameters:
      `datatypeCoder` - datatype coder for the connection that uses this RowDescriptor.
    Returns:
      Empty row descriptor