org.dspace.storage.bitstore
Class BitstreamStorageManager

java.lang.Object
  extended by org.dspace.storage.bitstore.BitstreamStorageManager

public class BitstreamStorageManager
extends Object

Stores, retrieves and deletes bitstreams.

Presently, asset stores are specified in dspace.cfg. Since Java does not offer a way of detecting free disk space, the asset store to use for new bitstreams is also specified in a configuration property. The drawbacks to this are that the administrators are responsible for monitoring available space in the asset stores, and DSpace (Tomcat) has to be restarted when the asset store for new ('incoming') bitstreams is changed.

Mods by David Little, UCSD Libraries 12/21/04 to allow the registration of files (bitstreams) into DSpace.

Cleanup integration with checker package by Nate Sarr 2006-01. N.B. The dependency on the checker package isn't ideal - a Listener pattern would be better but was considered overkill for the purposes of integrating the checker. It would be worth re-considering a Listener pattern if another package needs to be notified of BitstreamStorageManager actions.

Version:
$Revision: 4519 $
Author:
Peter Breton, Robert Tansley, David Little, Nathan Sarr

Constructor Summary
BitstreamStorageManager()
           
 
Method Summary
static void cleanup(boolean deleteDbRecords, boolean verbose)
          Clean up the bitstream storage area.
static void delete(Context context, int id)
           Remove a bitstream from the asset store.
static boolean isRegisteredBitstream(String internalId)
          Does the internal_id column in the bitstream row indicate the bitstream is a registered file
static int register(Context context, int assetstore, String bitstreamPath)
          Register a bitstream already in storage.
static InputStream retrieve(Context context, int id)
          Retrieve the bits for the bitstream with ID.
static int store(Context context, InputStream is)
          Store a stream of bits.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

BitstreamStorageManager

public BitstreamStorageManager()
Method Detail

store

public static int store(Context context,
                        InputStream is)
                 throws SQLException,
                        IOException
Store a stream of bits.

If this method returns successfully, the bits have been stored, and RDBMS metadata entries are in place (the context still needs to be completed to finalize the transaction).

If this method returns successfully and the context is aborted, then the bits will be stored in the asset store and the RDBMS metadata entries will exist, but with the deleted flag set.

If this method throws an exception, then any of the following may be true:

Parameters:
context - The current context
is - The stream of bits to store
Returns:
The ID of the stored bitstream
Throws:
IOException - If a problem occurs while storing the bits
SQLException - If a problem occurs accessing the RDBMS

register

public static int register(Context context,
                           int assetstore,
                           String bitstreamPath)
                    throws SQLException,
                           IOException
Register a bitstream already in storage.

Parameters:
context - The current context
assetstore - The assetstore number for the bitstream to be registered
bitstreamPath - The relative path of the bitstream to be registered. The path is relative to the path of ths assetstore.
Returns:
The ID of the registered bitstream
Throws:
SQLException - If a problem occurs accessing the RDBMS
IOException

isRegisteredBitstream

public static boolean isRegisteredBitstream(String internalId)
Does the internal_id column in the bitstream row indicate the bitstream is a registered file

Parameters:
internalId - the value of the internal_id column
Returns:
true if the bitstream is a registered file

retrieve

public static InputStream retrieve(Context context,
                                   int id)
                            throws SQLException,
                                   IOException
Retrieve the bits for the bitstream with ID. If the bitstream does not exist, or is marked deleted, returns null.

Parameters:
context - The current context
id - The ID of the bitstream to retrieve
Returns:
The stream of bits, or null
Throws:
IOException - If a problem occurs while retrieving the bits
SQLException - If a problem occurs accessing the RDBMS

delete

public static void delete(Context context,
                          int id)
                   throws SQLException

Remove a bitstream from the asset store. This method does not delete any bits, but simply marks the bitstreams as deleted (the context still needs to be completed to finalize the transaction).

If the context is aborted, the bitstreams deletion status remains unchanged.

Parameters:
context - The current context
id - The ID of the bitstream to delete
Throws:
SQLException - If a problem occurs accessing the RDBMS

cleanup

public static void cleanup(boolean deleteDbRecords,
                           boolean verbose)
                    throws SQLException,
                           IOException
Clean up the bitstream storage area. This method deletes any bitstreams which are more than 1 hour old and marked deleted. The deletions cannot be undone.

Parameters:
deleteDbRecords - if true deletes the database records otherwise it only deletes the files and directories in the assetstore
Throws:
IOException - If a problem occurs while cleaning up
SQLException - If a problem occurs accessing the RDBMS


Copyright © 2010 DuraSpace. All Rights Reserved.