Class: Stanford::StorageServices
- Inherits:
-
Moab::StorageServices
- Object
- Moab::StorageServices
- Stanford::StorageServices
- Defined in:
- lib/stanford/storage_services.rb
Overview
An interface class to support access to SDR storage via a RESTful server
Constant Summary collapse
- @@repository =
Stanford::StorageRepository.new
Class Method Summary collapse
-
.cm_remediate(object_id, version_id = nil) ⇒ String
Returns a remediated copy of the contentMetadata with fixity data filled in.
-
.cm_version_additions(new_content_metadata, object_id, version_id = nil) ⇒ FileInventory
The versionAddtions report showing which files are new or modified in the content metadata.
-
.compare_cm_to_version(new_content_metadata, object_id, subset, base_version = nil) ⇒ FileInventoryDifference
The report of differences between the content metadata and the specified version.
Methods inherited from Moab::StorageServices
current_version, deposit_branch, deposit_trunk, find_storage_object, object_path, object_size, object_version_path, repository, retrieve_file, retrieve_file_group, retrieve_file_signature, retrieve_file_using_signature, search_storage_objects, storage_object, storage_roots, version_differences
Class Method Details
.cm_remediate(object_id, version_id = nil) ⇒ String
58 59 60 61 62 |
# File 'lib/stanford/storage_services.rb', line 58 def self.cm_remediate(object_id, version_id = nil) cm = retrieve_file('metadata', 'contentMetadata.xml', object_id, version_id) group = retrieve_file_group('content', object_id, version_id) Stanford::ContentInventory.new.(cm, group) end |
.cm_version_additions(new_content_metadata, object_id, version_id = nil) ⇒ FileInventory
40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/stanford/storage_services.rb', line 40 def self.cm_version_additions(, object_id, version_id = nil) new_inventory = Stanford::ContentInventory.new.inventory_from_cm(, object_id, 'preserve') begin # ObjectNotFoundException is raised if the object does not exist in storage version_id ||= current_version(object_id) storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id) signature_catalog = storage_object_version.signature_catalog rescue Moab::ObjectNotFoundException storage_object = Moab::StorageObject.new(object_id, 'dummy') base_version = Moab::StorageObjectVersion.new(storage_object, 0) signature_catalog = base_version.signature_catalog end signature_catalog.version_additions(new_inventory) end |
.compare_cm_to_version(new_content_metadata, object_id, subset, base_version = nil) ⇒ FileInventoryDifference
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/stanford/storage_services.rb', line 16 def self.compare_cm_to_version(, object_id, subset, base_version = nil) new_inventory = Stanford::ContentInventory.new.inventory_from_cm(, object_id, subset) begin # ObjectNotFoundException is raised if the object does not exist in storage base_version ||= current_version(object_id) # FileNotFoundException is raised if object exists but has no contentMetadata file base_cm_pathname = retrieve_file('metadata', 'contentMetadata.xml', object_id, base_version) base_inventory = Stanford::ContentInventory.new.inventory_from_cm(base_cm_pathname.read, object_id, subset, base_version) rescue Moab::ObjectNotFoundException, Moab::FileNotFoundException # Create a skeletal FileInventory object, containing no file entries storage_object = Moab::StorageObject.new(object_id, 'dummy') base_version = Moab::StorageObjectVersion.new(storage_object, 0) base_inventory = base_version.file_inventory('version') end diff = Moab::FileInventoryDifference.new.compare(base_inventory, new_inventory) = diff.group_difference('metadata') diff.group_differences.delete() if diff end |