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
Modifier
Constructor
Description
`protected`
`ModelWrapper()`
Creates a new `ModelWrapper`.

## Method Summary

Modifier and Type
Method
Description
`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 declared in class java.lang.Object

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

## Constructor Details

### ModelWrapper

protected ModelWrapper()
Creates a new `ModelWrapper`.

## Method Details

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