Class MapValueCollectionStore<V>

All Implemented Interfaces:
org.datanucleus.store.types.scostore.CollectionStore<V>, org.datanucleus.store.types.scostore.Store

class MapValueCollectionStore<V> extends AbstractCollectionStore<V>
RDBMS-specific implementation of a CollectionStore for map values.
  • Field Details

    • mapStore

      protected final org.datanucleus.store.types.scostore.MapStore<?,V> mapStore
    • keyMapping

      protected final JavaTypeMapping keyMapping
    • findKeyStmt

      private String findKeyStmt
    • iteratorStmtLocked

      private String iteratorStmtLocked
      JDBC statement to use for retrieving keys of the map (locking).
    • iteratorStmtUnlocked

      private String iteratorStmtUnlocked
      JDBC statement to use for retrieving keys of the map (not locking).
    • iteratorMappingDef

      private StatementClassMapping iteratorMappingDef
    • iteratorMappingParams

      private StatementParameterMapping 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 map
      mapStore - Backing store for the map
      clr - 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 map
      clr - ClassLoader resolver
  • Method Details

    • initialize

      private void initialize(org.datanucleus.ClassLoaderResolver clr)
      Initialise Method.
      Parameters:
      clr - ClassLoader resolver
    • add

      public boolean add(org.datanucleus.state.DNStateManager sm, V value, int size)
    • 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

      public boolean removeAll(org.datanucleus.state.DNStateManager sm, Collection values, int size)
    • 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 interface org.datanucleus.store.types.scostore.CollectionStore<V>
      Overrides:
      clear in class ElementContainerStore
      Parameters:
      sm - StateManager for the container.
    • remove

      protected boolean remove(org.datanucleus.state.DNStateManager sm, Object value)
    • getFindKeyStmt

      private String 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

      public Iterator<V> iterator(org.datanucleus.state.DNStateManager ownerSM)
      Accessor for an iterator for the set.
      Specified by:
      iterator in interface org.datanucleus.store.types.scostore.CollectionStore<V>
      Specified by:
      iterator in class ElementContainerStore
      Parameters:
      ownerSM - StateManager for the set.
      Returns:
      Iterator for the set.
    • getSQLStatementForIterator

      protected SelectStatement getSQLStatementForIterator(org.datanucleus.state.DNStateManager ownerSM)
      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