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.impl.operations;
019
020import org.fcrepo.kernel.api.identifiers.FedoraId;
021
022import java.io.InputStream;
023import java.net.URI;
024
025/**
026 * Builder for operations to update non-rdf sources
027 *
028 * @author bbpennel
029 */
030public class UpdateNonRdfSourceOperationBuilder extends AbstractNonRdfSourceOperationBuilder {
031    protected UpdateNonRdfSourceOperationBuilder(final FedoraId rescId, final InputStream stream) {
032        super(rescId, stream);
033    }
034
035    protected UpdateNonRdfSourceOperationBuilder(final FedoraId rescId, final String handling, final URI contentUri) {
036        super(rescId, handling, contentUri);
037    }
038
039    @Override
040    public UpdateNonRdfSourceOperation build() {
041        final UpdateNonRdfSourceOperation operation;
042        if (externalURI != null && externalType != null) {
043            operation = new UpdateNonRdfSourceOperation(resourceId, externalURI, externalType);
044        } else {
045            operation = new UpdateNonRdfSourceOperation(resourceId, content);
046        }
047
048        operation.setUserPrincipal(userPrincipal);
049        operation.setDigests(digests);
050        operation.setFilename(filename);
051        operation.setContentSize(contentSize);
052        operation.setMimeType(mimeType);
053
054        return operation;
055    }
056}