Class MemConnection

    • Constructor Detail

      • MemConnection

        public MemConnection​(MemRepository repository)
    • Method Detail

      • initRepository

        protected void initRepository()
      • close

        public void close()
        Description copied from interface: DBSConnection
        Closes this connection.
      • generateNewId

        public String generateNewId()
        Description copied from interface: DBSConnection
        Generates a new id for a document.
        Returns:
        the new id
      • readState

        public State readState​(String id)
        Description copied from interface: DBSConnection
        Reads the state of a document.
        Parameters:
        id - the document id
        Returns:
        the document state, or null if not found
      • readPartialState

        public State readPartialState​(String id,
                                      Collection<String> keys)
        Description copied from interface: DBSConnection
        Reads the partial state of a document.
        Parameters:
        id - the document id
        keys - the keys to read
        Returns:
        the document partial state, or null if not found
      • readStates

        public List<State> readStates​(List<String> ids)
        Description copied from interface: DBSConnection
        Reads the states of several documents.

        The returned states may be in a different order than the ids.

        Parameters:
        ids - the document ids
        Returns:
        the document states, an element by be null if not found
      • createState

        public void createState​(State state)
        Description copied from interface: DBSConnection
        Creates a document.
        Parameters:
        state - the document state
      • deleteStates

        public void deleteStates​(Set<String> ids)
        Description copied from interface: DBSConnection
        Deletes a set of document.
        Parameters:
        ids - the document ids
      • readChildState

        public State readChildState​(String parentId,
                                    String name,
                                    Set<String> ignored)
        Description copied from interface: DBSConnection
        Reads the state of a child document.
        Parameters:
        parentId - the parent document id
        name - the name of the child
        ignored - a set of document ids that should not be considered
        Returns:
        the state of the child document, or null if not found
      • hasChild

        public boolean hasChild​(String parentId,
                                String name,
                                Set<String> ignored)
        Description copied from interface: DBSConnection
        Checks if a document has a child with the given name
        Parameters:
        parentId - the parent document id
        name - the name of the child
        ignored - a set of document ids that should not be considered
        Returns:
        true if the child exists, false if not
      • queryKeyValue

        public List<State> queryKeyValue​(String key,
                                         Object value,
                                         Set<String> ignored)
        Description copied from interface: DBSConnection
        Queries the repository for documents having key = value.
        Parameters:
        key - the key
        value - the value
        ignored - a set of document ids that should not be considered
        Returns:
        the document states matching the query
      • queryKeyValue

        public List<State> queryKeyValue​(String key1,
                                         Object value1,
                                         String key2,
                                         Object value2,
                                         Set<String> ignored)
        Description copied from interface: DBSConnection
        Queries the repository for documents having key1 = value1 and key2 = value2.
        Parameters:
        key1 - the first key
        value1 - the first value
        key2 - the second key
        value2 - the second value
        ignored - a set of document ids that should not be considered
        Returns:
        the document states matching the query
      • getDescendants

        public Stream<State> getDescendants​(String rootId,
                                            Set<String> keys)
        Description copied from interface: DBSConnection
        Returns a stream of descendants from a given root document, in no particular order. This does not include information about the root document itself.

        THE STREAM MUST BE CLOSED WHEN DONE to release resources.

        Parameters:
        rootId - the root document id
        keys - what to collect about the descendants in addition to their ids
        Returns:
        a stream of States; THE STREAM MUST BE CLOSED WHEN DONE
      • getDescendants

        public Stream<State> getDescendants​(String rootId,
                                            Set<String> keys,
                                            int limit)
        Description copied from interface: DBSConnection
        Returns a stream of descendants from a given root document, in no particular order. This does not include information about the root document itself.

        THE STREAM MUST BE CLOSED WHEN DONE to release resources.

        Parameters:
        rootId - the root document id
        keys - what to collect about the descendants in addition to their ids
        limit - the maximum number of descendants to return
        Returns:
        a stream of States; THE STREAM MUST BE CLOSED WHEN DONE
      • hasAncestor

        protected static boolean hasAncestor​(State state,
                                             String id)
      • queryKeyValuePresence

        public boolean queryKeyValuePresence​(String key,
                                             String value,
                                             Set<String> ignored)
        Description copied from interface: DBSConnection
        Queries the repository to check if there are documents having key = value.
        Parameters:
        key - the key
        value - the value
        ignored - a set of document ids that should not be considered
        Returns:
        true if the query matches at least one document, false if the query matches nothing
      • queryAndFetch

        public PartialList<Map<String,​Serializable>> queryAndFetch​(DBSExpressionEvaluator evaluator,
                                                                         OrderByClause orderByClause,
                                                                         boolean distinctDocuments,
                                                                         int limit,
                                                                         int offset,
                                                                         int countUpTo)
        Description copied from interface: DBSConnection
        Queries the repository for documents matching a NXQL query, and returns a projection of the documents.
        Parameters:
        evaluator - the map-based evaluator for the query
        orderByClause - an ORDER BY clause
        distinctDocuments - true if the projection should return a maximum of one row per document
        limit - the limit on the number of documents to return
        offset - the offset in the list of documents to return
        countUpTo - if -1, count the total size without offset/limit.
        If 0, don't count the total size, set it to -1 .
        If n, count the total number if there are less than n documents otherwise set the total size to -2.
        Returns:
        a partial list of maps containing the NXQL projections requested, and the total size according to countUpTo
      • scroll

        public ScrollResult<String> scroll​(DBSExpressionEvaluator evaluator,
                                           int batchSize,
                                           int keepAliveSeconds)
        Description copied from interface: DBSConnection
        Executes the given query and returns the first batch of results containing id of documents, next batch must be requested within the keepAliveSeconds delay.
      • applyDiff

        protected static void applyDiff​(State state,
                                        String key,
                                        Serializable value)
        Applies a key/value diff in-place onto a base State.

        Uses thread-safe datastructures.

      • getLock

        public Lock getLock​(String id)
        Description copied from interface: LockManager
        Gets the lock on a document.

        If the document does not exist, null is returned.

        Parameters:
        id - the document id
        Returns:
        the existing lock, or null when there is no lock
      • setLock

        public Lock setLock​(String id,
                            Lock lock)
        Description copied from interface: LockManager
        Sets a lock on a document.

        If the document is already locked, returns its existing lock status (there is no re-locking, LockManager.removeLock(java.lang.String, java.lang.String) must be called first).

        Parameters:
        id - the document id
        lock - the lock to set
        Returns:
        null if locking succeeded, or the existing lock if locking failed
      • removeLock

        public Lock removeLock​(String id,
                               String owner)
        Description copied from interface: LockManager
        Removes the lock from a document.

        The previous lock is returned.

        If owner is null then the lock is unconditionally removed.

        If owner is not null, it must match the existing lock owner for the lock to be removed. If it doesn't match, the returned lock will return true for Lock.getFailed().

        Parameters:
        id - the document id
        owner - the owner to check, or null for no check
        Returns:
        the previous lock (may be null), with a failed flag if locking failed
      • queryKeyValueWithOperator

        public List<State> queryKeyValueWithOperator​(String key1,
                                                     Object value1,
                                                     String key2,
                                                     DBSConnection.DBSQueryOperator operator,
                                                     Object value2,
                                                     Set<String> ignored)
        Description copied from interface: DBSConnection
        Queries the repository for documents having key1 = value1 and key2 ${operator} value2.
        Parameters:
        key1 - the first key
        value1 - the first value
        key2 - the second key
        operator - the operator to apply between key2 and value2
        value2 - the second value
        ignored - a set of document ids that should not be considered
        Returns:
        the document states matching the query