Class MapValueCollectionStore<V>
java.lang.Object
org.datanucleus.store.rdbms.scostore.BaseContainerStore
org.datanucleus.store.rdbms.scostore.ElementContainerStore
org.datanucleus.store.rdbms.scostore.AbstractCollectionStore<V>
org.datanucleus.store.rdbms.scostore.MapValueCollectionStore<V>
- All Implemented Interfaces:
org.datanucleus.store.types.scostore.CollectionStore<V>, org.datanucleus.store.types.scostore.Store
RDBMS-specific implementation of a CollectionStore for map values.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate Stringprivate StatementClassMappingprivate StatementParameterMappingprivate StringJDBC statement to use for retrieving keys of the map (locking).private StringJDBC statement to use for retrieving keys of the map (not locking).protected final JavaTypeMappingprotected final org.datanucleus.store.types.scostore.MapStore<?, V> Fields inherited from class AbstractCollectionStore
containsStmtFields inherited from class ElementContainerStore
addStmt, clearStmt, containerTable, elementCmd, elementInfo, elementIsPersistentInterface, elementMapping, elementsAreEmbedded, elementsAreSerialised, elementType, iterateUsingDiscriminator, orderMapping, relationDiscriminatorMapping, relationDiscriminatorValue, removeStmt, sizeStmtFields inherited from class BaseContainerStore
allowNulls, clr, dba, ownerMapping, ownerMemberMetaData, relationType, storeMgr -
Constructor Summary
ConstructorsConstructorDescriptionMapValueCollectionStore(DatastoreClass mapTable, FKMapStore<?, V> mapStore, org.datanucleus.ClassLoaderResolver clr) Constructor when we have the key stored as an FK in the value, or the value stored as an FK in the key.MapValueCollectionStore(MapTable mapTable, JoinMapStore<?, V> mapStore, org.datanucleus.ClassLoaderResolver clr) Constructor where a join table is used to store the map relation. -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanaddAll(org.datanucleus.state.DNStateManager sm, Collection<? extends V> values, int size) voidclear(org.datanucleus.state.DNStateManager sm) Clear the association from owner to all elements.private StringGenerate statement to find the first key for a value in the Map.protected SelectStatementgetSQLStatementForIterator(org.datanucleus.state.DNStateManager ownerSM) Method to generate an SQLStatement for iterating through values of the map.private voidinitialize(org.datanucleus.ClassLoaderResolver clr) Initialise Method.iterator(org.datanucleus.state.DNStateManager ownerSM) Accessor for an iterator for the set.protected booleanbooleanremove(org.datanucleus.state.DNStateManager sm, Object value, int size, boolean allowDependentField) booleanremoveAll(org.datanucleus.state.DNStateManager sm, Collection values, int size) Methods inherited from class AbstractCollectionStore
contains, getRemoveStmt, getUpdateEmbeddedElementStmt, update, updateEmbeddedElementMethods inherited from class ElementContainerStore
getAddStmtForJoinTable, getClearStmt, getComponentInfoForElement, getContainerTable, getElementClassMetaData, getElementMapping, getRelationDiscriminatorMapping, getRelationDiscriminatorValue, getSize, getSizeStmt, hasOrderMapping, invalidateAddStmt, isElementsAreEmbedded, isElementsAreSerialised, size, usingJoinTable, validateElementForReading, validateElementForWriting, validateElementTypeMethods inherited from class BaseContainerStore
allowsBatching, getComponentInformationForClass, getDatastoreAdapter, getOwnerMapping, getOwnerMemberMetaData, getRelationType, getStateManagerForEmbeddedPCObject, getStoreManager, isEmbeddedMapping, setOwnerMethods inherited from class Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.datanucleus.store.types.scostore.CollectionStore
hasOrderMapping, sizeMethods inherited from interface org.datanucleus.store.types.scostore.Store
getOwnerMemberMetaData, getStoreManager
-
Field Details
-
mapStore
-
keyMapping
-
findKeyStmt
-
iteratorStmtLocked
JDBC statement to use for retrieving keys of the map (locking). -
iteratorStmtUnlocked
JDBC statement to use for retrieving keys of the map (not locking). -
iteratorMappingDef
-
iteratorMappingParams
-
-
Constructor Details
-
MapValueCollectionStore
MapValueCollectionStore(MapTable mapTable, JoinMapStore<?, V> mapStore, org.datanucleus.ClassLoaderResolver clr) Constructor where a join table is used to store the map relation.- Parameters:
mapTable- Join table used by the mapmapStore- Backing store for the mapclr- The ClassLoaderResolver
-
MapValueCollectionStore
MapValueCollectionStore(DatastoreClass mapTable, FKMapStore<?, V> mapStore, org.datanucleus.ClassLoaderResolver clr) Constructor when we have the key stored as an FK in the value, or the value stored as an FK in the key.- Parameters:
mapTable- Table handling the map relation (can be key table or value table)mapStore- Backing store for the mapclr- ClassLoader resolver
-
-
Method Details
-
initialize
private void initialize(org.datanucleus.ClassLoaderResolver clr) Initialise Method.- Parameters:
clr- ClassLoader resolver
-
add
-
addAll
public boolean addAll(org.datanucleus.state.DNStateManager sm, Collection<? extends V> values, int size) -
remove
public boolean remove(org.datanucleus.state.DNStateManager sm, Object value, int size, boolean allowDependentField) -
removeAll
-
clear
public void clear(org.datanucleus.state.DNStateManager sm) Description copied from class:ElementContainerStoreClear the association from owner to all elements. Provides cascade-delete when the elements being deleted are PC types.- Specified by:
clearin interfaceorg.datanucleus.store.types.scostore.CollectionStore<V>- Overrides:
clearin classElementContainerStore- Parameters:
sm- StateManager for the container.
-
remove
-
getFindKeyStmt
Generate statement to find the first key for a value in the Map.SELECT KEYCOL FROM SETTABLE WHERE OWNERCOL=? AND ELEMENTCOL = ?
- Returns:
- Statement to find keys in the Map.
-
iterator
Accessor for an iterator for the set.- Specified by:
iteratorin interfaceorg.datanucleus.store.types.scostore.CollectionStore<V>- Specified by:
iteratorin classElementContainerStore- Parameters:
ownerSM- StateManager for the set.- Returns:
- Iterator for the set.
-
getSQLStatementForIterator
Method to generate an SQLStatement for iterating through values of the map. Populates the iteratorMappingDef and iteratorMappingParams. Creates a statement that selects the value table(s), and adds any necessary join to the containerTable if that is not the value table. If the value is embedded then selects the table it is embedded in. Adds a restriction on the ownerMapping of the containerTable so we can restrict to the owner object.- Parameters:
ownerSM- StateManager for the owner object- Returns:
- The SQLStatement
-