dor-services 6.1.14 → 6.2.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
  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