Class ChangeTracker<T>

  • Type Parameters:
    T - the class representing a row in the table

    public abstract class ChangeTracker<T>
    extends java.lang.Object
    Base class for tracking unsaved changes in a table. Unsaved changes include
    • unsaved new rows
    • unsaved deletes
    • unsaved modifications to rows
    Unsaved modifications to rows are keyed by the row bean and a property index (typically the index of the table column displaying the property).
    • Constructor Summary

      Constructors 
      Modifier Constructor Description
      protected ChangeTracker​(boolean useEquals)  
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      void cancelDeletes​(java.util.function.Predicate<? super T> predicate)
      Cancel pending deletes matching a predicate.
      void commit()
      Commit all pending changes.
      java.util.List<T> getAdds()  
      java.util.Set<java.lang.Integer> getChangeIndexes​(T item)  
      java.util.stream.Stream<T> getChanges()  
      java.util.List<T> getDeletes()  
      java.util.stream.Stream<T> getUpdates()  
      boolean isChanged​(T item, int index)  
      boolean isEmpty()  
      boolean isPendingAdd​(T item)  
      boolean isPendingDelete​(T item)  
      protected abstract void itemDeleted​(T item)
      Implementation should remove the row from the table without notifying this change tracker.
      protected abstract void itemUpdated​(T item)
      Called when the modification status of a row changes.
      void pendingAdd​(T item)
      Mark a row as a pending add.
      void pendingDelete​(T item)
      Mark a row as a pending delete.
      void reset()
      Clear all pending changes.
      void resetItem​(T item)
      Reset pending changes for a row.
      void resetItems​(java.util.function.Predicate<? super T> predicate)
      Reset pending changes for rows matching a predicate.
      void revert()
      Revert all pending changes.
      protected abstract void revertItemChange​(java.lang.Object originalValue, T item, int index)
      Implementation should update the table model with the original value without notifying this change tracker.
      void setValue​(T item, int index, java.lang.Object oldValue, java.lang.Object newValue)
      Add or remove a pending change for a row property.
      void undoChange​(T item, int index)
      Restore the original value of a modified property of a row.
      void undoDelete​(T item)  
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • ChangeTracker

        protected ChangeTracker​(boolean useEquals)
        Parameters:
        useEquals - if true then use Object.equals(Object) to match rows, otherwise use object identity
    • Method Detail

      • pendingAdd

        public void pendingAdd​(T item)
        Mark a row as a pending add.
      • pendingDelete

        public void pendingDelete​(T item)
        Mark a row as a pending delete.
      • cancelDeletes

        public void cancelDeletes​(java.util.function.Predicate<? super T> predicate)
        Cancel pending deletes matching a predicate.
      • resetItem

        public void resetItem​(T item)
        Reset pending changes for a row.
      • resetItems

        public void resetItems​(java.util.function.Predicate<? super T> predicate)
        Reset pending changes for rows matching a predicate.
      • isPendingAdd

        public boolean isPendingAdd​(T item)
        Returns:
        true if the row is a pending add.
      • isPendingDelete

        public boolean isPendingDelete​(T item)
        Returns:
        true if the row is a pending delete.
      • setValue

        public void setValue​(T item,
                             int index,
                             java.lang.Object oldValue,
                             java.lang.Object newValue)
        Add or remove a pending change for a row property.
        Parameters:
        item - the row bean
        index - the property index
        oldValue - the previous value of the property
        newValue - the replacement value for the property
      • isEmpty

        public boolean isEmpty()
        Returns:
        true if there are no pending changes for any rows.
      • isChanged

        public boolean isChanged​(T item,
                                 int index)
        Parameters:
        item - a row bean
        index - a property index
        Returns:
        true if the row property has been modified.
      • getChangeIndexes

        public java.util.Set<java.lang.Integer> getChangeIndexes​(T item)
      • getChanges

        public java.util.stream.Stream<T> getChanges()
        Returns:
        all of the rows with pending changes.
      • getAdds

        public java.util.List<T> getAdds()
        Returns:
        unsaved new rows.
      • getDeletes

        public java.util.List<T> getDeletes()
        Returns:
        rows pending deletion.
      • getUpdates

        public java.util.stream.Stream<T> getUpdates()
        Returns:
        unsaved new and modified rows.
      • undoChange

        public void undoChange​(T item,
                               int index)
        Restore the original value of a modified property of a row. If the specified proeprty has been modified then revertItemChange(Object, Object, int) is called with the original value.
        Parameters:
        item - the row to update
        index - the property index
      • undoDelete

        public void undoDelete​(T item)
      • revert

        public void revert()
        Revert all pending changes.
      • revertItemChange

        protected abstract void revertItemChange​(java.lang.Object originalValue,
                                                 T item,
                                                 int index)
        Implementation should update the table model with the original value without notifying this change tracker.
      • itemUpdated

        protected abstract void itemUpdated​(T item)
        Called when the modification status of a row changes. Implementation should fire table model change events.
      • itemDeleted

        protected abstract void itemDeleted​(T item)
        Implementation should remove the row from the table without notifying this change tracker.
      • commit

        public void commit()
        Commit all pending changes.
      • reset

        public void reset()
        Clear all pending changes.