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