moab-versioning 4.2.1 → 4.4.2

Sign up to get free protection for your applications and to get access to all the features.
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