Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

The idea behind this class came from the realisation that Item.withdraw() and Item.reinstate() don't really make sense. What I'd much rather do is call (eg) ArchiveManager.withdrawItem(Item item).
I've been thinking that the ArchiveManager could be used for certain maintenance operations as well, such as moving Items between Collections, and maybe acting as a wrapper for the CommunityFiliator.

Code Block
public class ArchiveManager
{
    public static void withdrawItem(Context context, Item item)
    {        // ...      }

    public static void reinstateItem(Context context, Item item)
    {        // ...      }
    public static void moveItem(Context context, Item item, Collection source, Collection dest)
    {        // ...      }
}

...

As suggested by Richard Jones, there probably ought to be a top-level general-purpose DAO interface that has implementations for the various storage mechanisms (GlobalDAOPostgres etc). The idea is to have this top-level object capture any implementation-specific details in a single top-level object, rather than in every Postgres DAO implementation. For example, with the current database "abstraction layer", the top-level implementation of GlobalDAO understands the Context object, whereas a Hibernate implementation would know what a SessionFactory is.

Code Block
public interface GlobalDAO
{
    // The following methods actually currently throw SQLExceptions to
    // keep things simple, but in future SQLExceptions should be
    // eliminated from any code that doesn't directly touch a database.
    public void startTransaction() throws GlobalDAOException;
    public void endTransaction() throws GlobalDAOException;
    public void saveTransaction() throws GlobalDAOException;
    public void abortTransaction();
    public boolean transactionOpen();
    @Deprecated Connection getConnection();
}

org.dspace.storage.dao.GlobalDAOFactory

Super-simple GlobalDAO factory.

org.dspace.storage.dao.GlobalDAOPostgres

Implementation of the GlobalDAO interface for PostgreSQL.

...