Module: Dor::Itemizable

Extended by:
ActiveSupport::Concern
Included in:
Item
Defined in:
lib/dor/models/concerns/itemizable.rb

Constant Summary collapse

DIFF_FILENAME =
'cm_inv_diff'.freeze

Instance Method Summary collapse

Instance Method Details

#clear_diff_cacheObject

Deletes all cm_inv_diff files in the workspace for the Item



15
16
17
18
19
20
21
22
# File 'lib/dor/models/concerns/itemizable.rb', line 15

def clear_diff_cache
  if Dor::Config.stacks.local_workspace_root.nil?
    raise ArgumentError, 'Missing Dor::Config.stacks.local_workspace_root'
  end
  druid = DruidTools::Druid.new(pid, Dor::Config.stacks.local_workspace_root)
  diff_pattern = File.join(druid.temp_dir, DIFF_FILENAME + '.*')
  FileUtils.rm_f Dir.glob(diff_pattern)
end

#get_content_diff(subset = :all, version = nil) ⇒ Moab::FileInventoryDifference

Retrieves file difference manifest for contentMetadata from SDR

Parameters:

  • subset (Symbol) (defaults to: :all)

    keyword for file attributes :shelve, :preserve, :publish. Default is :all.

  • version (String) (defaults to: nil)

Returns:

  • (Moab::FileInventoryDifference)

    XML contents of cm_inv_diff manifest



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/dor/models/concerns/itemizable.rb', line 29

def get_content_diff(subset = :all, version = nil)
  if Dor::Config.stacks.local_workspace_root.nil?
    raise Dor::ParameterError, 'Missing Dor::Config.stacks.local_workspace_root'
  end

  if !respond_to?(:contentMetadata) || .nil?
    raise Dor::Exception, 'Missing contentMetadata datastream'
  end

  Sdr::Client.get_content_diff(pid, .content, subset, version)
end