Package com.sleepycat.collections

## Class StoredContainer

- java.lang.Object
- - com.sleepycat.collections.StoredContainer

- All Implemented Interfaces:
    `java.lang.Cloneable`
  Direct Known Subclasses:
    `StoredCollection`, `StoredMap`

      public abstract class StoredContainer
      extends java.lang.Object
      implements java.lang.Cloneable

  A abstract base class for all stored collections and maps. This class provides implementations of methods that are common to the `Collection` and the `Map` interfaces, namely `clear()`, `isEmpty()` and `size()`.

  In addition, this class provides the following methods for stored collections only. Note that the use of these methods is not compatible with the standard Java collections interface.

  - `isWriteAllowed()`
  - `isSecondary()`
  - `isOrdered()`
  - `areKeyRangesAllowed()`
  - `areDuplicatesAllowed()`
  - `areDuplicatesOrdered()`
  - `areKeysRenumbered()`
  - `getCursorConfig()`
  - `isTransactional()`

- - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `boolean` | `areDuplicatesAllowed()` | Returns whether duplicate keys are allowed in this container.
    `boolean` | `areDuplicatesOrdered()` | Returns whether duplicate keys are allowed and sorted by element value.
    `boolean` | `areKeyRangesAllowed()` | Returns whether key ranges are allowed in this container.
    `boolean` | `areKeysRenumbered()` | Returns whether keys are renumbered when insertions and deletions occur.
    `void` | `clear()` | Removes all mappings or elements from this map or collection (optional operation).
    `CursorConfig` | `getCursorConfig()` | Returns the cursor configuration that is used for all operations performed via this container.
    `boolean` | `isEmpty()` | Returns true if this map or collection contains no mappings or elements.
    `boolean` | `isOrdered()` | Returns whether keys are ordered in this container.
    `boolean` | `isSecondary()` | Returns whether this container is a view on a secondary database rather than directly on a primary database.
    `boolean` | `isTransactional()` | Returns whether the databases underlying this container are transactional.
    `boolean` | `isWriteAllowed()` | Returns true if this is a read-write container or false if this is a read-only container.
    `abstract int` | `size()` | Returns a non-transactional count of the records in the collection or map.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Method Detail

    - #### isWriteAllowed

          public final boolean isWriteAllowed()

      Returns true if this is a read-write container or false if this is a read-only container. This method does not exist in the standard `Map` or `Collection` interfaces.
      Returns:
        whether write is allowed.

    - #### getCursorConfig

          public final CursorConfig getCursorConfig()

      Returns the cursor configuration that is used for all operations performed via this container. For example, if `CursorConfig.getReadUncommitted` returns true, data will be read that is modified but not committed. This method does not exist in the standard `Map` or `Collection` interfaces.
      Returns:
        the cursor configuration, or null if no configuration has been specified.

    - #### isTransactional

          public final boolean isTransactional()

      Returns whether the databases underlying this container are transactional. Even in a transactional environment, a database will be transactional only if it was opened within a transaction or if the auto-commit option was specified when it was opened. This method does not exist in the standard `Map` or `Collection` interfaces.
      Returns:
        whether the database is transactional.

    - #### areDuplicatesAllowed

          public final boolean areDuplicatesAllowed()

      Returns whether duplicate keys are allowed in this container. Duplicates are optionally allowed for HASH and BTREE databases. This method does not exist in the standard `Map` or `Collection` interfaces.

      Note that the JE product only supports BTREE databases.

      Returns:
        whether duplicates are allowed.

    - #### areDuplicatesOrdered

          public final boolean areDuplicatesOrdered()

      Returns whether duplicate keys are allowed and sorted by element value. Duplicates are optionally sorted for HASH and BTREE databases. This method does not exist in the standard `Map` or `Collection` interfaces.

      Note that the JE product only supports BTREE databases, and duplicates are always sorted.

      Returns:
        whether duplicates are ordered.

    - #### areKeysRenumbered

          public final boolean areKeysRenumbered()

      Returns whether keys are renumbered when insertions and deletions occur. Keys are optionally renumbered for RECNO databases. This method does not exist in the standard `Map` or `Collection` interfaces.

      Note that the JE product does not support RECNO databases, and therefore keys are never renumbered.

      Returns:
        whether keys are renumbered.

    - #### isOrdered

          public final boolean isOrdered()

      Returns whether keys are ordered in this container. Keys are ordered for BTREE, RECNO and QUEUE databases. This method does not exist in the standard `Map` or `Collection` interfaces.

      Note that the JE product only support BTREE databases, and therefore keys are always ordered.

      Returns:
        whether keys are ordered.

    - #### areKeyRangesAllowed

          public final boolean areKeyRangesAllowed()

      Returns whether key ranges are allowed in this container. Key ranges are allowed only for BTREE databases. This method does not exist in the standard `Map` or `Collection` interfaces.

      Note that the JE product only supports BTREE databases, and therefore key ranges are always allowed.

      Returns:
        whether keys are ordered.

    - #### isSecondary

          public final boolean isSecondary()

      Returns whether this container is a view on a secondary database rather than directly on a primary database. This method does not exist in the standard `Map` or `Collection` interfaces.
      Returns:
        whether the view is for a secondary database.

    - #### size

          public abstract int size()

      Returns a non-transactional count of the records in the collection or map. This method conforms to the `Collection.size()` and `Map.size()` interfaces.
      Returns:
        the number of records.
      Throws:
        `RuntimeExceptionWrapper` - if a checked exception is thrown, including a `DatabaseException` on BDB (C edition).

    - #### isEmpty

          public boolean isEmpty()

      Returns true if this map or collection contains no mappings or elements. This method conforms to the `Collection.isEmpty()` and `Map.isEmpty()` interfaces.
      Returns:
        whether the container is empty.
      Throws:
        `RuntimeExceptionWrapper` - if a checked exception is thrown, including a `DatabaseException` on BDB (C edition).

    - #### clear

          public void clear()

      Removes all mappings or elements from this map or collection (optional operation). This method conforms to the `Collection.clear()` and `Map.clear()` interfaces.
      Throws:
        `java.lang.UnsupportedOperationException` - if the container is read-only.
        `RuntimeExceptionWrapper` - if a checked exception is thrown, including a `DatabaseException` on BDB (C edition).

Copyright (c) 1996, 2020 Oracle and/or its affiliates. All rights reserved.