001/**
002 * The contents of this file are subject to the license and copyright
003 * detailed in the LICENSE and NOTICE files at the root of the source
004 * tree.
005 *
006 */
007package org.fcrepo.migration;
008
009/**
010 * An interface defining access to information about a fedora datastream.
011 * @author mdurbin
012 */
013public interface DatastreamInfo {
014
015    /**
016     * Gets the information about the object to which this datastream
017     * belongs.
018     *
019     * @return {@link org.fcrepo.migration.ObjectInfo}
020     */
021    public ObjectInfo getObjectInfo();
022
023    /**
024     * Gets the identifier for this datastream (Unique within an object).
025     *
026     * @return datastream id
027     */
028    public String getDatastreamId();
029
030    /**
031     * Gets the control group for this datastream.  This is expected to be
032     * "M", "X", "R" or "E".
033     *
034     * @return control group
035     */
036    public String getControlGroup();
037
038    /**
039     * Gets the fedora URI for this datastream.
040     *
041     * @return Fedora URI
042     */
043    public String getFedoraURI();
044
045    /**
046     * Gets the state for this datastream.  This is expected to be "A", "I" or
047     * "D".
048     *
049     * @return  state
050     */
051    public String getState();
052
053    /**
054     * Returns true if this datastream was/is versionable.
055     *
056     * @return true if versionable
057     */
058    public boolean getVersionable();
059}