moab-versioning 2.0.0 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 29bcc835c352dfeebb39b066f380e14bd37cb1ca
4
- data.tar.gz: 31912b340a667715ae00a76cfaa657962ceb73fb
3
+ metadata.gz: 314bede5bec369d49b3173b4cb6ca49b67dad86c
4
+ data.tar.gz: 2efefdc7fa3a28b69e45778fd1a373be555d4a4b
5
5
  SHA512:
6
- metadata.gz: f468a3db4861d818ac143289f0a83372f23174bd0c1ff7122a69167406d8e566c049bb80a591f0b4876d50596b083e9de20913ff0ecc6f878611dcbd3d23d1e3
7
- data.tar.gz: d906f907c719f412e7572d659b6ea22b2a4afa9d216f1960f437fd79774406285fae3d813c2abed36cc188a35a897495010351defa8122cd44f38e17143e4b3c
6
+ metadata.gz: 26daf2d5fa9f5a859676313a180ba5c73acb2e441b73cdfb6cdafc847e043521764e469512f364dead19fb0ea5d3d095f5e666d97f3362112ca08cb8b5d93685
7
+ data.tar.gz: 9638f3dcec4715d837abde7bc3c7f28713553692482b1ea3b93c3d654000bd6fb0cc6100af01266bc0aec94863c3f006ae9177117b4d3667af38accc67dd4925
data/lib/moab/bagger.rb CHANGED
@@ -6,8 +6,10 @@ module Moab
6
6
  # A class used to create a BagIt package from a version inventory and a set of source files.
7
7
  # The {#fill_bag} method is called with a package_mode parameter that specifies
8
8
  # whether the bag is being created for deposit into the repository or is to contain the output of a version reconstruction.
9
- # * In <b>:depositor</b> mode, the version inventory is filtered using the digital object's signature catalog so that only new files are included
10
- # * In <b>:reconstructor</b> mode, the version inventory and signature catalog are used together to regenerate the complete set of files for the version.
9
+ # * In <b>:depositor</b> mode, the version inventory is filtered using the digital object's signature catalog so that only
10
+ # new files are included
11
+ # * In <b>:reconstructor</b> mode, the version inventory and signature catalog are used together to regenerate the complete
12
+ # set of files for the version.
11
13
  #
12
14
  # ====Data Model
13
15
  # * {StorageRepository} = represents a digital object repository storage node
@@ -156,7 +156,8 @@ module Moab
156
156
  end
157
157
 
158
158
  # @api internal
159
- # @return [String] Returns either the version ID (if inventory is a version manifest) or the name of the directory that was harvested to create the inventory
159
+ # @return [String] Returns either the version ID (if inventory is a version manifest) or the name of the directory
160
+ # that was harvested to create the inventory
160
161
  def data_source
161
162
  data_source = (groups.collect { |g| g.data_source.to_s }).join('|')
162
163
  if data_source.start_with?('contentMetadata')
@@ -118,7 +118,10 @@ module Moab
118
118
  # @return [String] The object-relative path of the file having the specified signature
119
119
  def catalog_filepath(file_signature)
120
120
  catalog_entry = @signature_hash[file_signature]
121
- raise FileNotFoundException, "catalog entry not found for #{file_signature.fixity.inspect} in #{@digital_object_id} - #{@version_id}" if catalog_entry.nil?
121
+ if catalog_entry.nil?
122
+ msg = "catalog entry not found for #{file_signature.fixity.inspect} in #{@digital_object_id} - #{@version_id}"
123
+ raise FileNotFoundException, msg
124
+ end
122
125
  catalog_entry.storage_path
123
126
  end
124
127
 
@@ -73,7 +73,10 @@ module Moab
73
73
  def find_filepath(file_category, file_id)
74
74
  this_version_filepath = file_pathname(file_category, file_id)
75
75
  return this_version_filepath if this_version_filepath.exist?
76
- raise FileNotFoundException, "manifest file #{file_id} not found for #{@storage_object.digital_object_id} - #{@version_id}" if file_category == 'manifest'
76
+ if file_category == 'manifest'
77
+ msg = "manifest file #{file_id} not found for #{@storage_object.digital_object_id} - #{@version_id}"
78
+ raise FileNotFoundException, msg
79
+ end
77
80
  file_signature = file_inventory('version').file_signature(file_category, file_id)
78
81
  catalog_filepath = signature_catalog.catalog_filepath(file_signature)
79
82
  @storage_object.storage_filepath(catalog_filepath)
@@ -102,6 +102,22 @@ module Moab
102
102
  storage_object
103
103
  end
104
104
 
105
+ # @param object_id [String] The identifier of the digital object whose size is desired
106
+ # @param include_deposit [Boolean] specifies whether to look in deposit areas for objects in process of initial ingest
107
+ # @return [Integer] the size occupied on disk by the storage object, in bytes. this is the entire moab (all versions).
108
+ def object_size(object_id, include_deposit=false)
109
+ storage_pathname = find_storage_object(object_id, include_deposit).object_pathname
110
+ size = 0
111
+ Find.find(storage_pathname) do |path|
112
+ if FileTest.directory?(path)
113
+ Find.prune if File.basename(path)[0] == '.'
114
+ else
115
+ size += FileTest.size(path)
116
+ end
117
+ end
118
+ size
119
+ end
120
+
105
121
  # @param object_id [String] The identifier of the digital object whose version is desired
106
122
  # @param create [Boolean] If true, the object home directory should be created if it does not exist
107
123
  # @return [StorageObject] The representation of a digitial object's storage directory, which must exist.
@@ -45,6 +45,13 @@ module Moab
45
45
  @@repository.find_storage_object(object_id, include_deposit)
46
46
  end
47
47
 
48
+ # @param object_id [String] The identifier of the digital object whose size is desired
49
+ # @param include_deposit [Boolean] specifies whether to look in deposit areas for objects in process of initial ingest
50
+ # @return [Integer] the size occupied on disk by the storage object, in bytes. this is the entire moab (all versions).
51
+ def self.object_size(object_id, include_deposit=false)
52
+ @@repository.object_size(object_id, include_deposit)
53
+ end
54
+
48
55
  # @param object_id [String] The identifier of the digital object whose version is desired
49
56
  # @param create [Boolean] If true, the object home directory should be created if it does not exist
50
57
  # @return [StorageObject] The representation of a digitial object's storage directory, which must exist.
@@ -9,8 +9,10 @@ module Stanford
9
9
  @@repository = Stanford::StorageRepository.new
10
10
 
11
11
  # @param new_content_metadata [String] The content metadata to be compared to the base
12
- # @param object_id [String] The digital object identifier of the object whose version inventory is the basis of the comparison
13
- # @param subset [String] Speciifes which subset of files to list in the inventories extracted from the contentMetadata (all|preserve|publish|shelve)
12
+ # @param object_id [String] The digital object identifier of the object whose version inventory is the basis of the
13
+ # comparison
14
+ # @param subset [String] Speciifes which subset of files to list in the inventories extracted from the
15
+ # contentMetadata (all|preserve|publish|shelve)
14
16
  # @param base_version [Integer] The ID of the version whose inventory is the basis of, if nil use latest version
15
17
  # @return [FileInventoryDifference] The report of differences between the content metadata and the specified version
16
18
  def self.compare_cm_to_version(new_content_metadata, object_id, subset, base_version=nil)
@@ -63,4 +65,4 @@ module Stanford
63
65
 
64
66
  end
65
67
 
66
- end
68
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moab-versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Weber
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-02-11 00:00:00.000000000 Z
14
+ date: 2017-09-07 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: confstruct
@@ -153,6 +153,20 @@ dependencies:
153
153
  - - ">="
154
154
  - !ruby/object:Gem::Version
155
155
  version: '0'
156
+ - !ruby/object:Gem::Dependency
157
+ name: coveralls
158
+ requirement: !ruby/object:Gem::Requirement
159
+ requirements:
160
+ - - ">="
161
+ - !ruby/object:Gem::Version
162
+ version: '0'
163
+ type: :development
164
+ prerelease: false
165
+ version_requirements: !ruby/object:Gem::Requirement
166
+ requirements:
167
+ - - ">="
168
+ - !ruby/object:Gem::Version
169
+ version: '0'
156
170
  - !ruby/object:Gem::Dependency
157
171
  name: yard
158
172
  requirement: !ruby/object:Gem::Requirement
@@ -181,6 +195,34 @@ dependencies:
181
195
  - - ">="
182
196
  - !ruby/object:Gem::Version
183
197
  version: '0'
198
+ - !ruby/object:Gem::Dependency
199
+ name: rubocop
200
+ requirement: !ruby/object:Gem::Requirement
201
+ requirements:
202
+ - - "~>"
203
+ - !ruby/object:Gem::Version
204
+ version: 0.49.1
205
+ type: :development
206
+ prerelease: false
207
+ version_requirements: !ruby/object:Gem::Requirement
208
+ requirements:
209
+ - - "~>"
210
+ - !ruby/object:Gem::Version
211
+ version: 0.49.1
212
+ - !ruby/object:Gem::Dependency
213
+ name: rubocop-rspec
214
+ requirement: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - "~>"
217
+ - !ruby/object:Gem::Version
218
+ version: 1.16.0
219
+ type: :development
220
+ prerelease: false
221
+ version_requirements: !ruby/object:Gem::Requirement
222
+ requirements:
223
+ - - "~>"
224
+ - !ruby/object:Gem::Version
225
+ version: 1.16.0
184
226
  description: Contains classes to process digital object version content and metadata
185
227
  email:
186
228
  - darren.weber@stanford.edu
@@ -245,10 +287,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
245
287
  version: 1.3.6
246
288
  requirements: []
247
289
  rubyforge_project:
248
- rubygems_version: 2.4.5.1
290
+ rubygems_version: 2.5.1
249
291
  signing_key:
250
292
  specification_version: 4
251
293
  summary: Ruby implementation of digital object versioning toolkit used by the SULAIR
252
294
  Digital Library
253
295
  test_files: []
254
- has_rdoc: