dor-services 6.1.14 → 6.2.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90689318d87fa2d34cad2f9df2abe024b83732e3355e594d5fceadc571623dff
4
- data.tar.gz: 3dd75f93c07aff83bc289df53d2da635a5b9bf2288b3f0ce0accbb6c8d4d7bc8
3
+ metadata.gz: a9ab63108ab2c8ddd29600d7a9facf709a67dc52474d7c0de6becac108664807
4
+ data.tar.gz: 332ce5d6ceef2432a7135788bc87de7d28ec108ff9820bc5c4e253ba0f8f700a
5
5
  SHA512:
6
- metadata.gz: 2cced9204b98f138a77c158145d410b870cd7808c32eb983cc589c935b740dfbc1c51e8b731e697269ad15307e20f64312e49ba522e414c85828e1fb5876e533
7
- data.tar.gz: a21b1cce429f00d0c88392368ab615e31064d5dd48793e3d1e868b02a3977ca3434eed45b472dfe49b77f9802ea309dffb79f56ca11b399e6b2f10eb7d77d28d
6
+ metadata.gz: 5742a34bb7b5250df9ca07b5c2b4291f59b165acc1050dbc9f76f9bd185d4a5bd0bc961552ab20e40d13b42c631ac0c0c3c515347ae9476b2811ec5dd75f2ad0
7
+ data.tar.gz: edb36ac7a3bcce46e5d3111c4a23bf69fed05afda48c82d42f0bbcbcca564d128b180774d7cf6231e168e7b3301af40a15a552f57f226a97259e582173a1c29d
@@ -3,6 +3,10 @@
3
3
  module Dor
4
4
  class Exception < ::StandardError; end
5
5
  class ParameterError < RuntimeError; end
6
+
7
+ # Raised when the data does not conform to expectations
8
+ class DataError < RuntimeError; end
9
+
6
10
  class DuplicateIdError < RuntimeError
7
11
  attr_reader :pid
8
12
 
@@ -13,7 +13,7 @@ module Dor
13
13
  def initiate_apo_workflow(name)
14
14
  CreateWorkflowService.create_workflow(self, name: name, create_ds: !new_record?)
15
15
  end
16
- deprecation_deprecate initiate_apo_workflow: 'Use Dor::CreateWorkflowService.create_workflow instead'
16
+ deprecation_deprecate initiate_apo_workflow: 'Use Dor::Services::Client.object(object_identifier).workflow.create(wf_name:) instead'
17
17
 
18
18
  def reset_to_apo_default
19
19
  rightsMetadata.content = admin_policy_object.rightsMetadata.ng_xml
@@ -39,7 +39,7 @@ module Dor
39
39
  def default_workflow_lane
40
40
  return 'default' if admin_policy_object.nil? # TODO: log warning?
41
41
 
42
- admin_md = admin_policy_object.administrativeMetadata
42
+ admin_md = admin_policy_object.datastreams['administrativeMetadata']
43
43
  return 'default' unless admin_md.respond_to?(:default_workflow_lane) # Some APOs don't have this datastream
44
44
 
45
45
  lane = admin_md.default_workflow_lane
@@ -3,6 +3,9 @@
3
3
  module Dor
4
4
  # Merges contentMetadata from several objects into one.
5
5
  class FileMetadataMergeService
6
+ extend Deprecation
7
+ self.deprecation_horizon = 'dor-services version 7.0.0'
8
+
6
9
  # @param [Array<String>] secondary_druids ids of the secondary objects that will get their contentMetadata merged into this one
7
10
  def self.copy_file_resources(primary, secondary_druids)
8
11
  merge_service = FileMetadataMergeService.new primary, secondary_druids
@@ -59,6 +62,7 @@ module Dor
59
62
  end
60
63
  end
61
64
  end
65
+ deprecation_deprecate copy_file_resources: 'No longer used by any DLSS code'
62
66
 
63
67
  private
64
68
 
@@ -2,6 +2,9 @@
2
2
 
3
3
  module Dor
4
4
  class MergeService
5
+ extend Deprecation
6
+ self.deprecation_horizon = 'dor-services version 7.0.0'
7
+
5
8
  def self.merge_into_primary(primary_druid, secondary_druids, tag, logger = nil)
6
9
  # TODO: test the secondary_obj to see if we've processed it already
7
10
  merge_service = Dor::MergeService.new primary_druid, secondary_druids, tag, logger
@@ -29,12 +32,14 @@ module Dor
29
32
  non_editable = @secondary_objs.detect { |obj| !obj.allows_modification? }
30
33
  raise Dor::Exception, "Secondary object is not editable: #{non_editable.pid}" if non_editable
31
34
  end
35
+ deprecation_deprecate check_objects_editable: 'No longer used by any DLSS code'
32
36
 
33
37
  def move_metadata_and_content
34
38
  FileMetadataMergeService.copy_file_resources @primary, @secondary_pids
35
39
  @primary.save
36
40
  copy_workspace_content
37
41
  end
42
+ deprecation_deprecate move_metadata_and_content: 'No longer used by any DLSS code'
38
43
 
39
44
  # Copies the content from the secondary object workspace to the primary object's workspace
40
45
  # Depends on Dor::Config.stacks.local_workspace_root
@@ -59,6 +64,7 @@ module Dor
59
64
  end
60
65
  end
61
66
  end
67
+ deprecation_deprecate copy_workspace_content: 'No longer used by any DLSS code'
62
68
 
63
69
  def decommission_secondaries
64
70
  @secondary_objs.each do |secondary_obj|
@@ -77,6 +83,8 @@ module Dor
77
83
  end
78
84
  end
79
85
  end
86
+ deprecation_deprecate decommission_secondaries: 'No longer used by any DLSS code'
87
+
80
88
  alias decomission_secondaries decommission_secondaries
81
89
  deprecate decomission_secondaries: 'Use decommission_secondaries instead'
82
90
 
@@ -85,11 +93,13 @@ module Dor
85
93
  def unshelve
86
94
  DigitalStacksService.prune_stacks_dir @current_secondary.pid
87
95
  end
96
+ deprecation_deprecate unshelve: 'No longer used by any DLSS code'
88
97
 
89
98
  # Withdraw item from Purl
90
99
  # TODO: might set workflow status in future for robot to do
91
100
  def unpublish
92
101
  @current_secondary.publish_metadata
93
102
  end
103
+ deprecation_deprecate unpublish: 'No longer used by any DLSS code'
94
104
  end
95
105
  end
@@ -78,33 +78,39 @@ module Dor
78
78
  result.xpath('/contentMetadata/resource/file/checksum').each(&:remove)
79
79
 
80
80
  # support for dereferencing links via externalFile element(s) to the source (child) item - see JUMBO-19
81
- result.xpath('/contentMetadata/resource/externalFile').each do |externalFile|
82
- # enforce pre-conditions that resourceId, objectId, fileId are required
83
- src_resource_id = externalFile['resourceId']
84
- src_druid = externalFile['objectId']
85
- src_file_id = externalFile['fileId']
86
- raise ArgumentError, "Malformed externalFile data: #{externalFile.inspect}" if [src_resource_id, src_file_id, src_druid].map(&:blank?).any?
87
-
88
- # grab source item
89
- src_item = Dor.find(src_druid)
90
-
91
- # locate and extract the resourceId/fileId elements
92
- doc = src_item.datastreams['contentMetadata'].ng_xml
93
- src_resource = doc.at_xpath("//resource[@id=\"#{src_resource_id}\"]")
94
- src_file = src_resource.at_xpath("file[@id=\"#{src_file_id}\"]")
95
- src_image_data = src_file.at_xpath('imageData')
96
-
97
- # always use title regardless of whether a child label is present
98
- src_label = doc.create_element('label')
99
- src_label.content = src_item.full_title
100
-
101
- # add the extracted label and imageData
102
- externalFile.add_previous_sibling(src_label)
103
- externalFile << src_image_data unless src_image_data.nil?
81
+ result.xpath('/contentMetadata/resource/externalFile').each do |external_file|
82
+ add_data_from_src(external_file)
104
83
  end
105
84
 
106
85
  result
107
86
  end
108
87
  end
88
+
89
+ def add_data_from_src(external_file)
90
+ # enforce pre-conditions that resourceId, objectId, fileId are required
91
+ src_resource_id = external_file['resourceId']
92
+ src_druid = external_file['objectId']
93
+ src_file_id = external_file['fileId']
94
+ raise DataError, "Malformed externalFile data: #{external_file.to_xml}" if [src_resource_id, src_file_id, src_druid].map(&:blank?).any?
95
+
96
+ # grab source item
97
+ src_item = Dor.find(src_druid)
98
+
99
+ # locate and extract the resourceId/fileId elements
100
+ doc = src_item.contentMetadata.ng_xml
101
+ src_resource = doc.at_xpath("//resource[@id=\"#{src_resource_id}\"]")
102
+ src_file = src_resource.at_xpath("file[@id=\"#{src_file_id}\"]")
103
+ raise DataError, "Unable to find a file node with id=\"#{src_file_id}\" (child of #{object.pid})" unless src_file
104
+
105
+ src_image_data = src_file.at_xpath('imageData')
106
+
107
+ # always use title regardless of whether a child label is present
108
+ src_label = doc.create_element('label')
109
+ src_label.content = src_item.full_title
110
+
111
+ # add the extracted label and imageData
112
+ external_file.add_previous_sibling(src_label)
113
+ external_file << src_image_data unless src_image_data.nil?
114
+ end
109
115
  end
110
116
  end
@@ -60,9 +60,10 @@ module Sdr
60
60
  Moab::FileInventoryDifference.parse(response)
61
61
  end
62
62
 
63
- # This is used by Argo
63
+ # This was used by Argo but is no longer used anywhere
64
64
  def get_preserved_file_content(druid, filename, version)
65
- Deprecation.warn(self, 'Sdr::Client.get_preserved_file_content is deprecated and will be removed in dor-services 7. Use Dor::Services::Client.preserved_content instead')
65
+ Deprecation.warn(self, 'Sdr::Client.get_preserved_file_content is deprecated and will be removed in dor-services 7. ' \
66
+ 'Use Dor::Services::Client.object(object_identifier).files.preserved_content(filename:, version:) instead')
66
67
 
67
68
  client["objects/#{druid}/content/#{URI.encode(filename)}?version=#{version}"].get
68
69
  end
data/lib/dor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dor
4
- VERSION = '6.1.14'
4
+ VERSION = '6.2.0'
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor-services
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.1.14
4
+ version: 6.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Klein
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2019-01-18 00:00:00.000000000 Z
17
+ date: 2019-01-23 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: active-fedora
@@ -695,7 +695,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
695
695
  - !ruby/object:Gem::Version
696
696
  version: 1.3.6
697
697
  requirements: []
698
- rubygems_version: 3.0.2
698
+ rubyforge_project:
699
+ rubygems_version: 2.7.6
699
700
  signing_key:
700
701
  specification_version: 4
701
702
  summary: Ruby implmentation of DOR services used by the SULAIR Digital Library