Class: Moab::StorageServices

Inherits:
Object
  • Object
show all
Defined in:
lib/moab/storage_services.rb

Overview

Note:

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

Stanford::StorageServices

Constant Summary collapse

@@repository =
Moab::StorageRepository.new

Class Method Summary collapse

Class Method Details

.current_version(object_id) ⇒ Integer



77
78
79
# File 'lib/moab/storage_services.rb', line 77

def self.current_version(object_id)
  @@repository.storage_object(object_id).current_version_id
end

.deposit_branch(object_id) ⇒ Pathname



37
38
39
# File 'lib/moab/storage_services.rb', line 37

def self.deposit_branch(object_id)
  @@repository.deposit_branch(object_id)
end

.deposit_trunkString



31
32
33
# File 'lib/moab/storage_services.rb', line 31

def self.deposit_trunk
  @@repository.deposit_trunk
end

.find_storage_object(object_id, include_deposit = false) ⇒ StorageObject



44
45
46
# File 'lib/moab/storage_services.rb', line 44

def self.find_storage_object(object_id, include_deposit=false)
  @@repository.find_storage_object(object_id, include_deposit)
end

.object_path(object_id) ⇒ String



64
65
66
# File 'lib/moab/storage_services.rb', line 64

def self.object_path(object_id)
  @@repository.storage_object(object_id).object_pathname.to_s
end

.object_size(object_id, include_deposit = false) ⇒ Integer



51
52
53
# File 'lib/moab/storage_services.rb', line 51

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



71
72
73
# File 'lib/moab/storage_services.rb', line 71

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

.repositoryObject



21
22
23
# File 'lib/moab/storage_services.rb', line 21

def self.repository
  @@repository
end

.retrieve_file(file_category, file_id, object_id, version_id = nil) ⇒ Pathname



106
107
108
109
# File 'lib/moab/storage_services.rb', line 106

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



90
91
92
93
94
95
96
97
98
99
# File 'lib/moab/storage_services.rb', line 90

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)
  if file_category =~ /manifest/
    inventory_type = file_category = 'manifests'
  else
    inventory_type = '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



126
127
128
129
# File 'lib/moab/storage_services.rb', line 126

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



116
117
118
119
# File 'lib/moab/storage_services.rb', line 116

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

.storage_object(object_id, create = false) ⇒ StorageObject



58
59
60
# File 'lib/moab/storage_services.rb', line 58

def self.storage_object(object_id, create=false)
  @@repository.storage_object(object_id, create)
end

.storage_rootsArray<Pathname>



26
27
28
# File 'lib/moab/storage_services.rb', line 26

def self.storage_roots
  @@repository.storage_roots
end

.version_differences(object_id, base_version_id, compare_version_id) ⇒ FileInventoryDifference



135
136
137
138
139
140
141
# File 'lib/moab/storage_services.rb', line 135

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



83
84
85
# File 'lib/moab/storage_services.rb', line 83

def self.(object_id)
  self.retrieve_file('metadata', 'versionMetadata.xml', object_id)
end