public abstract class SnapshotJObjectContainer extends ReloadableJObjectContainer
JObjectContainer
for use with key/value stores that implement
KVTransaction.mutableSnapshot()
.
This container is loaded by taking a key/value store snapshot and then iterating the desired backing objects
directly via iterateObjects()
; no copying of objects is required.
Instances are (re)loaded at any time by invoking reload()
. During reload, the container opens a JTransaction
and then creates a SnapshotJTransaction
using the CloseableKVStore
returned by
KVTransaction.mutableSnapshot()
.
This SnapshotJTransaction
is set as the current transaction while iterateObjects()
returns the JObject
s to be actually included in the container. The CloseableKVStore
will
remain open until the container is reload()
'ed or disconnect()
'ed.
JObjectContainer.ObjFieldPropertyDef, JObjectContainer.ObjIdPropertyDef, JObjectContainer.ObjPropertyDef<T>, JObjectContainer.ObjTypePropertyDef, JObjectContainer.ObjVersionPropertyDef, JObjectContainer.RefLabelPropertyDef
AbstractInMemoryContainer.BaseItemAddEvent, AbstractInMemoryContainer.BaseItemRemoveEvent
AbstractContainer.BaseItemSetChangeEvent, AbstractContainer.BasePropertySetChangeEvent
Container.Editor, Container.Filter, Container.Filterable, Container.Hierarchical, Container.Indexed, Container.ItemSetChangeEvent, Container.ItemSetChangeListener, Container.ItemSetChangeNotifier, Container.Ordered, Container.PropertySetChangeEvent, Container.PropertySetChangeListener, Container.PropertySetChangeNotifier, Container.SimpleFilterable, Container.Sortable, Container.Viewer
Container.Indexed.ItemAddEvent, Container.Indexed.ItemRemoveEvent
jdb, log, OBJECT_ID_PROPERTY, REFERENCE_LABEL_PROPERTY, TYPE_PROPERTY, VERSION_PROPERTY
Modifier | Constructor and Description |
---|---|
protected |
SnapshotJObjectContainer(Permazen jdb,
Class<?> type)
Constructor.
|
Modifier and Type | Method and Description |
---|---|
void |
disconnect() |
protected abstract Iterator<? extends JObject> |
iterateObjects()
Iterate the database objects that will be used to fill this container.
|
void |
reload()
(Re)load this container.
|
connect, reloadAfterCommit
canSort, doInTransaction, getKeyFor, getOrderedPropertyNames, getPropertyValue, getType, load, load, setType, sort, updateItem
generateItemId, getItemIdFor, getItemIdForSame, getJavaObject, resetItemIds
addContainerFilter, addContainerFilter, afterReload, createBackedItem, getContainerFilters, getContainerProperty, getContainerPropertyIds, getItemIds, getPropertyExtractor, getSortableContainerPropertyIds, getType, getUnfilteredItem, internalRemoveAllItems, removeAllContainerFilters, removeContainerFilter, removeContainerFilters, setProperties, setProperty, setPropertyExtractor, sort
addContainerProperty, addFilter, addItem, addItem, addItemAfter, addItemAfter, addItemAt, addItemAt, addItemSetChangeListener, addListener, containsId, doFilterContainer, doSort, filterAll, fireItemAdded, fireItemRemoved, fireItemsAdded, fireItemsRemoved, firstItemId, getAllItemIds, getFilteredItemIds, getFilters, getFirstVisibleItem, getIdByIndex, getItem, getItemIds, getItemSorter, getSortablePropertyIds, getVisibleItemIds, hasContainerFilters, indexOfId, internalAddItemAfter, internalAddItemAt, internalAddItemAtEnd, internalRemoveItem, isFiltered, isFirstId, isLastId, isPropertyFiltered, lastItemId, nextItemId, passesFilters, prevItemId, registerNewItem, removeAllFilters, removeAllItems, removeContainerProperty, removeFilter, removeFilters, removeItem, removeItemSetChangeListener, removeListener, setAllItemIds, setFilteredItemIds, setFilters, setItemSorter, size, sortContainer
addListener, addPropertySetChangeListener, fireContainerPropertySetChange, fireContainerPropertySetChange, fireItemSetChange, fireItemSetChange, getItemSetChangeListeners, getListeners, getPropertySetChangeListeners, removeListener, removePropertySetChangeListener, setItemSetChangeListeners, setPropertySetChangeListeners
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
addItemAfter, addItemAfter, firstItemId, isFirstId, isLastId, lastItemId, nextItemId, prevItemId
addContainerProperty, addItem, addItem, containsId, getItem, removeAllItems, removeContainerProperty, removeItem, size
protected SnapshotJObjectContainer(Permazen jdb, Class<?> type)
jdb
- Permazen
databasetype
- type restriction, or null for no restrictionIllegalArgumentException
- if jdb
is nullpublic void disconnect()
disconnect
in interface org.dellroad.stuff.vaadin7.Connectable
disconnect
in class ReloadableJObjectContainer
public void reload()
This method opens a JTransaction
, creates a SnapshotJTransaction
using the CloseableKVStore
returned by KVTransaction.mutableSnapshot()
, and loads
the container using the objects returned by iterateObjects()
.
reload
in class ReloadableJObjectContainer
protected abstract Iterator<? extends JObject> iterateObjects()
A JTransaction
will be open in the current thread when this method is invoked.
Copyright © 2019. All rights reserved.