Package xyz.cofe.data.table
Class DataTable
java.lang.Object
xyz.cofe.data.table.DataTable
- All Implemented Interfaces:
xyz.cofe.ecolls.GetReadLock,xyz.cofe.ecolls.GetWriteLock,xyz.cofe.ecolls.ReadWriteLockSupport
public class DataTable
extends java.lang.Object
implements xyz.cofe.ecolls.ReadWriteLockSupport
Таблица с данными.
Каждая строка таблицы может находится в нескольких состояниях:
Fixed, Updated - содержится в коллекции рабочих строк (getWorkedRows())
Inserted - содержится в коллекции рабочих строк и коллекции новых строк (getWorkedRows())
- Author:
- Kamnev Georgiy
- See Also:
DataRow
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceDataTable.InternalRunВыполенеие внутреннего кодаclassDataTable.NullRowsDisablerЗапрещает вставлять null ссылки в качестве строкclassDataTable.ReadonlyColumnsConstraintОграничение на операции с колонками.classDataTable.WorkedRowsOnDeletedTackingСлушает изменения рабочего набора и при добавлении новой строки в WorkedRows отмечает ее как новую (getInsertedRows().add())classDataTable.WorkedRowsOnUpdateInsertTrackingСлушает изменения рабочего набора и при добавлении новой строки в WorkedRows отмечает ее как новую (getInsertedRows().add()) -
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.AtomicIntegerdropCallLevelprotected java.util.concurrent.atomic.AtomicIntegereventLockLevelprotected java.util.concurrent.LinkedBlockingQueue<DataEvent>eventQueueprotected DataEventSupportlisteners -
Constructor Summary
Constructors Constructor Description DataTable()Конструктор по умолчаниюDataTable(DataColumn[] columns)КонструкторDataTable(DataColumn[] columns, java.lang.Iterable<java.lang.Object[]> initialData)КонструкторDataTable(DataColumn[] columns, java.lang.Iterable<DataRow> rows, java.lang.Iterable<DataRow> inserted, java.lang.Iterable<DataRow> deleted)Конструктор де сериализации -
Method Summary
Modifier and Type Method Description voidaddColumn(DataColumn dc)Добавляет колонку к таблицеvoidaddDataEvent(DataEvent ev)Добавляет событие в очередьjava.lang.AutoCloseableaddDataEventListener(DataEventListener ls)Добавляет подписчика на событияjava.lang.AutoCloseableaddDataEventListener(DataEventListener ls, boolean weak)Добавляет подписчика на событияprotected DataTable.InternalRuncreateInternalRun()Создаение объекта для доступа к внутренним объектамvoiddelete(DataRow row)Удаляет строкуvoiddrop()Удаление всех данны, включая изменения и удаление структурыvoiddropColumns()Удаляет все колонкиvoidfireEvent(DataEvent event)Уведомляет подписчиков о событииvoidfireEventQueue()Рассылает события из очереди подписчикамvoidfixed()Зафиксировать все строки.voidfixed(DataRow row)Фиксация измененийvoidfixed(DataRow row, boolean addEvents)Фиксация измененийDataColumngetColumn(int cidx)Возвращает колонку по ее индексуDataColumn[]getColumns()Возвращает массив колонокintgetColumnsCount()Возвращает кол-во колонок в таблицеDataEventListener[]getDataEventListeners()Возвращает список подписчиковjava.util.concurrent.locks.LockgetReadLock()java.util.concurrent.locks.ReentrantReadWriteLockgetReadWriteLock()DataRowgetRow(int row)Возвращает строку по индексу из рабочего набораintgetRowsCount()Возвращает кол-во строк в рабочем набореxyz.cofe.iter.Eterable<DataRow>getRowsIterable()Итератор по рабочему набору строкxyz.cofe.iter.Eterable<DataRow>getRowsIterable(DataRowState... states)Итератор по строкамxyz.cofe.iter.Eterable<DataRow>getRowsIterableAll()Возвращает все строки включая удаленныеjava.util.Iterator<DataRow>getRowsIterator()Итератор по рабочему набору строкlonggetScn()Возвращает еткущий номер изененийjava.util.concurrent.locks.LockgetWriteLock()booleanhasDataEventListener(DataEventListener ls)Проверка наличия подписчикаintindexOf(DataRow mrow)Возвращает индекст строки в таблицеDataTableInsertinginsert(java.lang.Object... values)Производит вставку строкиvoidinsert(DataRow row)Производит вставку строкиbooleanisDeleted(DataRow row)Возвращает true если строка отмечена как удаленнаяbooleanisInserted(DataRow row)Возвращает true если строка отмечена как новая (inserted)booleanisTrackChanges()Указывает отслеживать измененияbooleanisUpdated(DataRow row)Возвращает true если строка быда обновлена, но не фиксированна<T extends DataEvent>
java.lang.AutoCloseablelisten(java.lang.Class<T> evnType, boolean weakRef, java.util.function.Consumer<T> listener)Подписка на события определенного типа<T extends DataEvent>
java.lang.AutoCloseablelisten(java.lang.Class<T> evnType, java.util.function.Consumer<T> listener)Подписка на события определенного типаprotected java.lang.ObjectlockRunInternal(xyz.cofe.fn.Fn1<DataTable.InternalRun,java.lang.Object> run)Выполнение внутреннего кодаprotected longnextScn()Указывает текущий номер измененийjava.lang.AutoCloseableonColumnAdded(boolean weak, java.util.function.Consumer<DataColumnAdded> listener)Добавление на событие добавления колонкиjava.lang.AutoCloseableonColumnAdded(java.util.function.Consumer<DataColumnAdded> listener)Добавление на событие добавления колонкиjava.lang.AutoCloseableonColumnRemoved(boolean weak, java.util.function.Consumer<DataColumnAdded> listener)Добавление на событие - колонка удаленаjava.lang.AutoCloseableonColumnRemoved(java.util.function.Consumer<DataColumnRemoved> listener)Добавление на событие - колонка удаленаjava.lang.AutoCloseableonDataTableDropped(boolean weak, java.util.function.Consumer<DataTableDropped> listener)Добавление на событие полного удаления таблицы, включая структурыjava.lang.AutoCloseableonDataTableDropped(java.util.function.Consumer<DataTableDropped> listener)Добавление на событие полного удаления таблицы, включая структурыjava.lang.AutoCloseableonRowDeleted(boolean weak, java.util.function.Consumer<DataRowDeleted> listener)Добавление на событие: строка почена под удалениеjava.lang.AutoCloseableonRowDeleted(java.util.function.Consumer<DataRowDeleted> listener)Добавление на событие: строка почена под удалениеjava.lang.AutoCloseableonRowErased(boolean weak, java.util.function.Consumer<DataRowErased> listener)Добавление на событие окончательного удаляения строкиjava.lang.AutoCloseableonRowErased(java.util.function.Consumer<DataRowErased> listener)Добавление на событие окончательного удаляения строкиjava.lang.AutoCloseableonRowUndeleted(boolean weak, java.util.function.Consumer<DataRowUndeleted> listener)Добавление на событие отката удаляения строкиjava.lang.AutoCloseableonRowUndeleted(java.util.function.Consumer<DataRowUndeleted> listener)Добавление на событие отката удаляения строкиvoidremoveColumn(DataColumn dc)Удаляет колонку из таблицыvoidremoveColumnByIndex(int colIdx)Удаляет колонку по ее индексуvoidremoveDataEventListener(DataEventListener ls)Удаляет подписчикаvoidrollback()Откат изменений таблицыvoidrollback(boolean addEvents)Откат изменений таблицыvoidrollback(DataRow row)Откат изменений строкиvoidrollback(DataRow row, boolean addEvents)Откат изменений строкиjava.util.List<DataRow>rowsList(DataRowState... states)Возвращает строки ввиде спискаvoidsetTrackChanges(boolean track)Указывает отслеживать измененияDataRowStatestateOf(DataRow row)Возвращает состояние строки
-
Field Details
-
listeners
-
eventQueue
-
eventLockLevel
protected final transient java.util.concurrent.atomic.AtomicInteger eventLockLevel -
dropCallLevel
protected final transient java.util.concurrent.atomic.AtomicInteger dropCallLevel
-
-
Constructor Details
-
DataTable
public DataTable()Конструктор по умолчанию -
DataTable
Конструктор- Parameters:
columns- Описания колонок таблицы
-
DataTable
Конструктор- Parameters:
columns- Описания колонок таблицыinitialData- Начальные данные
-
DataTable
public DataTable(DataColumn[] columns, java.lang.Iterable<DataRow> rows, java.lang.Iterable<DataRow> inserted, java.lang.Iterable<DataRow> deleted)Конструктор де сериализации- Parameters:
columns- Набор колонокrows- Фиксированные/Модифицированные строкиinserted- Добавленные, но не фиксированные строкиdeleted- Удаленные, но не фиксированные строки
-
-
Method Details
-
getReadWriteLock
public java.util.concurrent.locks.ReentrantReadWriteLock getReadWriteLock() -
getReadLock
public java.util.concurrent.locks.Lock getReadLock()- Specified by:
getReadLockin interfacexyz.cofe.ecolls.GetReadLock- Specified by:
getReadLockin interfacexyz.cofe.ecolls.ReadWriteLockSupport
-
getWriteLock
public java.util.concurrent.locks.Lock getWriteLock()- Specified by:
getWriteLockin interfacexyz.cofe.ecolls.GetWriteLock- Specified by:
getWriteLockin interfacexyz.cofe.ecolls.ReadWriteLockSupport
-
addDataEventListener
Добавляет подписчика на события- Parameters:
ls- Подписчикweak- true - добавить как weak ссылку- Returns:
- Отписка
-
addDataEventListener
Добавляет подписчика на события- Parameters:
ls- Подписчик- Returns:
- Отписка
-
removeDataEventListener
Удаляет подписчика- Parameters:
ls- подписчик
-
hasDataEventListener
Проверка наличия подписчика- Parameters:
ls- подписчик- Returns:
- true подписан
-
getDataEventListeners
Возвращает список подписчиков- Returns:
- подписчики
-
fireEvent
Уведомляет подписчиков о событии- Parameters:
event- событие
-
addDataEvent
Добавляет событие в очередь- Parameters:
ev- событие
-
fireEventQueue
public void fireEventQueue()Рассылает события из очереди подписчикам -
createInternalRun
Создаение объекта для доступа к внутренним объектам- Returns:
- доступ к внутренним объектам
-
lockRunInternal
protected java.lang.Object lockRunInternal(xyz.cofe.fn.Fn1<DataTable.InternalRun,java.lang.Object> run)Выполнение внутреннего кода- Parameters:
run- внутренний код- Returns:
- Результат выполнения
-
listen
public <T extends DataEvent> java.lang.AutoCloseable listen(java.lang.Class<T> evnType, boolean weakRef, java.util.function.Consumer<T> listener)Подписка на события определенного типа- Type Parameters:
T- Тип события- Parameters:
evnType- Тип событияweakRef- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от события
-
listen
public <T extends DataEvent> java.lang.AutoCloseable listen(java.lang.Class<T> evnType, java.util.function.Consumer<T> listener)Подписка на события определенного типа- Type Parameters:
T- Тип события- Parameters:
evnType- Тип событияlistener- Подписчик- Returns:
- Отписка от получения событий
-
onColumnAdded
public java.lang.AutoCloseable onColumnAdded(boolean weak, java.util.function.Consumer<DataColumnAdded> listener)Добавление на событие добавления колонки- Parameters:
weak- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от получения событий
-
onColumnAdded
public java.lang.AutoCloseable onColumnAdded(java.util.function.Consumer<DataColumnAdded> listener)Добавление на событие добавления колонки- Parameters:
listener- Подписчик- Returns:
- Отписка от получения событий
-
onColumnRemoved
public java.lang.AutoCloseable onColumnRemoved(boolean weak, java.util.function.Consumer<DataColumnAdded> listener)Добавление на событие - колонка удалена- Parameters:
weak- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от получения событий
-
onColumnRemoved
public java.lang.AutoCloseable onColumnRemoved(java.util.function.Consumer<DataColumnRemoved> listener)Добавление на событие - колонка удалена- Parameters:
listener- Подписчик- Returns:
- Отписка от получения событий
-
onRowDeleted
public java.lang.AutoCloseable onRowDeleted(boolean weak, java.util.function.Consumer<DataRowDeleted> listener)Добавление на событие: строка почена под удаление- Parameters:
weak- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от получения событий
-
onRowDeleted
Добавление на событие: строка почена под удаление- Parameters:
listener- Подписчик- Returns:
- Отписка от получения событий
-
onRowUndeleted
public java.lang.AutoCloseable onRowUndeleted(boolean weak, java.util.function.Consumer<DataRowUndeleted> listener)Добавление на событие отката удаляения строки- Parameters:
weak- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от получения событий
-
onRowUndeleted
public java.lang.AutoCloseable onRowUndeleted(java.util.function.Consumer<DataRowUndeleted> listener)Добавление на событие отката удаляения строки- Parameters:
listener- Подписчик- Returns:
- Отписка от получения событий
-
onRowErased
public java.lang.AutoCloseable onRowErased(boolean weak, java.util.function.Consumer<DataRowErased> listener)Добавление на событие окончательного удаляения строки- Parameters:
weak- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от получения событий
-
onRowErased
Добавление на событие окончательного удаляения строки- Parameters:
listener- Подписчик- Returns:
- Отписка от получения событий
-
onDataTableDropped
public java.lang.AutoCloseable onDataTableDropped(boolean weak, java.util.function.Consumer<DataTableDropped> listener)Добавление на событие полного удаления таблицы, включая структуры- Parameters:
weak- Добавить подписчика как weak ссылкуlistener- Подписчик- Returns:
- Отписка от получения событий
-
onDataTableDropped
public java.lang.AutoCloseable onDataTableDropped(java.util.function.Consumer<DataTableDropped> listener)Добавление на событие полного удаления таблицы, включая структуры- Parameters:
listener- Подписчик- Returns:
- Отписка от получения событий
-
isTrackChanges
public boolean isTrackChanges()Указывает отслеживать изменения- Returns:
- true - отслеживание включенно
-
setTrackChanges
public void setTrackChanges(boolean track)Указывает отслеживать изменения- Parameters:
track- true - Отслеживать
-
getScn
public long getScn()Возвращает еткущий номер изенений- Returns:
- текущий номер изменений
-
nextScn
protected long nextScn()Указывает текущий номер изменений- Returns:
- текущий номер изменений
-
getColumns
Возвращает массив колонок- Returns:
- колонки таблицы
-
getColumnsCount
public int getColumnsCount()Возвращает кол-во колонок в таблице- Returns:
- кол-во колонок
-
getColumn
Возвращает колонку по ее индексу- Parameters:
cidx- индекс- Returns:
- колонка
-
addColumn
Добавляет колонку к таблице- Parameters:
dc- колонка
-
removeColumn
Удаляет колонку из таблицы- Parameters:
dc- колонка
-
removeColumnByIndex
public void removeColumnByIndex(int colIdx)Удаляет колонку по ее индексу- Parameters:
colIdx- индекс колонки
-
dropColumns
public void dropColumns()Удаляет все колонки -
getRowsCount
public int getRowsCount()Возвращает кол-во строк в рабочем наборе- Returns:
- кол-во строк в рабочем наборе
-
getRow
Возвращает строку по индексу из рабочего набора- Parameters:
row- индекс строки- Returns:
- строка
-
indexOf
Возвращает индекст строки в таблице- Parameters:
mrow- строка- Returns:
- индекс или -1
-
getRowsIterator
Итератор по рабочему набору строк- Returns:
- итератор
-
getRowsIterable
Итератор по рабочему набору строк- Returns:
- итератор
-
getRowsIterable
Итератор по строкам- Parameters:
states- Указывает по строкам с каким состоянием производить поиск- Returns:
- Итератор
-
rowsList
Возвращает строки ввиде списка- Parameters:
states- строки с указаным состоянием будут возвращены- Returns:
- состояние строк
-
getRowsIterableAll
Возвращает все строки включая удаленные- Returns:
- строки
-
fixed
public void fixed()Зафиксировать все строки.
Строки отмесенные как удаленные, удаляются из этой таблицы. Строки отмеченные как добавленные, переводятся в статус обычных. Строки отмеченные как измененные - переводятся в статус обычных с текущим состоянием данных. -
fixed
Фиксация изменений- Parameters:
row- Строка которую требуется зафиксировать
-
fixed
Фиксация изменений- Parameters:
row- Строка которую требуется зафиксироватьaddEvents- true - добавить события в очередь
-
rollback
public void rollback()Откат изменений таблицы -
rollback
public void rollback(boolean addEvents)Откат изменений таблицы- Parameters:
addEvents- Добавлять события в очередь
-
rollback
Откат изменений строки- Parameters:
row- Строка
-
rollback
Откат изменений строки- Parameters:
row- СтрокаaddEvents- Добавлять события в очередь
-
drop
public void drop()Удаление всех данны, включая изменения и удаление структуры -
isDeleted
Возвращает true если строка отмечена как удаленная- Parameters:
row- строка- Returns:
- true - отмечена под удаление
-
isInserted
Возвращает true если строка отмечена как новая (inserted)- Parameters:
row- стока- Returns:
- true - строка добавлена но не фиксирована
-
isUpdated
Возвращает true если строка быда обновлена, но не фиксированна- Parameters:
row- строка- Returns:
- true - строка была обновлена, но не фиксированна
-
stateOf
Возвращает состояние строки- Parameters:
row- строка- Returns:
- состояние строки
-
insert
Производит вставку строки- Parameters:
values- значния- Returns:
- интерфейс вставки
-
insert
Производит вставку строки- Parameters:
row- строка
-
delete
Удаляет строку- Parameters:
row- строка
-