AuthorizeManager.authorizeAction(ourContext, this, Constants.DELETE);
    void delete()        throws SQLException, AuthorizeException, IOException    {        // Check authorisation        AuthorizeManager.authorizeAction(ourContext, this, Constants.DELETE);        HistoryManager.saveHistory(ourContext,            this,            HistoryManager.REMOVE,            ourContext.getCurrentUser(),            ourContext.getExtraLogInfo());        log.info(LogManager.getHeader(ourContext,            "delete_item",            "item_id=" + getID()));        // Remove from cache        ourContext.removeCached(this, getID());        // Remove from indices, if appropriate        if (isArchived())        {            // Remove from Browse indices            Browse.itemRemoved(ourContext, getID());            // FIXME: Remove from search index        }        // Delete the Dublin Core        removeDCFromDatabase();        // Remove bundles        Bundle[] bundles = getBundles();        for (int i = 0; i < bundles.length; i++)        {            removeBundle(bundles[i]);        }        // and all of our authorization policies        // FIXME: not very "multiple-inclusion" friendly        AuthorizeManager.removeAllPolicies(ourContext, this);        // Remove any Handle        // FIXME: This is sort of a "tentacle" - HandleManager should provide        // a way of doing this.  Plus, deleting a Handle may have ramifications        // that need considering.        DatabaseManager.updateQuery(ourContext,            "DELETE FROM handle WHERE resource_type_id=" +                Constants.ITEM + " AND resource_id=" + getID());        // Finally remove item row        DatabaseManager.delete(ourContext, itemRow);            }