moab-versioning 4.2.1 → 4.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +5 -5
  2. data/lib/moab.rb +3 -2
  3. data/lib/moab/bagger.rb +25 -20
  4. data/lib/moab/config.rb +39 -8
  5. data/lib/moab/deposit_bag_validator.rb +22 -17
  6. data/lib/moab/exceptions.rb +10 -8
  7. data/lib/moab/file_group.rb +23 -22
  8. data/lib/moab/file_group_difference.rb +35 -35
  9. data/lib/moab/file_group_difference_subset.rb +5 -5
  10. data/lib/moab/file_instance.rb +4 -3
  11. data/lib/moab/file_instance_difference.rb +5 -5
  12. data/lib/moab/file_inventory.rb +25 -31
  13. data/lib/moab/file_inventory_difference.rb +11 -11
  14. data/lib/moab/file_manifestation.rb +8 -7
  15. data/lib/moab/file_signature.rb +35 -41
  16. data/lib/moab/signature_catalog.rb +19 -21
  17. data/lib/moab/signature_catalog_entry.rb +5 -5
  18. data/lib/moab/stanford.rb +2 -0
  19. data/lib/moab/storage_object.rb +23 -24
  20. data/lib/moab/storage_object_validator.rb +44 -16
  21. data/lib/moab/storage_object_version.rb +45 -40
  22. data/lib/moab/storage_repository.rb +59 -24
  23. data/lib/moab/storage_services.rb +17 -10
  24. data/lib/moab/utc_time.rb +3 -3
  25. data/lib/moab/verification_result.rb +3 -4
  26. data/lib/moab/version_metadata.rb +4 -4
  27. data/lib/moab/version_metadata_entry.rb +6 -6
  28. data/lib/moab/version_metadata_event.rb +1 -1
  29. data/lib/serializer.rb +2 -0
  30. data/lib/serializer/manifest.rb +9 -7
  31. data/lib/serializer/serializable.rb +41 -35
  32. data/lib/stanford/active_fedora_object.rb +1 -1
  33. data/lib/stanford/content_inventory.rb +40 -34
  34. data/lib/stanford/dor_metadata.rb +4 -3
  35. data/lib/stanford/moab_storage_directory.rb +4 -2
  36. data/lib/stanford/storage_object_validator.rb +1 -1
  37. data/lib/stanford/storage_repository.rb +9 -6
  38. data/lib/stanford/storage_services.rb +6 -6
  39. metadata +23 -38
@@ -1,4 +1,4 @@
1
- require 'moab/stanford'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Stanford
4
4
  # Stanford-specific utility methods for interfacing with DOR metadata files
@@ -31,11 +31,12 @@ module Stanford
31
31
  # @return [FileInventory] Inventory of the files under the specified directory
32
32
  def inventory_from_directory(directory, version_id = nil)
33
33
  version_id ||= @version_id
34
- version_inventory = Moab::FileInventory.new(type: 'version', digital_object_id: @digital_object_id, version_id: version_id)
34
+ version_inventory = Moab::FileInventory.new(type: 'version', digital_object_id: @digital_object_id,
35
+ version_id: version_id)
35
36
  content_metadata = IO.read(File.join(directory, 'contentMetadata.xml'))
36
37
  content_group = Stanford::ContentInventory.new.group_from_cm(content_metadata, 'preserve')
37
38
  version_inventory.groups << content_group
38
- metadata_group = Moab::FileGroup.new(:group_id => 'metadata').group_from_directory(directory)
39
+ metadata_group = Moab::FileGroup.new(group_id: 'metadata').group_from_directory(directory)
39
40
  version_inventory.groups << metadata_group
40
41
  version_inventory
41
42
  end
@@ -1,11 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'find'
2
4
 
3
5
  module Stanford
4
6
  ##
5
7
  # methods for dealing with a directory which stores Moab objects
6
8
  class MoabStorageDirectory
7
- DRUID_TREE_REGEXP = '[[:lower:]]{2}/\\d{3}/[[:lower:]]{2}/\\d{4}'.freeze
8
- DRUID_REGEXP = '[[:lower:]]{2}\\d{3}[[:lower:]]{2}\\d{4}'.freeze
9
+ DRUID_TREE_REGEXP = '[[:lower:]]{2}/\\d{3}/[[:lower:]]{2}/\\d{4}'
10
+ DRUID_REGEXP = '[[:lower:]]{2}\\d{3}[[:lower:]]{2}\\d{4}'
9
11
 
10
12
  def self.find_moab_paths(storage_dir)
11
13
  Find.find(storage_dir) do |path|
@@ -1,4 +1,4 @@
1
- require 'moab'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Stanford
4
4
  # druids are Stanford specific entities
@@ -1,4 +1,5 @@
1
- require 'moab/stanford'
1
+ # frozen_string_literal: true
2
+
2
3
  require 'druid-tools'
3
4
 
4
5
  module Stanford
@@ -22,7 +23,7 @@ module Stanford
22
23
  end
23
24
 
24
25
  # @param object_id [String] The identifier of the digital object
25
- # @return [Pathname] The branch segment of the object deposit path
26
+ # @return [String] The branch segment of the object deposit path
26
27
  def deposit_branch(object_id)
27
28
  object_id.split(/:/)[-1]
28
29
  end
@@ -30,12 +31,14 @@ module Stanford
30
31
  # @param object_id [String] The identifier of the digital object whose path is requested
31
32
  # @return [String] the druid tree directory path based on the given object identifier.
32
33
  def druid_tree(object_id)
33
- # Note: this seems an odd place to do druid validation, but leaving it here for now
34
+ # NOTE: this seems an odd place to do druid validation, but leaving it here for now
34
35
  syntax_msg = "Identifier has invalid suri syntax: #{object_id}"
35
- raise syntax_msg + " nil or empty" if object_id.to_s.empty?
36
+ raise(Moab::InvalidSuriSyntaxError, "#{syntax_msg} nil or empty") if object_id.to_s.empty?
37
+
36
38
  identifier = object_id.split(':')[-1]
37
- raise syntax_msg if identifier.to_s.empty?
38
- raise syntax_msg unless DruidTools::Druid.valid?(identifier, true)
39
+ raise(Moab::InvalidSuriSyntaxError, syntax_msg) if identifier.to_s.empty?
40
+ raise(Moab::InvalidSuriSyntaxError, syntax_msg) unless DruidTools::Druid.valid?(identifier, true)
41
+
39
42
  DruidTools::Druid.new(identifier, true).tree.join(File::SEPARATOR)
40
43
  end
41
44
  end
@@ -1,4 +1,4 @@
1
- require 'moab/stanford'
1
+ # frozen_string_literal: true
2
2
 
3
3
  module Stanford
4
4
  # An interface class to support access to SDR storage via a RESTful server
@@ -17,9 +17,9 @@ module Stanford
17
17
  new_inventory = Stanford::ContentInventory.new.inventory_from_cm(new_content_metadata, object_id, subset)
18
18
  begin
19
19
  # ObjectNotFoundException is raised if the object does not exist in storage
20
- base_version ||= self.current_version(object_id)
20
+ base_version ||= current_version(object_id)
21
21
  # FileNotFoundException is raised if object exists but has no contentMetadata file
22
- base_cm_pathname = self.retrieve_file('metadata', 'contentMetadata.xml', object_id, base_version)
22
+ base_cm_pathname = retrieve_file('metadata', 'contentMetadata.xml', object_id, base_version)
23
23
  base_inventory = Stanford::ContentInventory.new.inventory_from_cm(base_cm_pathname.read, object_id, subset, base_version)
24
24
  rescue Moab::ObjectNotFoundException, Moab::FileNotFoundException
25
25
  # Create a skeletal FileInventory object, containing no file entries
@@ -41,7 +41,7 @@ module Stanford
41
41
  new_inventory = Stanford::ContentInventory.new.inventory_from_cm(new_content_metadata, object_id, 'preserve')
42
42
  begin
43
43
  # ObjectNotFoundException is raised if the object does not exist in storage
44
- version_id ||= self.current_version(object_id)
44
+ version_id ||= current_version(object_id)
45
45
  storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id)
46
46
  signature_catalog = storage_object_version.signature_catalog
47
47
  rescue Moab::ObjectNotFoundException
@@ -56,8 +56,8 @@ module Stanford
56
56
  # @param version_id [Integer] The ID of the version whose file data is to be used, if nil use latest version
57
57
  # @return [String] Returns a remediated copy of the contentMetadata with fixity data filled in
58
58
  def self.cm_remediate(object_id, version_id = nil)
59
- cm = self.retrieve_file('metadata', 'contentMetadata.xml', object_id, version_id)
60
- group = self.retrieve_file_group('content', object_id, version_id)
59
+ cm = retrieve_file('metadata', 'contentMetadata.xml', object_id, version_id)
60
+ group = retrieve_file_group('content', object_id, version_id)
61
61
  Stanford::ContentInventory.new.remediate_content_metadata(cm, group)
62
62
  end
63
63
  end
metadata CHANGED
@@ -1,34 +1,34 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: moab-versioning
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.2.1
4
+ version: 4.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Darren Weber
8
8
  - Richard Anderson
9
9
  - Lynn McRae
10
10
  - Hannah Frost
11
- autorequire:
11
+ autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2018-04-10 00:00:00.000000000 Z
14
+ date: 2021-06-01 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
- name: confstruct
17
+ name: druid-tools
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: '0'
22
+ version: 1.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '0'
29
+ version: 1.0.0
30
30
  - !ruby/object:Gem::Dependency
31
- name: nokogiri
31
+ name: json
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - ">="
@@ -42,7 +42,7 @@ dependencies:
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  - !ruby/object:Gem::Dependency
45
- name: nokogiri-happymapper
45
+ name: nokogiri
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - ">="
@@ -56,7 +56,7 @@ dependencies:
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
58
  - !ruby/object:Gem::Dependency
59
- name: json
59
+ name: nokogiri-happymapper
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - ">="
@@ -70,21 +70,7 @@ dependencies:
70
70
  - !ruby/object:Gem::Version
71
71
  version: '0'
72
72
  - !ruby/object:Gem::Dependency
73
- name: druid-tools
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: 1.0.0
79
- type: :runtime
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: 1.0.0
86
- - !ruby/object:Gem::Dependency
87
- name: equivalent-xml
73
+ name: coveralls
88
74
  requirement: !ruby/object:Gem::Requirement
89
75
  requirements:
90
76
  - - ">="
@@ -98,7 +84,7 @@ dependencies:
98
84
  - !ruby/object:Gem::Version
99
85
  version: '0'
100
86
  - !ruby/object:Gem::Dependency
101
- name: rake
87
+ name: equivalent-xml
102
88
  requirement: !ruby/object:Gem::Requirement
103
89
  requirements:
104
90
  - - ">="
@@ -112,7 +98,7 @@ dependencies:
112
98
  - !ruby/object:Gem::Version
113
99
  version: '0'
114
100
  - !ruby/object:Gem::Dependency
115
- name: rspec
101
+ name: pry-byebug
116
102
  requirement: !ruby/object:Gem::Requirement
117
103
  requirements:
118
104
  - - ">="
@@ -126,7 +112,7 @@ dependencies:
126
112
  - !ruby/object:Gem::Version
127
113
  version: '0'
128
114
  - !ruby/object:Gem::Dependency
129
- name: coveralls
115
+ name: rake
130
116
  requirement: !ruby/object:Gem::Requirement
131
117
  requirements:
132
118
  - - ">="
@@ -140,7 +126,7 @@ dependencies:
140
126
  - !ruby/object:Gem::Version
141
127
  version: '0'
142
128
  - !ruby/object:Gem::Dependency
143
- name: pry-byebug
129
+ name: rspec
144
130
  requirement: !ruby/object:Gem::Requirement
145
131
  requirements:
146
132
  - - ">="
@@ -159,28 +145,28 @@ dependencies:
159
145
  requirements:
160
146
  - - "~>"
161
147
  - !ruby/object:Gem::Version
162
- version: 0.50.0
148
+ version: '1.7'
163
149
  type: :development
164
150
  prerelease: false
165
151
  version_requirements: !ruby/object:Gem::Requirement
166
152
  requirements:
167
153
  - - "~>"
168
154
  - !ruby/object:Gem::Version
169
- version: 0.50.0
155
+ version: '1.7'
170
156
  - !ruby/object:Gem::Dependency
171
157
  name: rubocop-rspec
172
158
  requirement: !ruby/object:Gem::Requirement
173
159
  requirements:
174
160
  - - "~>"
175
161
  - !ruby/object:Gem::Version
176
- version: 1.18.0
162
+ version: '2.1'
177
163
  type: :development
178
164
  prerelease: false
179
165
  version_requirements: !ruby/object:Gem::Requirement
180
166
  requirements:
181
167
  - - "~>"
182
168
  - !ruby/object:Gem::Version
183
- version: 1.18.0
169
+ version: '2.1'
184
170
  description: Contains classes to process digital object version content and metadata
185
171
  email:
186
172
  - darren.weber@stanford.edu
@@ -229,24 +215,23 @@ homepage: https://github.com/sul-dlss/moab-versioning
229
215
  licenses:
230
216
  - Apache-2.0
231
217
  metadata: {}
232
- post_install_message:
218
+ post_install_message:
233
219
  rdoc_options: []
234
220
  require_paths:
235
221
  - lib
236
222
  required_ruby_version: !ruby/object:Gem::Requirement
237
223
  requirements:
238
- - - "~>"
224
+ - - ">="
239
225
  - !ruby/object:Gem::Version
240
- version: '2.1'
226
+ version: '2.6'
241
227
  required_rubygems_version: !ruby/object:Gem::Requirement
242
228
  requirements:
243
229
  - - ">="
244
230
  - !ruby/object:Gem::Version
245
231
  version: '0'
246
232
  requirements: []
247
- rubyforge_project:
248
- rubygems_version: 2.6.11
249
- signing_key:
233
+ rubygems_version: 3.1.4
234
+ signing_key:
250
235
  specification_version: 4
251
236
  summary: Ruby implementation of digital object versioning toolkit used by the SULAIR
252
237
  Digital Library