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
009import java.util.List;
010
011/**
012 * A reference to a Fedora 3 object.  Through the methods, all metadata and datastream
013 * content is available.
014 * @author mdurbin
015 */
016public interface ObjectReference {
017
018    /**
019     * @return all the basic object information.
020     */
021    public ObjectInfo getObjectInfo();
022
023    /**
024     * @return all the object properties.
025     */
026    public ObjectProperties getObjectProperties();
027
028    /**
029     * Lists all datastream ids.
030     * @return all datastream ids
031     */
032    public List<String> listDatastreamIds();
033
034    /**
035     * Gets all versions of the datastream with the given id, from oldest to newest.
036     * @param datastreamId the id (a value returned from listDatastreams()) of the
037     *                     datastream whose versions are being requested.
038     * @return a list of datastream versions ordered from oldest to newest.
039     */
040    public List<DatastreamVersion> getDatastreamVersions(String datastreamId);
041}