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
008
009import org.fcrepo.config.ServerManagedPropsMode;
010import org.fcrepo.kernel.api.Transaction;
011import org.fcrepo.kernel.api.identifiers.FedoraId;
012
013/**
014 * Factory for operations on rdf sources
015 *
016 * @author bbpennel
017 */
018public interface RdfSourceOperationFactory extends ResourceOperationFactory {
019
020    /**
021     * Get a builder for an operation to create an RDF source
022     *
023     * @param transaction the transaction
024     * @param rescId id of the resource targeted by the operation
025     * @param interactionModel interaction model for the resource being created
026     * @param serverManagedPropsMode server managed props mode
027     * @return new builder
028     */
029    CreateRdfSourceOperationBuilder createBuilder(Transaction transaction,
030                                                  FedoraId rescId,
031                                                  String interactionModel,
032                                                  ServerManagedPropsMode serverManagedPropsMode);
033
034    /**
035     * Get a builder for an operation to update an RDF source
036     *
037     * @param transaction the transaction
038     * @param rescId id of the resource targeted by the operation
039     * @param serverManagedPropsMode server managed props mode
040     * @return new builder
041     */
042    RdfSourceOperationBuilder updateBuilder(Transaction transaction, FedoraId rescId,
043                                            final ServerManagedPropsMode serverManagedPropsMode);
044}