Class: SdrClient::Deposit::Process

Inherits:
Object
  • Object
show all
Defined in:
lib/sdr_client/deposit/process.rb

Overview

The process for doing a deposit

Instance Method Summary collapse

Constructor Details

#initialize(metadata:, connection:, accession:, basepath:, priority: nil, grouping_strategy: SingleFileGroupingStrategy, file_set_type_strategy: FileTypeFileSetStrategy, files: [], assign_doi: false, logger: Logger.new($stdout)) ⇒ Process

rubocop:disable Metrics/ParameterLists

Parameters:

  • metadata (Request)

    information about the object

  • connection (String)

    the server connection to use

  • accession (Boolean)

    should the accessionWF be started

  • priority (String) (defaults to: nil)

    (nil) what processing priority should be used either ‘low’ or ‘default’

  • grouping_strategy (Class) (defaults to: SingleFileGroupingStrategy)

    class whose run method groups an array of uploads

  • file_set_type_strategy (Class) (defaults to: FileTypeFileSetStrategy)

    class whose run method determines file_set type

  • files (Array<String>) (defaults to: [])

    a list of relative filepaths to upload

  • basepath (String)

    filepath to which filepaths are relative

  • assign_doi (Boolean) (defaults to: false)

    should a DOI be assigned to this item

  • logger (Logger) (defaults to: Logger.new($stdout))

    the logger to use



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/sdr_client/deposit/process.rb', line 20

def initialize(metadata:,
               connection:,
               accession:,
               basepath:,
               priority: nil,
               grouping_strategy: SingleFileGroupingStrategy,
               file_set_type_strategy: FileTypeFileSetStrategy,
               files: [],
               assign_doi: false,
               logger: Logger.new($stdout))
  @files = files
  @connection = connection
  @metadata = 
  @logger = logger
  @grouping_strategy = grouping_strategy
  @file_set_type_strategy = file_set_type_strategy
  @accession = accession
  @priority = priority
  @assign_doi = assign_doi
  @basepath = basepath
end

Instance Method Details

#runString

rubocop:disable Metrics/AbcSize

Returns:

  • (String)

    job id for the background job result



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/sdr_client/deposit/process.rb', line 45

def run
  check_files_exist

   = UploadFilesMetadataBuilder.build(files: files, mime_types: mime_types, basepath: basepath)
  upload_responses = UploadFiles.upload(file_metadata: ,
                                        filepath_map: filepath_map,
                                        logger: logger,
                                        connection: connection)
   = MetadataBuilder.new(metadata: ,
                                         grouping_strategy: grouping_strategy,
                                         file_set_type_strategy: file_set_type_strategy,
                                         logger: logger)
  request = .with_uploads(upload_responses)
  model = Cocina::Models.build_request(request.as_json.with_indifferent_access)
  CreateResource.run(accession: @accession,
                     priority: @priority,
                     assign_doi: @assign_doi,
                     metadata: model,
                     logger: logger,
                     connection: connection)
end