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 Detail

      • mapStore

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

        private java.lang.String findKeyStmt
      • iteratorStmtLocked

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

        private java.lang.String iteratorStmtUnlocked
        JDBC statement to use for retrieving keys of the map (not locking).
    • Constructor Detail

      • 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 Detail

      • 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,
                              java.util.Collection<? extends V> values,
                              int size)
      • remove

        public boolean remove​(org.datanucleus.state.DNStateManager sm,
                              java.lang.Object value,
                              int size,
                              boolean allowDependentField)
      • removeAll

        public boolean removeAll​(org.datanucleus.state.DNStateManager sm,
                                 java.util.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,
                                 java.lang.Object value)
      • getFindKeyStmt

        private java.lang.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 java.util.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