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 */
006package org.fcrepo.kernel.api.operations;
007
008import java.net.URI;
009import java.util.Collection;
010
011/**
012 * Builder for an operation for interacting with a non-rdf source
013 *
014 * @author bbpennel
015 */
016public interface NonRdfSourceOperationBuilder extends ResourceOperationBuilder {
017
018    /**
019     * Set the mimetype for content in this resource
020     *
021     * @param mimetype the mime-type.
022     * @return the builder.
023     */
024    NonRdfSourceOperationBuilder mimeType(String mimetype);
025
026    /**
027     * Set the filename
028     *
029     * @param filename name of the file.
030     * @return the builder.
031     */
032    NonRdfSourceOperationBuilder filename(String filename);
033
034    /**
035     * Collection of digests for content in this resource
036     *
037     * @param digests collection of digests
038     * @return the builder.
039     */
040    NonRdfSourceOperationBuilder contentDigests(Collection<URI> digests);
041
042    /**
043     * Set the number of bytes for the content
044     *
045     * @param size size of the content in bytes
046     * @return the builder
047     */
048    NonRdfSourceOperationBuilder contentSize(long size);
049
050    @Override
051    NonRdfSourceOperationBuilder userPrincipal(String userPrincipal);
052
053    @Override
054    NonRdfSourceOperation build();
055}