Module java.desktop
Package javax.swing

## Class DefaultRowSorter.ModelWrapper<M,I>

- java.lang.Object
- - javax.swing.DefaultRowSorter.ModelWrapper<M,I>

Type Parameters:
  `M` - the type of the underlying model
  `I` - the identifier supplied to the filter

Enclosing class:
  DefaultRowSorter<M,I>

    protected abstract static class DefaultRowSorter.ModelWrapper<M,I>
    extends Object

`DefaultRowSorter.ModelWrapper` is responsible for providing the data that gets sorted by `DefaultRowSorter`. You normally do not interact directly with `ModelWrapper`. Subclasses of `DefaultRowSorter` provide an implementation of `ModelWrapper` wrapping another model. For example, `TableRowSorter` provides a `ModelWrapper` that wraps a `TableModel`.

`ModelWrapper` makes a distinction between values as `Object`s and `String`s. This allows implementations to provide a custom string converter to be used instead of invoking `toString` on the object.

Since:
  1.6
See Also:
  `RowFilter`, `RowFilter.Entry`

### Constructor Summary

Constructors
`protected` `ModelWrapper()` Creates a new `ModelWrapper`.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`abstract int` `getColumnCount()` Returns the number of columns in the model.
`abstract I` `getIdentifier(int row)` Returns the identifier for the specified row.
`abstract M` `getModel()` Returns the underlying model that this `Model` is wrapping.
`abstract int` `getRowCount()` Returns the number of rows in the model.
`String` `getStringValueAt(int row, int column)` Returns the value as a `String` at the specified index.
`abstract Object` `getValueAt(int row, int column)` Returns the value at the specified index.

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

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### ModelWrapper

    protected ModelWrapper()

Creates a new `ModelWrapper`.

### Method Detail

#### getModel

    public abstract M getModel()

Returns the underlying model that this `Model` is wrapping.

Returns:
  the underlying model

#### getColumnCount

    public abstract int getColumnCount()

Returns the number of columns in the model.

Returns:
  the number of columns in the model

#### getRowCount

    public abstract int getRowCount()

Returns the number of rows in the model.

Returns:
  the number of rows in the model

#### getValueAt

    public abstract Object getValueAt(int row,
                                      int column)

Returns the value at the specified index.

Parameters:
  `row` - the row index
  `column` - the column index
Returns:
  the value at the specified index
Throws:
  `IndexOutOfBoundsException` - if the indices are outside the range of the model

#### getStringValueAt

    public String getStringValueAt(int row,
                                   int column)

Returns the value as a `String` at the specified index. This implementation uses `toString` on the result from `getValueAt` (making sure to return an empty string for null values). Subclasses that override this method should never return null.

Parameters:
  `row` - the row index
  `column` - the column index
Returns:
  the value at the specified index as a `String`
Throws:
  `IndexOutOfBoundsException` - if the indices are outside the range of the model

#### getIdentifier

    public abstract I getIdentifier(int row)

Returns the identifier for the specified row. The return value of this is used as the identifier for the `RowFilter.Entry` that is passed to the `RowFilter`.

Parameters:
  `row` - the row to return the identifier for, in terms of the underlying model
Returns:
  the identifier
See Also:
  `RowFilter.Entry.getIdentifier()`