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 org.apache.jena.rdf.model.Model; 009 010import org.fcrepo.config.ServerManagedPropsMode; 011import org.fcrepo.kernel.api.RdfStream; 012import org.fcrepo.kernel.api.Transaction; 013import org.fcrepo.kernel.api.identifiers.FedoraId; 014import org.fcrepo.kernel.api.operations.CreateRdfSourceOperation; 015import org.fcrepo.kernel.api.operations.CreateRdfSourceOperationBuilder; 016 017/** 018 * Builder for operations to create rdf sources 019 * 020 * @author bbpennel 021 */ 022public class CreateRdfSourceOperationBuilderImpl extends AbstractRdfSourceOperationBuilder implements 023 CreateRdfSourceOperationBuilder { 024 025 private FedoraId parentId; 026 027 private boolean archivalGroup = false; 028 private boolean isOverwrite = false; 029 030 /** 031 * Constructor. 032 * 033 * @param transaction the transaction 034 * @param resourceId the internal identifier. 035 * @param interactionModel interaction model 036 * @param serverManagedPropsMode server managed props mode 037 */ 038 public CreateRdfSourceOperationBuilderImpl(final Transaction transaction, final FedoraId resourceId, 039 final String interactionModel, 040 final ServerManagedPropsMode serverManagedPropsMode) { 041 super(transaction, resourceId, interactionModel, serverManagedPropsMode); 042 } 043 044 @Override 045 public CreateRdfSourceOperation build() { 046 final var operation = 047 isOverwrite ? new OverwriteRdfTombstoneOperation(transaction, rescId, interactionModel, tripleStream) 048 : new CreateRdfSourceOperationImpl(transaction, rescId, interactionModel, tripleStream); 049 operation.setParentId(parentId); 050 operation.setUserPrincipal(userPrincipal); 051 operation.setCreatedBy(createdBy); 052 operation.setCreatedDate(createdDate); 053 operation.setLastModifiedBy(lastModifiedBy); 054 operation.setLastModifiedDate(lastModifiedDate); 055 operation.setArchivalGroup(archivalGroup); 056 return operation; 057 } 058 059 @Override 060 public CreateRdfSourceOperationBuilder userPrincipal(final String userPrincipal) { 061 super.userPrincipal(userPrincipal); 062 return this; 063 } 064 065 @Override 066 public CreateRdfSourceOperationBuilder triples(final RdfStream triples) { 067 super.triples(triples); 068 return this; 069 } 070 071 @Override 072 public CreateRdfSourceOperationBuilder parentId(final FedoraId parentId) { 073 this.parentId = parentId; 074 return this; 075 } 076 077 @Override 078 public CreateRdfSourceOperationBuilder relaxedProperties(final Model model) { 079 super.relaxedProperties(model); 080 return this; 081 } 082 083 @Override 084 public CreateRdfSourceOperationBuilder archivalGroup(final boolean flag) { 085 this.archivalGroup = flag; 086 return this; 087 } 088 089 @Override 090 public CreateRdfSourceOperationBuilder isOverwrite(final boolean isOverwrite) { 091 this.isOverwrite = isOverwrite; 092 return this; 093 } 094 095}