Class: Moab::StorageServices
- Inherits:
-
Object
- Object
- Moab::StorageServices
- Defined in:
- lib/moab/storage_services.rb
Overview
Copyright © 2012 by The Board of Trustees of the Leland Stanford Junior University. All rights reserved. See LICENSE for details.
An interface class to support access to SDR storage via a RESTful server
Data Model
-
StorageRepository = represents a digital object repository storage node
-
StorageServices = supports application layer access to the repository’s objects, data, and metadata
-
StorageObject = represents a digital object’s repository storage location and ingest/dissemination methods
-
StorageObjectVersion [1..*] = represents a version subdirectory within an object’s home directory
-
Bagger [1] = utility for creating bagit packages for ingest or dissemination
-
-
-
Direct Known Subclasses
Constant Summary collapse
- @@repository =
Returns an instance of the interface to SDR storage.
Moab::StorageRepository.new
Class Method Summary collapse
-
.current_version(object_id) ⇒ Integer
The version number of the currently highest version.
-
.deposit_branch(object_id) ⇒ Pathname
The branch segment of the object deposit path.
-
.deposit_trunk ⇒ String
The trunk segment of the object deposit path.
-
.find_storage_object(object_id, include_deposit = false) ⇒ StorageObject
The representation of a digitial object’s storage directory, which might not exist yet.
-
.object_path(object_id) ⇒ String
The location of the storage object.
-
.object_size(object_id, include_deposit = false) ⇒ Integer
The size occupied on disk by the storage object, in bytes.
-
.object_version_path(object_id, version_id = nil) ⇒ String
The location of the storage object version.
- .repository ⇒ Object
-
.retrieve_file(file_category, file_id, object_id, version_id = nil) ⇒ Pathname
Pathname object containing the full path for the specified file.
-
.retrieve_file_group(file_category, object_id, version_id = nil) ⇒ FileInventory
The file inventory for the specified object version.
-
.retrieve_file_signature(file_category, file_id, object_id, version_id = nil) ⇒ FileSignature
The signature of the file.
-
.retrieve_file_using_signature(file_category, file_signature, object_id, version_id = nil) ⇒ Pathname
Pathname object containing the full path for the specified file.
-
.search_storage_objects(object_id, include_deposit = false) ⇒ Array<StorageObject>
Representations of a digitial object’s storage directories, or an empty array if none found.
-
.storage_object(object_id, create = false) ⇒ StorageObject
The representation of a digitial object’s storage directory, which must exist.
-
.storage_roots ⇒ Array<Pathname>
A list of the filesystems currently used for storage.
-
.version_differences(object_id, base_version_id, compare_version_id) ⇒ FileInventoryDifference
The report of the version differences.
-
.version_metadata(object_id) ⇒ Pathname
Pathname object containing the full path for the specified file.
Class Method Details
.current_version(object_id) ⇒ Integer
Returns The version number of the currently highest version.
82 83 84 |
# File 'lib/moab/storage_services.rb', line 82 def self.current_version(object_id) @@repository.storage_object(object_id).current_version_id end |
.deposit_branch(object_id) ⇒ Pathname
Returns The branch segment of the object deposit path.
35 36 37 |
# File 'lib/moab/storage_services.rb', line 35 def self.deposit_branch(object_id) @@repository.deposit_branch(object_id) end |
.deposit_trunk ⇒ String
Returns The trunk segment of the object deposit path.
29 30 31 |
# File 'lib/moab/storage_services.rb', line 29 def self.deposit_trunk @@repository.deposit_trunk end |
.find_storage_object(object_id, include_deposit = false) ⇒ StorageObject
Returns The representation of a digitial object’s storage directory, which might not exist yet.
42 43 44 |
# File 'lib/moab/storage_services.rb', line 42 def self.find_storage_object(object_id, include_deposit = false) @@repository.find_storage_object(object_id, include_deposit) end |
.object_path(object_id) ⇒ String
Returns the location of the storage object.
69 70 71 |
# File 'lib/moab/storage_services.rb', line 69 def self.object_path(object_id) @@repository.storage_object(object_id).object_pathname.to_s end |
.object_size(object_id, include_deposit = false) ⇒ Integer
Returns the size occupied on disk by the storage object, in bytes. this is the entire moab (all versions).
56 57 58 |
# File 'lib/moab/storage_services.rb', line 56 def self.object_size(object_id, include_deposit = false) @@repository.object_size(object_id, include_deposit) end |
.object_version_path(object_id, version_id = nil) ⇒ String
Returns the location of the storage object version.
76 77 78 |
# File 'lib/moab/storage_services.rb', line 76 def self.object_version_path(object_id, version_id = nil) @@repository.storage_object(object_id).find_object_version(version_id).version_pathname.to_s end |
.repository ⇒ Object
19 20 21 |
# File 'lib/moab/storage_services.rb', line 19 def self.repository @@repository end |
.retrieve_file(file_category, file_id, object_id, version_id = nil) ⇒ Pathname
Returns Pathname object containing the full path for the specified file.
111 112 113 114 |
# File 'lib/moab/storage_services.rb', line 111 def self.retrieve_file(file_category, file_id, object_id, version_id = nil) storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id) file_pathname = storage_object_version.find_filepath(file_category, file_id) end |
.retrieve_file_group(file_category, object_id, version_id = nil) ⇒ FileInventory
Returns the file inventory for the specified object version.
95 96 97 98 99 100 101 102 103 104 |
# File 'lib/moab/storage_services.rb', line 95 def self.retrieve_file_group(file_category, object_id, version_id = nil) storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id) inventory_type = if file_category =~ /manifest/ file_category = 'manifests' else 'version' end inventory = storage_object_version.file_inventory(inventory_type) inventory.group(file_category) end |
.retrieve_file_signature(file_category, file_id, object_id, version_id = nil) ⇒ FileSignature
Returns The signature of the file.
131 132 133 134 |
# File 'lib/moab/storage_services.rb', line 131 def self.retrieve_file_signature(file_category, file_id, object_id, version_id = nil) storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id) file_pathname = storage_object_version.find_signature(file_category, file_id) end |
.retrieve_file_using_signature(file_category, file_signature, object_id, version_id = nil) ⇒ Pathname
Returns Pathname object containing the full path for the specified file.
121 122 123 124 |
# File 'lib/moab/storage_services.rb', line 121 def self.retrieve_file_using_signature(file_category, file_signature, object_id, version_id = nil) storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id) file_pathname = storage_object_version.find_filepath_using_signature(file_category, file_signature) end |
.search_storage_objects(object_id, include_deposit = false) ⇒ Array<StorageObject>
Returns Representations of a digitial object’s storage directories, or an empty array if none found.
49 50 51 |
# File 'lib/moab/storage_services.rb', line 49 def self.search_storage_objects(object_id, include_deposit = false) @@repository.search_storage_objects(object_id, include_deposit) end |
.storage_object(object_id, create = false) ⇒ StorageObject
Returns The representation of a digitial object’s storage directory, which must exist.
63 64 65 |
# File 'lib/moab/storage_services.rb', line 63 def self.storage_object(object_id, create = false) @@repository.storage_object(object_id, create) end |
.storage_roots ⇒ Array<Pathname>
Returns A list of the filesystems currently used for storage.
24 25 26 |
# File 'lib/moab/storage_services.rb', line 24 def self.storage_roots @@repository.storage_roots end |
.version_differences(object_id, base_version_id, compare_version_id) ⇒ FileInventoryDifference
Returns The report of the version differences.
140 141 142 143 144 145 146 |
# File 'lib/moab/storage_services.rb', line 140 def self.version_differences(object_id, base_version_id, compare_version_id) base_version = @@repository.storage_object(object_id).storage_object_version(base_version_id) compare_version = @@repository.storage_object(object_id).storage_object_version(compare_version_id) base_inventory = base_version.file_inventory('version') compare_inventory = compare_version.file_inventory('version') FileInventoryDifference.new.compare(base_inventory, compare_inventory) end |
.version_metadata(object_id) ⇒ Pathname
Returns Pathname object containing the full path for the specified file.
88 89 90 |
# File 'lib/moab/storage_services.rb', line 88 def self.(object_id) retrieve_file('metadata', 'versionMetadata.xml', object_id) end |