Uploaded image for project: 'MyFaces Trinidad'
  1. MyFaces Trinidad
  2. TRINIDAD-1938

RowKeyPropertyModel and RowKeyPropertyTreeModel

    XMLWordPrintableJSON

Details

    • Improvement
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • 2.0.0-beta-1
    • 2.0.0-beta-1
    • Components
    • None
    • All

    Description

      By default, when Java Lists/Arrays are used as models in Trinidad table/tree/treeTable components, they are wrapped in a SortableModel instance.

      The problem with SortableModel is that it uses row indexes as row keys. This makes SortableModel immutable and insert/delete operations in the underlying List/array can cause problems. For example, indexes shift after insert/delete operations and can cause problems if the component is holding on to row keys in SelectedRowKey/DisclosedRowKey sets.

      The proposal is to add row key based CollectionModel/TreeModels which avoid using indexes as row keys.

      Attaching a patch for a RowKeyPropertyModel and a RowKeyPropertyTreeModel. RowKeyPropertyModel takes a rowKeyProperty name which identifies the unique row key in each model row by name. The setRowKey/getRowKey etc APIs use the rowKeyProperty to reference the row key attribute.

      One drawback with the default implementation of setRowKey API in RowKeyPropertyModel is that it is inefficient and does a linear search through the model to find the row with the given row key. The search can be optimized in subclasses for specific model implementations.

      Attachments

        1. rowkeymodel1.patch
          6 kB
          Kamran Kashanian
        2. trinidad-1938-ps6.patch
          7 kB
          Jing Wu

        Activity

          People

            Unassigned Unassigned
            kamrankashanian Kamran Kashanian
            Votes:
            2 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: