Class BaseObjectDetailsDatabase

    • Constructor Detail

      • BaseObjectDetailsDatabase

        public BaseObjectDetailsDatabase​(String tableName,
                                         DataSource dataSource,
                                         boolean storeInventory,
                                         long waitTime,
                                         TimeUnit timeUnit,
                                         String lockFailCode,
                                         String duplicateKeyCode)
    • Method Detail

      • setLockWaitTimeout

        protected abstract void setLockWaitTimeout​(Connection connection,
                                                   long waitMillis)
                                            throws SQLException
        Sets the amount of time to wait for a row lock before timing out.
        Parameters:
        connection - db connection
        waitMillis - time to wait for the lock in millis
        Throws:
        SQLException - on sql error
      • retrieveObjectDetails

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

        public 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.
        Specified by:
        addObjectDetails in interface ObjectDetailsDatabase
        Parameters:
        inventory - the object's inventory
        inventoryDigest - the digest of the inventory
        inventoryBytes - the serialized inventory bytes
      • updateObjectDetails

        public 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.
        Specified by:
        updateObjectDetails in interface ObjectDetailsDatabase
        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

        public void deleteObjectDetails​(String objectId)
        Removes ObjectDetails from the database.
        Specified by:
        deleteObjectDetails in interface ObjectDetailsDatabase
        Parameters:
        objectId - the OCFL object id