org.firebirdsql.gds.ng.fields

## Class RowDescriptor

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

All Implemented Interfaces:
  java.lang.Iterable<FieldDescriptor>

    public final class RowDescriptor
    extends java.lang.Object
    implements java.lang.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 an immutable, values of a row are maintained separately in a `RowValue`.

Version:
  3.0
Author:
  Mark Rotteveel

### Method Summary

Methods
`RowValue` `createDefaultFieldValues()` Creates a `RowValue` instance with default (`null`) values for each field.
`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(java.lang.Object obj)`
`int` `getCount()`
`DatatypeCoder` `getDatatypeCoder()`
`IEncodingFactory` `getEncodingFactory()`
`FieldDescriptor` `getFieldDescriptor(int index)` Gets the `FieldDescriptor` at the specified (0-based) index.
`java.util.List<FieldDescriptor>` `getFieldDescriptors()`
`int` `hashCode()`
`java.util.Iterator<FieldDescriptor>` `iterator()`
`java.lang.String` `toString()`

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

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

### Method Detail

#### 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:
  `java.lang.IndexOutOfBoundsException` - if index is not `0 <= index < getCount`

#### getFieldDescriptors

    public java.util.List<FieldDescriptor> getFieldDescriptors()

Returns:
  An unmodifiable 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)`

#### iterator

    public java.util.Iterator<FieldDescriptor> iterator()

Specified by:
  `iterator` in interface `java.lang.Iterable<FieldDescriptor>`

#### 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`

#### createRowDescriptor

    public static RowDescriptor createRowDescriptor(FieldDescriptor[] fieldDescriptors,
                                    DatatypeCoder datatypeCoder)

Creates an instance of `RowDescriptor` with the supplied `FieldDescriptor` instances.

Parameters:
  `fieldDescriptors` - The field descriptors (array is cloned before use)
  `datatypeCoder` - he datatype code 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` - The datatype code for the connection that uses this RowDescriptor.
Returns:
  Empty row descriptor