/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.storage.bitstore; import org.dspace.content.Bitstream; import java.io.IOException; import java.io.InputStream; import java.util.Map; /** * A low-level asset store interface * * @author Richard Rodgers, Peter Dietz */ public interface BitStoreService { /** * Initialize the asset store * * @throws IOException * A general class of exceptions produced by failed or interrupted I/O operations. */ public void init() throws IOException; /** * Return an identifier unique to this asset store instance * * @return a unique ID */ public String generateId(); /** * Retrieve the bits for bitstream * * @param bitstream * DSpace Bitstream object * @throws java.io.IOException * If a problem occurs while retrieving the bits, or if no * asset with ID exists in the store * * @return The stream of bits */ public InputStream get(Bitstream bitstream) throws IOException; /** * Store a stream of bits. * * <p> * If this method returns successfully, the bits have been stored. * If an exception is thrown, the bits have not been stored. * </p> * * @param bitstream * The bitstream object * @param inputStream * The stream of bits * @throws java.io.IOException * If a problem occurs while storing the bits */ public void put(Bitstream bitstream, InputStream inputStream) throws IOException; /** * Obtain technical metadata about an asset in the asset store. * * @param bitstream * The bitstream to describe * @param attrs * A Map whose keys consist of desired metadata fields * * @throws java.io.IOException * If a problem occurs while obtaining metadata * @return attrs * A Map with key/value pairs of desired metadata * If file not found, then return null */ public Map about(Bitstream bitstream, Map attrs) throws IOException; /** * Remove an asset from the asset store. * * @param bitstream * The bitstream of the asset to delete * @throws java.io.IOException * If a problem occurs while removing the asset */ public void remove(Bitstream bitstream) throws IOException; }