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.impl.operations;
007
008import java.io.InputStream;
009import java.net.URI;
010
011import org.fcrepo.config.ServerManagedPropsMode;
012import org.fcrepo.kernel.api.Transaction;
013import org.fcrepo.kernel.api.identifiers.FedoraId;
014import org.fcrepo.kernel.api.operations.CreateNonRdfSourceOperationBuilder;
015import org.fcrepo.kernel.api.operations.NonRdfSourceOperationFactory;
016import org.fcrepo.kernel.api.operations.UpdateNonRdfSourceHeadersOperationBuilder;
017import org.springframework.stereotype.Component;
018
019/**
020 * Factory for operations to update non-rdf sources
021 *
022 * @author bbpennel
023 */
024@Component
025public class NonRdfSourceOperationFactoryImpl implements NonRdfSourceOperationFactory {
026
027    @Override
028    public UpdateNonRdfSourceOperationBuilder updateExternalBinaryBuilder(final Transaction transaction,
029                                                                          final FedoraId rescId,
030                                                                          final String handling,
031                                                                          final URI contentUri) {
032        return new UpdateNonRdfSourceOperationBuilder(transaction, rescId, handling, contentUri);
033    }
034
035    @Override
036    public UpdateNonRdfSourceOperationBuilder updateInternalBinaryBuilder(final Transaction transaction,
037                                                                          final FedoraId rescId,
038                                                                    final InputStream contentStream) {
039        return new UpdateNonRdfSourceOperationBuilder(transaction, rescId, contentStream);
040    }
041
042    @Override
043    public CreateNonRdfSourceOperationBuilder createExternalBinaryBuilder(final Transaction transaction,
044                                                                          final FedoraId rescId,
045            final String handling, final URI contentUri) {
046        return new CreateNonRdfSourceOperationBuilderImpl(transaction, rescId, handling, contentUri);
047    }
048
049    @Override
050    public CreateNonRdfSourceOperationBuilder createInternalBinaryBuilder(final Transaction transaction,
051                                                                          final FedoraId rescId,
052            final InputStream contentStream) {
053        return new CreateNonRdfSourceOperationBuilderImpl(transaction, rescId, contentStream);
054    }
055
056    @Override
057    public UpdateNonRdfSourceHeadersOperationBuilder updateHeadersBuilder(final Transaction transaction,
058                                                               final FedoraId rescId,
059                                                               final ServerManagedPropsMode serverManagedPropsMode) {
060        return new UpdateNonRdfSourceHeadersOperationBuilderImpl(transaction, rescId, serverManagedPropsMode);
061    }
062}