Class MappedList<FROM,​TO>

java.lang.Object
xyz.cofe.collection.MappedList<FROM,​TO>
All Implemented Interfaces:
java.lang.Iterable<TO>, java.util.Collection<TO>, java.util.List<TO>, CollectionEventPublisher<EventList<TO>,​TO>, EventList<TO>, GetReadLock, GetWriteLock, ReadWriteLockSupport, Eterable<TO>, LongScn<EventList<TO>,​CollectionEvent<EventList<TO>,​TO>>, Scn<EventList<TO>,​java.lang.Long,​CollectionEvent<EventList<TO>,​TO>>

public class MappedList<FROM,​TO>
extends java.lang.Object
implements EventList<TO>
  • Field Summary

    Fields 
    Modifier and Type Field Description
    java.util.function.Function<FROM,​TO> mapping  
    protected EventList<TO> result  
    protected boolean resultSync  
    EventList<FROM> source  
    protected boolean sourceSync  
    java.util.function.Function<TO,​FROM> unmapping  
  • Constructor Summary

    Constructors 
    Constructor Description
    MappedList​(EventList<FROM> source, java.util.function.Function<FROM,​TO> mapping, java.util.function.Function<TO,​FROM> unmapping)  
  • Method Summary

    Modifier and Type Method Description
    void add​(int index, TO element)
    Вставляет элемент в определнное место списка
    boolean add​(TO to)
    Добавляет элемент в список
    boolean addAll​(int index, java.util.Collection<? extends TO> c)
    Добавляет все элементы в список, в указанную позицию
    boolean addAll​(java.util.Collection<? extends TO> c)
    Добавляет все элементы в список
    void clear()
    Удаляет все элементы
    boolean contains​(java.lang.Object o)
    Проверяет наличие элемента в коллеции
    boolean containsAll​(java.util.Collection<?> c)
    Проверяет наличие всех элементов в коллеции
    protected EventList<TO> createResultList()  
    void fireCollectionEvent​(CollectionEvent<EventList<TO>,​TO> event)
    Рассылка уведомления подписчикам
    void fireDeleted​(int index, TO to)
    Рассылка уведомления подписчикам о удалении элемента
    void fireInserted​(int index, TO to)
    Рассылка уведомления подписчикам о добавлении элемента
    void fireUpdated​(int index, TO old, TO current)
    Рассылка уведомления подписчикам о обновлении элемента
    TO get​(int index)
    Получение объекта по его индексу
    int indexOf​(java.lang.Object o)
    Поиск первого индекса элемента в коллекции
    boolean isEmpty()
    Проверяет что коллекция пуста
    java.util.Iterator<TO> iterator()
    Получение итератора по списку, от начала к концу
    int lastIndexOf​(java.lang.Object o)
    Поиск последнего индекса элемента в коллекции
    java.util.ListIterator<TO> listIterator()
    Получение итератора по списку
    java.util.ListIterator<TO> listIterator​(int index)
    Получение итератора по списку,, начала итерации согласно указанному индексу
    java.lang.AutoCloseable onChanged​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие изменения/добавления/удаления данных
    java.lang.AutoCloseable onChanged​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие изменения/добавления/удаления данных
    java.lang.AutoCloseable onDeleted​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие удаления данных
    java.lang.AutoCloseable onDeleted​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие удаления данных
    protected void onDeletedResult​(int idx, TO deleted)  
    protected void onDeletedSource​(int idx, FROM deleted)  
    java.lang.AutoCloseable onInserted​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие добавления данных
    java.lang.AutoCloseable onInserted​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие добавления данных
    protected void onInsertedResult​(int idx, TO newItem)  
    protected void onInsertedSource​(int idx, FROM newItem)  
    java.lang.AutoCloseable onUpdated​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие изменения данных
    java.lang.AutoCloseable onUpdated​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
    Добавляет подписчика на событие изменения данных
    protected void onUpdatedResult​(int idx, TO deleted, TO newItem)  
    protected void onUpdatedSource​(int idx, FROM deleted, FROM newItem)  
    TO remove​(int index)
    Удялет элемент из списка
    boolean remove​(java.lang.Object o)
    Удаляет элемент из списка
    boolean removeAll​(java.util.Collection<?> coll)
    Удаляет указанные элементы из списка
    boolean removeIf​(java.util.function.Predicate<? super TO> filter)
    Удаление элементов согласно фильтру
    void replaceAll​(java.util.function.UnaryOperator<TO> operator)
    Замена всех элементов
    boolean retainAll​(java.util.Collection<?> coll)
    Удаляет элементы из списока, за исключением указанных
    TO set​(int index, TO element)
    Записиывает элемент в определенную позицию
    int size()
    Возвращает кол-во элементов в коллекции
    void sort​(java.util.Comparator<? super TO> c)
    Сортировка списка
    java.util.List<TO> subList​(int fromIndex, int toIndex)
    Создание проекции списка
    java.util.List<TO> target()
    Возвращает целевой список, над которым происходят преобразования
    java.lang.Object[] toArray()
    Создает массив объектов коллеции
    <T> T[] toArray​(T[] a)
    Создает массив объектов коллеции

    Methods inherited from class java.lang.Object

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

    Methods inherited from interface java.util.Collection

    parallelStream, stream, toArray

    Methods inherited from interface xyz.cofe.iter.Eterable

    count, filter, first, limit, map, notNull, product, product, product, product, product, reduce, toList, union, union

    Methods inherited from interface java.lang.Iterable

    forEach

    Methods inherited from interface java.util.List

    equals, hashCode, spliterator

    Methods inherited from interface xyz.cofe.scn.LongScn

    nextscn, nextscn, scn

    Methods inherited from interface xyz.cofe.ecolls.ReadWriteLockSupport

    getReadLock, getWriteLock, readLock, readLock, writeLock, writeLock
  • Field Details

  • Constructor Details

  • Method Details

    • createResultList

      protected EventList<TO> createResultList()
    • onInsertedSource

      protected void onInsertedSource​(int idx, FROM newItem)
    • onUpdatedSource

      protected void onUpdatedSource​(int idx, FROM deleted, FROM newItem)
    • onDeletedSource

      protected void onDeletedSource​(int idx, FROM deleted)
    • onInsertedResult

      protected void onInsertedResult​(int idx, TO newItem)
    • onUpdatedResult

      protected void onUpdatedResult​(int idx, TO deleted, TO newItem)
    • onDeletedResult

      protected void onDeletedResult​(int idx, TO deleted)
    • target

      public java.util.List<TO> target()
      Возвращает целевой список, над которым происходят преобразования
      Specified by:
      target in interface EventList<FROM>
      Returns:
      целевой список
    • onInserted

      public java.lang.AutoCloseable onInserted​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие добавления данных
      Specified by:
      onInserted in interface EventList<FROM>
      Parameters:
      ls - подписчик - fn( key:Integer, oldValue:E=null, newValue:E )
      Returns:
      отписка от уведомлений
    • onInserted

      public java.lang.AutoCloseable onInserted​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие добавления данных
      Specified by:
      onInserted in interface EventList<FROM>
      Parameters:
      weak - true - добавить подписчика как weak ссылку
      ls - подписчик - fn( key:Integer, oldValue:E=null, newValue:E )
      Returns:
      отписка от уведомлений
    • onUpdated

      public java.lang.AutoCloseable onUpdated​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие изменения данных
      Specified by:
      onUpdated in interface EventList<FROM>
      Parameters:
      ls - подписчик - fn( key:Integer, oldValue:E, newValue:E )
      Returns:
      отписка от уведомлений
    • onUpdated

      public java.lang.AutoCloseable onUpdated​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие изменения данных
      Specified by:
      onUpdated in interface EventList<FROM>
      Parameters:
      weak - true - добавить подписчика как weak ссылку
      ls - подписчик - fn( key:Integer, oldValue:E, newValue:E )
      Returns:
      отписка от уведомлений
    • onDeleted

      public java.lang.AutoCloseable onDeleted​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие удаления данных
      Specified by:
      onDeleted in interface EventList<FROM>
      Parameters:
      ls - подписчик - fn( key:Integer, oldValue:E, newValue:E=null )
      Returns:
      отписка от уведомлений
    • onDeleted

      public java.lang.AutoCloseable onDeleted​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие удаления данных
      Specified by:
      onDeleted in interface EventList<FROM>
      Parameters:
      weak - true - добавить подписчика как weak ссылку
      ls - подписчик - fn( key:Integer, oldValue:E, newValue:E=null )
      Returns:
      отписка от уведомлений
    • onChanged

      public java.lang.AutoCloseable onChanged​(TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие изменения/добавления/удаления данных
      Specified by:
      onChanged in interface EventList<FROM>
      Parameters:
      ls - подписчик - fn( key:Integer, oldValue:E, newValue:E )
      Returns:
      отписка от уведомлений
    • onChanged

      public java.lang.AutoCloseable onChanged​(boolean weak, TripleConsumer<java.lang.Integer,​TO,​TO> ls)
      Добавляет подписчика на событие изменения/добавления/удаления данных
      Specified by:
      onChanged in interface EventList<FROM>
      Parameters:
      weak - true - добавить подписчика как weak ссылку
      ls - подписчик - fn( key:Integer, oldValue:E, newValue:E )
      Returns:
      отписка от уведомлений
    • fireCollectionEvent

      public void fireCollectionEvent​(CollectionEvent<EventList<TO>,​TO> event)
      Description copied from interface: CollectionEventPublisher
      Рассылка уведомления подписчикам
      Specified by:
      fireCollectionEvent in interface CollectionEventPublisher<FROM,​TO>
      Specified by:
      fireCollectionEvent in interface EventList<FROM>
      Parameters:
      event - уведомление
    • fireInserted

      public void fireInserted​(int index, TO to)
      Рассылка уведомления подписчикам о добавлении элемента
      Specified by:
      fireInserted in interface EventList<FROM>
      Parameters:
      index - индекс
      to - элемент
    • fireUpdated

      public void fireUpdated​(int index, TO old, TO current)
      Рассылка уведомления подписчикам о обновлении элемента
      Specified by:
      fireUpdated in interface EventList<FROM>
      Parameters:
      index - индекс
      old - предыдущее значение
      current - текущее значение
    • fireDeleted

      public void fireDeleted​(int index, TO to)
      Рассылка уведомления подписчикам о удалении элемента
      Specified by:
      fireDeleted in interface EventList<FROM>
      Parameters:
      index - индекс
      to - элемент
    • size

      public int size()
      Возвращает кол-во элементов в коллекции
      Specified by:
      size in interface java.util.Collection<FROM>
      Specified by:
      size in interface EventList<FROM>
      Specified by:
      size in interface java.util.List<FROM>
      Returns:
      кол-во элементов
      See Also:
      isEmpty()
    • isEmpty

      public boolean isEmpty()
      Проверяет что коллекция пуста
      Specified by:
      isEmpty in interface java.util.Collection<FROM>
      Specified by:
      isEmpty in interface EventList<FROM>
      Specified by:
      isEmpty in interface java.util.List<FROM>
      Returns:
      true - коллекция пуста
    • contains

      public boolean contains​(java.lang.Object o)
      Проверяет наличие элемента в коллеции
      Specified by:
      contains in interface java.util.Collection<FROM>
      Specified by:
      contains in interface EventList<FROM>
      Specified by:
      contains in interface java.util.List<FROM>
      Parameters:
      o - элемент
      Returns:
      true - элемент присуствует в коллекции
    • toArray

      public java.lang.Object[] toArray()
      Создает массив объектов коллеции
      Specified by:
      toArray in interface java.util.Collection<FROM>
      Specified by:
      toArray in interface EventList<FROM>
      Specified by:
      toArray in interface java.util.List<FROM>
      Returns:
      массив объектов коллеции
    • toArray

      public <T> T[] toArray​(T[] a)
      Создает массив объектов коллеции
      Specified by:
      toArray in interface java.util.Collection<FROM>
      Specified by:
      toArray in interface EventList<FROM>
      Specified by:
      toArray in interface java.util.List<FROM>
      Type Parameters:
      T - ТИп элементов массива
      Parameters:
      a - пустой массив (изза особенности реализации Generic)
      Returns:
      массив
    • containsAll

      public boolean containsAll​(java.util.Collection<?> c)
      Проверяет наличие всех элементов в коллеции
      Specified by:
      containsAll in interface java.util.Collection<FROM>
      Specified by:
      containsAll in interface EventList<FROM>
      Specified by:
      containsAll in interface java.util.List<FROM>
      Parameters:
      c - искомые объекты
      Returns:
      true - если все искомые объекты есть в коллеции
    • get

      public TO get​(int index)
      Получение объекта по его индексу
      Specified by:
      get in interface EventList<FROM>
      Specified by:
      get in interface java.util.List<FROM>
      Parameters:
      index - индекс элемента
      Returns:
      Элемент
    • indexOf

      public int indexOf​(java.lang.Object o)
      Поиск первого индекса элемента в коллекции
      Specified by:
      indexOf in interface EventList<FROM>
      Specified by:
      indexOf in interface java.util.List<FROM>
      Parameters:
      o - элемент
      Returns:
      индекс или -1, если не найден
    • lastIndexOf

      public int lastIndexOf​(java.lang.Object o)
      Поиск последнего индекса элемента в коллекции
      Specified by:
      lastIndexOf in interface EventList<FROM>
      Specified by:
      lastIndexOf in interface java.util.List<FROM>
      Parameters:
      o - элемент
      Returns:
      индекс или -1, если не найден
    • iterator

      public java.util.Iterator<TO> iterator()
      Получение итератора по списку, от начала к концу
      Specified by:
      iterator in interface java.util.Collection<FROM>
      Specified by:
      iterator in interface EventList<FROM>
      Specified by:
      iterator in interface java.lang.Iterable<FROM>
      Specified by:
      iterator in interface java.util.List<FROM>
      Returns:
      итератор
    • listIterator

      public java.util.ListIterator<TO> listIterator()
      Получение итератора по списку
      Specified by:
      listIterator in interface EventList<FROM>
      Specified by:
      listIterator in interface java.util.List<FROM>
      Returns:
      итератор
    • listIterator

      public java.util.ListIterator<TO> listIterator​(int index)
      Получение итератора по списку,, начала итерации согласно указанному индексу
      Specified by:
      listIterator in interface EventList<FROM>
      Specified by:
      listIterator in interface java.util.List<FROM>
      Parameters:
      index - индекс начала итерирования
      Returns:
      итератор
    • subList

      public java.util.List<TO> subList​(int fromIndex, int toIndex)
      Создание проекции списка
      Specified by:
      subList in interface EventList<FROM>
      Specified by:
      subList in interface java.util.List<FROM>
      Parameters:
      fromIndex - начальный индекс
      toIndex - конечный индекс
      Returns:
      Проекция
    • add

      public boolean add​(TO to)
      Добавляет элемент в список
      Specified by:
      add in interface java.util.Collection<FROM>
      Specified by:
      add in interface EventList<FROM>
      Specified by:
      add in interface java.util.List<FROM>
      Parameters:
      to - элемент
      Returns:
      true - список изменен
    • remove

      public boolean remove​(java.lang.Object o)
      Удаляет элемент из списка
      Specified by:
      remove in interface java.util.Collection<FROM>
      Specified by:
      remove in interface EventList<FROM>
      Specified by:
      remove in interface java.util.List<FROM>
      Parameters:
      o - элемент
      Returns:
      true - список изменен
    • addAll

      public boolean addAll​(java.util.Collection<? extends TO> c)
      Добавляет все элементы в список
      Specified by:
      addAll in interface java.util.Collection<FROM>
      Specified by:
      addAll in interface EventList<FROM>
      Specified by:
      addAll in interface java.util.List<FROM>
      Parameters:
      c - элементы
      Returns:
      true - список изменен
    • addAll

      public boolean addAll​(int index, java.util.Collection<? extends TO> c)
      Добавляет все элементы в список, в указанную позицию
      Specified by:
      addAll in interface EventList<FROM>
      Specified by:
      addAll in interface java.util.List<FROM>
      Parameters:
      index - позиция (индекс) вставки
      c - элементы
      Returns:
      true - список изменен
    • removeAll

      public boolean removeAll​(java.util.Collection<?> coll)
      Удаляет указанные элементы из списка
      Specified by:
      removeAll in interface java.util.Collection<FROM>
      Specified by:
      removeAll in interface EventList<FROM>
      Specified by:
      removeAll in interface java.util.List<FROM>
      Parameters:
      coll - элементы
      Returns:
      true - список изменен
    • retainAll

      public boolean retainAll​(java.util.Collection<?> coll)
      Удаляет элементы из списока, за исключением указанных
      Specified by:
      retainAll in interface java.util.Collection<FROM>
      Specified by:
      retainAll in interface EventList<FROM>
      Specified by:
      retainAll in interface java.util.List<FROM>
      Parameters:
      coll - элементы
      Returns:
      true - список изменен
    • clear

      public void clear()
      Удаляет все элементы
      Specified by:
      clear in interface java.util.Collection<FROM>
      Specified by:
      clear in interface EventList<FROM>
      Specified by:
      clear in interface java.util.List<FROM>
    • set

      public TO set​(int index, TO element)
      Записиывает элемент в определенную позицию
      Specified by:
      set in interface EventList<FROM>
      Specified by:
      set in interface java.util.List<FROM>
      Parameters:
      index - индекс
      element - элемент
      Returns:
      предыдущее значение
    • add

      public void add​(int index, TO element)
      Вставляет элемент в определнное место списка
      Specified by:
      add in interface EventList<FROM>
      Specified by:
      add in interface java.util.List<FROM>
      Parameters:
      index - индекс
      element - элемент
    • remove

      public TO remove​(int index)
      Удялет элемент из списка
      Specified by:
      remove in interface EventList<FROM>
      Specified by:
      remove in interface java.util.List<FROM>
      Parameters:
      index - индекс элемента
      Returns:
      удаленный элемент
    • replaceAll

      public void replaceAll​(java.util.function.UnaryOperator<TO> operator)
      Замена всех элементов
      Specified by:
      replaceAll in interface EventList<FROM>
      Specified by:
      replaceAll in interface java.util.List<FROM>
      Parameters:
      operator - функция замены
    • sort

      public void sort​(java.util.Comparator<? super TO> c)
      Сортировка списка
      Specified by:
      sort in interface EventList<FROM>
      Specified by:
      sort in interface java.util.List<FROM>
      Parameters:
      c - функция сравнения
    • removeIf

      public boolean removeIf​(java.util.function.Predicate<? super TO> filter)
      Удаление элементов согласно фильтру
      Specified by:
      removeIf in interface java.util.Collection<FROM>
      Specified by:
      removeIf in interface EventList<FROM>
      Parameters:
      filter - фильтр
      Returns:
      факт удаления