001/*
002 * Licensed to DuraSpace under one or more contributor license agreements.
003 * See the NOTICE file distributed with this work for additional information
004 * regarding copyright ownership.
005 *
006 * DuraSpace licenses this file to you under the Apache License,
007 * Version 2.0 (the "License"); you may not use this file except in
008 * compliance with the License.  You may obtain a copy of the License at
009 *
010 *     http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018package org.fcrepo.kernel.api.operations;
019
020import java.io.InputStream;
021import java.net.URI;
022import java.util.Collection;
023
024/**
025 * An operation for interacting with a non-RDF source resource.
026 *
027 * @author bbpennel
028 */
029public interface NonRdfSourceOperation extends ResourceOperation {
030
031    /**
032     * @return the content stream for a local binary
033     */
034    InputStream getContentStream();
035
036    /**
037     * @return the handling method for external content in this resource
038     */
039    String getExternalHandling();
040
041    /**
042     * @return the URI for external content in this resource
043     */
044    URI getContentUri();
045
046    /**
047     * @return The MimeType of content associated with this resource.
048     */
049    String getMimeType();
050
051    /**
052     * Return the file name for the binary content
053     *
054     * @return original file name for the binary content, or the object's id.
055     */
056    String getFilename();
057
058    /**
059     * @return the URIs of digests for the content in this resource
060     */
061    Collection<URI> getContentDigests();
062
063    /**
064     * @return The size in bytes of content associated with this resource.
065     */
066    long getContentSize();
067}