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 String
private StatementClassMapping
private StatementParameterMapping
private String
JDBC statement to use for retrieving keys of the map (locking).private String
JDBC statement to use for retrieving keys of the map (not locking).protected final JavaTypeMapping
protected final org.datanucleus.store.types.scostore.MapStore
<?, V> Fields inherited from class org.datanucleus.store.rdbms.scostore.AbstractCollectionStore
containsStmt
Fields inherited from class org.datanucleus.store.rdbms.scostore.ElementContainerStore
addStmt, clearStmt, containerTable, elementCmd, elementInfo, elementIsPersistentInterface, elementMapping, elementsAreEmbedded, elementsAreSerialised, elementType, iterateUsingDiscriminator, orderMapping, relationDiscriminatorMapping, relationDiscriminatorValue, removeStmt, sizeStmt
Fields inherited from class org.datanucleus.store.rdbms.scostore.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 TypeMethodDescriptionboolean
boolean
addAll
(org.datanucleus.state.DNStateManager sm, Collection<? extends V> values, int size) void
clear
(org.datanucleus.state.DNStateManager sm) Clear the association from owner to all elements.private String
Generate statement to find the first key for a value in the Map.protected SelectStatement
getSQLStatementForIterator
(org.datanucleus.state.DNStateManager ownerSM) Method to generate an SQLStatement for iterating through values of the map.private void
initialize
(org.datanucleus.ClassLoaderResolver clr) Initialise Method.iterator
(org.datanucleus.state.DNStateManager ownerSM) Accessor for an iterator for the set.protected boolean
boolean
remove
(org.datanucleus.state.DNStateManager sm, Object value, int size, boolean allowDependentField) boolean
removeAll
(org.datanucleus.state.DNStateManager sm, Collection values, int size) Methods inherited from class org.datanucleus.store.rdbms.scostore.AbstractCollectionStore
contains, getRemoveStmt, getUpdateEmbeddedElementStmt, update, updateEmbeddedElement
Methods inherited from class org.datanucleus.store.rdbms.scostore.ElementContainerStore
getAddStmtForJoinTable, getClearStmt, getComponentInfoForElement, getContainerTable, getElementClassMetaData, getElementMapping, getRelationDiscriminatorMapping, getRelationDiscriminatorValue, getSize, getSizeStmt, hasOrderMapping, invalidateAddStmt, isElementsAreEmbedded, isElementsAreSerialised, size, usingJoinTable, validateElementForReading, validateElementForWriting, validateElementType
Methods inherited from class org.datanucleus.store.rdbms.scostore.BaseContainerStore
allowsBatching, getComponentInformationForClass, getDatastoreAdapter, getOwnerMapping, getOwnerMemberMetaData, getRelationType, getStateManagerForEmbeddedPCObject, getStoreManager, isEmbeddedMapping, setOwner
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.datanucleus.store.types.scostore.CollectionStore
hasOrderMapping, size
Methods 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:ElementContainerStore
Clear the association from owner to all elements. Provides cascade-delete when the elements being deleted are PC types.- Specified by:
clear
in interfaceorg.datanucleus.store.types.scostore.CollectionStore<V>
- Overrides:
clear
in 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:
iterator
in interfaceorg.datanucleus.store.types.scostore.CollectionStore<V>
- Specified by:
iterator
in 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
-