Interface ObjectDetailsDatabase

All Known Implementing Classes:
BaseObjectDetailsDatabase, H2ObjectDetailsDatabase, MariaDbObjectDetailsDatabase, PostgresObjectDetailsDatabase

public interface ObjectDetailsDatabase
Interface for interacting with OCFL object details that are stored in a database.
  • Method Details

    • retrieveObjectDetails

      OcflObjectDetails retrieveObjectDetails(String objectId)
      Retrieves ObjectDetails from the database. If no details can be found, null is returned.
      Parameters:
      objectId - the OCFL object id
      Returns:
      ObjectDetails or null
    • addObjectDetails

      void addObjectDetails(Inventory inventory, String inventoryDigest, byte[] inventoryBytes)
      Adds ObjectDetails to the database. In the case of a concurrent update, this operation will only fail if the inventory digests are different.
      Parameters:
      inventory - the object's inventory
      inventoryDigest - the digest of the inventory
      inventoryBytes - the serialized inventory bytes
    • updateObjectDetails

      void updateObjectDetails(Inventory inventory, String inventoryDigest, Path inventoryFile, Runnable runnable)
      Updates existing ObjectDetails in the database. The update is executed within a transaction. Before the transaction is committed, the supplied runnable is executed. The transaction is only committed if the runnable completes without exception.
      Parameters:
      inventory - the object's inventory
      inventoryDigest - the digest of the inventory
      inventoryFile - the path to the inventory on disk
      runnable - the code to execute within the update transaction
    • deleteObjectDetails

      void deleteObjectDetails(String objectId)
      Removes ObjectDetails from the database.
      Parameters:
      objectId - the OCFL object id
    • deleteAllDetails

      void deleteAllDetails()
      Removes all ObjectDetails from the database