public class ClassNode extends Object implements NodesExtracter, ScnChanged<ClassNode,Long>
Использование:
ClassNode cn = new ClassNode();
// Определяем функцию извелечения дочерних файлов из каталога
cn.add( File.class, new NodesExtracter(){ ... } );
// Определяем функцию 1 извелечения элементов из списка
cn.add( List.class, new NodesExtracter(){ ... } );
// Определяем функцию 2 извелечения элементов из списка в обратном порядке
cn.add( List.class, new NodesExtracter(){ ... } );
// вернет итератор по элементам,
// при чем элементы будут возвращены по два раза
// в прямом и в обратном порядке т.к. определены две функции
for( Object it : cn.fetch( list ) )
| Modifier and Type | Field and Description |
|---|---|
protected Lock |
lock |
protected LongScnChangedSupport<ClassNode> |
scn |
protected Map<Class,Set<NodesExtracter>> |
typedExtracter |
protected ClassSet |
types |
| Constructor and Description |
|---|
ClassNode()
Конструктор по умочанию
|
ClassNode(ClassNode src,
Lock lock)
Конструктор копирования с блокиовкой
|
ClassNode(Lock lock)
Конструктор с блокировкой
|
| Modifier and Type | Method and Description |
|---|---|
Closeable |
add(Class cls,
NodesExtracter ne)
Добавляет функцию следования
|
<T> ClassNode |
adds(Class<T> cls,
NodesExtracter<T,?>... ne)
Добавляет функции следования для указанного типа
|
void |
addScnChangedEvent(ScnChangedEvent<ClassNode,Long> ev)
Добавляет уведомление в очередь
|
Closeable |
addScnChangedListener(ScnChanedListener<ClassNode,Long> listener)
Добавляет подписчика на изменения
|
Closeable |
addScnChangedListener(ScnChanedListener<ClassNode,Long> listener,
boolean weakLink)
Добавляет подписчика на изменения
|
void |
clear()
Очищает все функции следования для указанного типа
|
void |
clear(Class cls)
Очищает все функции следования для указанного типа
|
ClassNode |
clone()
Клонирование
|
ClassNode |
clone(Lock lock)
Клонирование с блокировкой
|
Iterable |
extract(Object from)
Возвращает набор функций подходящих для извлечения данных (синоним fetch).
|
NodesExtracter[] |
extractersOf(Class cls)
Возвращает набор функций подходящих для извлечения данных
|
Iterable |
fetch(Object node)
Возвращает набор функций подходящих для извлечения данных
|
void |
fireScnChanged(Long old,
Long cur)
Уведомляет подписчиков о измении SCN минуя очередь уведомлений
|
void |
fireScnChangedEvent(ScnChangedEvent<ClassNode,Long> event)
Уведомляет подписчиков о измении SCN минуя очередь уведомлений
|
void |
fireScnChangedEvents()
Рассылает уведомления из очереди
|
Class[] |
getClasses()
Возвращает зарегистрированные типы
|
NodesExtracter[] |
getNodeExtracters(Class cls)
Возвращает функции следования для указанного типа
|
ConcurrentLinkedQueue<ScnChangedEvent<ClassNode,Long>> |
getScnChangedEventQueue()
Возвращает очередь уведомлений
|
Set<ScnChanedListener<ClassNode,Long>> |
getScnChangedListeners()
Возвращает активных подписчиков
|
boolean |
hasClass(Class cls)
Проверяет наличие функций у указанного типа
|
boolean |
hasScnChangedListener(ScnChanedListener<ClassNode,Long> listener)
Проверяет что указанный подписчик имеется в списках рассылки
|
Pair<Long,Long> |
nextscn()
Генерирует новый номер SCN.
|
Pair<Long,Long> |
nextscn(boolean addEvent,
boolean fireEvent)
(non-Javadoc)
|
void |
remove(Class cls,
NodesExtracter ne)
Удаляет функцию следования
|
void |
removeAllScnChangedListeners()
Удаляет всех подписчиков
|
void |
removeScnChangedListener(ScnChanedListener<ClassNode,Long> listener)
Удаляет подписчика от уведомлений
|
Long |
scn()
(non-Javadoc)
|
void |
scn(Runnable run)
Выполняет код в блоку try/finally а затем рассылает уведомления.
|
protected final Lock lock
protected final Map<Class,Set<NodesExtracter>> typedExtracter
protected final ClassSet types
protected final LongScnChangedSupport<ClassNode> scn
public ClassNode()
public ClassNode(Lock lock)
lock - блокировкаpublic ClassNode clone(Lock lock)
lock - блокировкаpublic Long scn()
scn in interface ScnChanged<ClassNode,Long>LongScnChangedSupport.scn()public Pair<Long,Long> nextscn(boolean addEvent, boolean fireEvent)
addEvent - Добавить событие в очередьfireEvent - ассылает накопленные собщения из очередиLongScnChangedSupport.nextscn(boolean,boolean)public Pair<Long,Long> nextscn()
LongScnChangedSupport.nextscn()public void scn(Runnable run)
run - кодLongScnChangedSupport.scn(Runnable)public boolean hasScnChangedListener(ScnChanedListener<ClassNode,Long> listener)
ScnChangedhasScnChangedListener in interface ScnChanged<ClassNode,Long>listener - подписчикpublic Set<ScnChanedListener<ClassNode,Long>> getScnChangedListeners()
ScnChangedgetScnChangedListeners in interface ScnChanged<ClassNode,Long>public Closeable addScnChangedListener(ScnChanedListener<ClassNode,Long> listener)
ScnChangedaddScnChangedListener in interface ScnChanged<ClassNode,Long>listener - подписчикpublic Closeable addScnChangedListener(ScnChanedListener<ClassNode,Long> listener, boolean weakLink)
ScnChangedaddScnChangedListener in interface ScnChanged<ClassNode,Long>listener - подписчикweakLink - true - добавить подписчика на weak ссылку / false - как hard ссылкуpublic void removeScnChangedListener(ScnChanedListener<ClassNode,Long> listener)
ScnChangedremoveScnChangedListener in interface ScnChanged<ClassNode,Long>listener - подписчикpublic void removeAllScnChangedListeners()
ScnChangedremoveAllScnChangedListeners in interface ScnChanged<ClassNode,Long>public void fireScnChangedEvent(ScnChangedEvent<ClassNode,Long> event)
event - уведомлениеScnChangedSupport.fireScnChangedEvent(xyz.cofe.scn.ScnChangedEvent)public ConcurrentLinkedQueue<ScnChangedEvent<ClassNode,Long>> getScnChangedEventQueue()
ScnChangedSupport.getScnChangedEventQueue()public void addScnChangedEvent(ScnChangedEvent<ClassNode,Long> ev)
ev - уведомлениеScnChangedSupport.fireScnChangedEvent(xyz.cofe.scn.ScnChangedEvent)public void fireScnChangedEvents()
public void fireScnChanged(Long old, Long cur)
old - предыдущее значение SCNcur - текущее значение SCNScnChangedSupport.fireScnChangedEvent(xyz.cofe.scn.ScnChangedEvent)public <T> ClassNode adds(Class<T> cls, NodesExtracter<T,?>... ne)
T - типcls - типne - функцииpublic Closeable add(Class cls, NodesExtracter ne)
cls - типne - функция следованияpublic void remove(Class cls, NodesExtracter ne)
cls - типne - функцияpublic void clear(Class cls)
cls - типpublic void clear()
public boolean hasClass(Class cls)
cls - типpublic Class[] getClasses()
public NodesExtracter[] getNodeExtracters(Class cls)
cls - типMap.get(java.lang.Object)public NodesExtracter[] extractersOf(Class cls)
cls - тип данныхpublic Iterable fetch(Object node)
node - объект из которого происходит извлечение данныхpublic Iterable extract(Object from)
extract in interface NodesExtracterfrom - объект из которого происходит извлечение данныхfetch(java.lang.Object)Copyright © 2019. All rights reserved.