Method: Moab::StorageObject#ingest_bag

Defined in:
lib/moab/storage_object.rb

#ingest_bag(bag_dir = deposit_bag_pathname) ⇒ void

This method returns an undefined value.

Returns Ingest a new object version contained in a bag into this objects storage area.

Examples:


Parameters:

  • bag_dir (Pathname, String) (defaults to: deposit_bag_pathname)

    The location of the bag to be ingested



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# File 'lib/moab/storage_object.rb', line 62

def ingest_bag(bag_dir = deposit_bag_pathname)
  bag_dir = Pathname(bag_dir)
  current_version = StorageObjectVersion.new(self, current_version_id)
  current_inventory = current_version.file_inventory('version')
  new_version = StorageObjectVersion.new(self, current_version_id + 1)
  if FileInventory.xml_pathname_exist?(bag_dir, 'version')
    new_inventory = FileInventory.read_xml_file(bag_dir, 'version')
  elsif current_version.version_id == 0
    new_inventory = versionize_bag(bag_dir, current_version, new_version)
  end
  validate_new_inventory(new_inventory)
  new_version.ingest_bag_data(bag_dir)
  new_version.update_catalog(current_version.signature_catalog, new_inventory)
  new_version.generate_differences_report(current_inventory, new_inventory)
  new_version.generate_manifest_inventory
  new_version
end