dor-services 6.8.0 → 7.0.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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/config/config_defaults.yml +0 -27
  3. data/config/dev_console_env.rb.example +0 -17
  4. data/lib/dor-services.rb +9 -73
  5. data/lib/dor/config.rb +1 -30
  6. data/lib/dor/datastreams/content_metadata_ds.rb +8 -0
  7. data/lib/dor/datastreams/desc_metadata_ds.rb +19 -0
  8. data/lib/dor/datastreams/identity_metadata_ds.rb +65 -0
  9. data/lib/dor/datastreams/rights_metadata_ds.rb +14 -2
  10. data/lib/dor/datastreams/workflow_definition_ds.rb +1 -1
  11. data/lib/dor/datastreams/workflow_ds.rb +0 -15
  12. data/lib/dor/indexers/identifiable_indexer.rb +8 -4
  13. data/lib/dor/indexers/releasable_indexer.rb +7 -1
  14. data/lib/dor/models/abstract.rb +143 -8
  15. data/lib/dor/models/admin_policy_object.rb +0 -3
  16. data/lib/dor/models/collection.rb +0 -2
  17. data/lib/dor/models/concerns/embargoable.rb +7 -60
  18. data/lib/dor/models/etd.rb +100 -0
  19. data/lib/dor/models/item.rb +12 -28
  20. data/lib/dor/models/part.rb +18 -0
  21. data/lib/dor/models/set.rb +0 -2
  22. data/lib/dor/services/collection_service.rb +36 -0
  23. data/lib/dor/services/embargo_service.rb +93 -0
  24. data/lib/dor/services/ontology.rb +0 -18
  25. data/lib/dor/services/public_desc_metadata_service.rb +7 -11
  26. data/lib/dor/services/search_service.rb +0 -40
  27. data/lib/dor/version.rb +1 -1
  28. data/lib/dor/workflow/document.rb +0 -7
  29. metadata +15 -78
  30. data/lib/dor/models/concerns/assembleable.rb +0 -18
  31. data/lib/dor/models/concerns/contentable.rb +0 -185
  32. data/lib/dor/models/concerns/describable.rb +0 -82
  33. data/lib/dor/models/concerns/eventable.rb +0 -18
  34. data/lib/dor/models/concerns/geoable.rb +0 -14
  35. data/lib/dor/models/concerns/governable.rb +0 -101
  36. data/lib/dor/models/concerns/identifiable.rb +0 -172
  37. data/lib/dor/models/concerns/itemizable.rb +0 -42
  38. data/lib/dor/models/concerns/preservable.rb +0 -46
  39. data/lib/dor/models/concerns/processable.rb +0 -86
  40. data/lib/dor/models/concerns/publishable.rb +0 -76
  41. data/lib/dor/models/concerns/releaseable.rb +0 -118
  42. data/lib/dor/models/concerns/rightsable.rb +0 -25
  43. data/lib/dor/models/concerns/shelvable.rb +0 -15
  44. data/lib/dor/models/concerns/versionable.rb +0 -72
  45. data/lib/dor/services/ability.rb +0 -77
  46. data/lib/dor/services/cleanup_reset_service.rb +0 -103
  47. data/lib/dor/services/datastream_builder.rb +0 -96
  48. data/lib/dor/services/decommission_service.rb +0 -31
  49. data/lib/dor/services/digital_stacks_service.rb +0 -125
  50. data/lib/dor/services/dublin_core_service.rb +0 -45
  51. data/lib/dor/services/file_metadata_merge_service.rb +0 -71
  52. data/lib/dor/services/indexing_service.rb +0 -131
  53. data/lib/dor/services/merge_service.rb +0 -105
  54. data/lib/dor/services/public_xml_service.rb +0 -116
  55. data/lib/dor/services/publish_metadata_service.rb +0 -99
  56. data/lib/dor/services/reset_workspace_service.rb +0 -27
  57. data/lib/dor/services/sdr_ingest_service.rb +0 -172
  58. data/lib/dor/services/secondary_file_name_service.rb +0 -10
  59. data/lib/dor/services/shelving_service.rb +0 -69
  60. data/lib/dor/services/technical_metadata_service.rb +0 -232
  61. data/lib/dor/services/version_service.rb +0 -84
  62. data/lib/dor/utils/sdr_client.rb +0 -94
@@ -2,14 +2,7 @@
2
2
 
3
3
  module Dor
4
4
  class Item < Dor::Abstract
5
- include Shelvable
6
5
  include Embargoable
7
- include Publishable
8
- include Itemizable
9
- include Assembleable
10
- include Contentable
11
- include Geoable
12
- include Releaseable
13
6
 
14
7
  has_object_type 'item'
15
8
 
@@ -22,26 +15,17 @@ module Dor
22
15
  WorkflowsIndexer
23
16
  )
24
17
 
25
- has_metadata name: 'technicalMetadata', type: TechnicalMetadataDS, label: 'Technical Metadata', control_group: 'M'
26
-
27
- def build_technicalMetadata_datastream(_ds = nil)
28
- TechnicalMetadataService.add_update_technical_metadata(self)
29
- end
18
+ has_metadata name: 'technicalMetadata',
19
+ type: TechnicalMetadataDS,
20
+ label: 'Technical Metadata',
21
+ control_group: 'M'
22
+ has_metadata name: 'contentMetadata',
23
+ type: Dor::ContentMetadataDS,
24
+ label: 'Content Metadata',
25
+ control_group: 'M'
26
+ has_metadata name: 'geoMetadata',
27
+ type: Dor::GeoMetadataDS,
28
+ label: 'Geographic Information Metadata in ISO 19139',
29
+ control_group: 'M'
30
30
  end
31
31
  end
32
-
33
- # Describable = Descriptive metadata.
34
- # Embargoable = Time limits and processes for embargoed materials.
35
- # Governable = Relationships to collections and codified administrative policies.
36
- # Identifiable = Object identity and source metadata.
37
- # Itemizable = Hierarchical content metadata.
38
- # Preservable = Provenance and technical metadata; preservation repository transfer.
39
- # Processable = Workflow.
40
- # Publishable = Transfer of metadata to discovery and access systems.
41
- # Shelvable = Transfer of content to digital stacks.
42
- # Geoable = Descriptive metadata for GIS in ISO 19139/19110.
43
-
44
- # Required for all DOR objects:
45
- # - Identifiable
46
- # - Governable
47
- # - Describable
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dor
4
+ # Represents a piece of an ETD submission
5
+ class Part < ActiveFedora::Base
6
+ belongs_to :parents, property: :is_part_of, class_name: 'Etd' # relationship between main pdf and parent etd
7
+ belongs_to :supplemental_file_for, property: :is_constituent_of, class_name: 'Etd' # relationship between supplemental file and parent etd
8
+ belongs_to :permission_file_for, property: :is_dependent_of, class_name: 'Etd' # relationsihip between permission file and parent etd
9
+
10
+ has_metadata name: 'properties', type: ActiveFedora::SimpleDatastream, versionable: false do |m|
11
+ m.field 'file_name', :string
12
+ m.field 'size', :string
13
+ m.field 'label', :string
14
+ end
15
+
16
+ has_metadata name: 'DC', type: Dor::SimpleDublinCoreDs, versionable: false, label: 'DC', control_group: 'X'
17
+ end
18
+ end
@@ -2,8 +2,6 @@
2
2
 
3
3
  module Dor
4
4
  class Set < Dor::Abstract
5
- include Publishable
6
-
7
5
  has_many :members, property: :is_member_of_collection, class_name: 'ActiveFedora::Base'
8
6
  has_object_type 'set'
9
7
 
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dor
4
+ # Adds and removes collections to and from objects
5
+ # Collections are added as Compollections and Sets.
6
+ class CollectionService
7
+ def initialize(obj)
8
+ @obj = obj
9
+ end
10
+
11
+ def add(collection_or_druid)
12
+ collection = dereference(collection_or_druid)
13
+ obj.collections << collection
14
+ obj.sets << collection
15
+ end
16
+
17
+ def remove(collection_or_druid)
18
+ collection = dereference(collection_or_druid)
19
+ obj.collections.delete(collection)
20
+ obj.sets.delete(collection)
21
+ end
22
+
23
+ private
24
+
25
+ attr_reader :obj
26
+
27
+ def dereference(collection_or_druid)
28
+ case collection_or_druid
29
+ when String
30
+ Dor::Collection.find(collection_or_druid)
31
+ when Dor::Collection
32
+ collection_or_druid
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,93 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dor
4
+ # Sets up and removes embargos on an object
5
+ # This assumes the object has embargoMetadata, rightsMetadata, and events datastreams
6
+ class EmbargoService
7
+ def initialize(obj)
8
+ @obj = obj
9
+ end
10
+
11
+ # Lift the embargo from the object
12
+ # Sets embargo status to released in embargoMetadata
13
+ # Modifies rightsMetadata to remove embargoReleaseDate and updates/adds access from embargoMetadata/releaseAccess
14
+ # @param [String] release_agent name of the person, application or thing that released embargo
15
+ # @note The caller should save the object to fedora to commit the changes
16
+ def release(release_agent)
17
+ # Set status to released
18
+ embargoMetadata.status = 'released'
19
+
20
+ # Remove all read acces nodes
21
+ rights_xml = rightsMetadata.ng_xml
22
+ rightsMetadata.ng_xml_will_change!
23
+ rights_xml.xpath("//rightsMetadata/access[@type='read']").each(&:remove)
24
+
25
+ # Replace rights <access> nodes with those from embargoMetadta
26
+ release_access = embargoMetadata.release_access_node
27
+ release_access.xpath('//releaseAccess/access').each do |new_access|
28
+ access_sibling = rights_xml.at_xpath('//rightsMetadata/access[last()]')
29
+ if access_sibling
30
+ access_sibling.add_next_sibling(new_access.clone)
31
+ else
32
+ rights_xml.root.add_child(new_access.clone)
33
+ end
34
+ end
35
+
36
+ events.add_event('embargo', release_agent, 'Embargo released')
37
+ end
38
+
39
+ def release_20_pct_vis(release_agent)
40
+ # Set status to released
41
+ embargoMetadata.twenty_pct_status = 'released'
42
+
43
+ # Remove all read acces nodes
44
+ rights_xml = rightsMetadata.ng_xml
45
+ rightsMetadata.ng_xml_will_change!
46
+ rights_xml.xpath("//rightsMetadata/access[@type='read']").each(&:remove)
47
+
48
+ # Replace rights <access> nodes with 1 machine/world node
49
+ access_sibling = rights_xml.at_xpath('//rightsMetadata/access[last()]')
50
+ if access_sibling
51
+ access_sibling.add_next_sibling(world_doc.root.clone)
52
+ else
53
+ rights_xml.root.add_child(world_doc.root.clone)
54
+ end
55
+
56
+ events.add_event('embargo', release_agent, '20% Visibility Embargo released')
57
+ end
58
+
59
+ def update(new_date)
60
+ raise ArgumentError, 'You cannot change the embargo date of an item that is not embargoed.' if embargoMetadata.status != 'embargoed'
61
+ raise ArgumentError, 'You cannot set the embargo date to a past date.' if new_date.past?
62
+
63
+ updated = false
64
+ rightsMetadata.ng_xml.search('//embargoReleaseDate').each do |node|
65
+ node.content = new_date.beginning_of_day.utc.xmlschema
66
+ updated = true
67
+ end
68
+ rightsMetadata.ng_xml_will_change!
69
+ rightsMetadata.save
70
+ raise 'No release date in rights metadata, cannot proceed!' unless updated
71
+
72
+ embargoMetadata.ng_xml.xpath('//releaseDate').each do |node|
73
+ node.content = new_date.beginning_of_day.utc.xmlschema
74
+ end
75
+ embargoMetadata.ng_xml_will_change!
76
+ embargoMetadata.save
77
+ end
78
+
79
+ private
80
+
81
+ attr_reader :obj
82
+
83
+ delegate :rightsMetadata, :embargoMetadata, :events, to: :obj
84
+
85
+ def world_doc
86
+ Nokogiri::XML::Builder.new do |xml|
87
+ xml.access(type: 'read') do
88
+ xml.machine { xml.world }
89
+ end
90
+ end.doc
91
+ end
92
+ end
93
+ end
@@ -2,29 +2,11 @@
2
2
 
3
3
  module Dor
4
4
  class Ontology
5
- extend Deprecation
6
- self.deprecation_horizon = 'dor-services version 7.0.0'
7
-
8
5
  class << self
9
- def [](key)
10
- Deprecation.warn(self, "#{self}.[] is deprecated and will be removed in #{Dor::Ontology.deprecation_horizon}. Use `property' instead.")
11
- @data[key]
12
- end
13
-
14
6
  def key?(key)
15
7
  @data.key?(key)
16
8
  end
17
9
 
18
- def include?(key)
19
- Deprecation.warn(self, "#{self}.include? is deprecated and will be removed in #{Dor::Ontology.deprecation_horizon}. Use `key?' instead.")
20
- @data.include?(key)
21
- end
22
-
23
- def map(&block)
24
- Deprecation.warn(self, "#{self}.map is deprecated and will be removed in #{Dor::Ontology.deprecation_horizon}. Use `options' instead.")
25
- @data.map(&block)
26
- end
27
-
28
10
  # Yields each term to the block provided
29
11
  def options
30
12
  @data.map do |k, _v|
@@ -81,11 +81,9 @@ module Dor
81
81
  # expand constituent relations into relatedItem references -- see JUMBO-18
82
82
  # @return [Void]
83
83
  def add_constituent_relations!
84
- object.public_relationships.search('//rdf:RDF/rdf:Description/fedora:isConstituentOf',
85
- 'fedora' => 'info:fedora/fedora-system:def/relations-external#',
86
- 'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#').each do |parent|
84
+ object.relationships(:is_constituent_of).each do |parent|
87
85
  # fetch the parent object to get title
88
- druid = parent['rdf:resource'].gsub(/^info:fedora\//, '')
86
+ druid = parent.gsub(/^info:fedora\//, '')
89
87
  parent_item = Dor.find(druid)
90
88
 
91
89
  # create the MODS relation
@@ -96,7 +94,7 @@ module Dor
96
94
  # load the title from the parent's DC.title
97
95
  titleInfo = doc.create_element 'titleInfo'
98
96
  title = doc.create_element 'title'
99
- title.content = Dor::Describable.get_collection_title(parent_item)
97
+ title.content = parent_item.full_title
100
98
  titleInfo << title
101
99
  relatedItem << titleInfo
102
100
 
@@ -116,15 +114,13 @@ module Dor
116
114
  # For use in published mods and mods-to-DC conversion.
117
115
  # @return [Void]
118
116
  def add_collection_reference!
119
- collections = object.public_relationships.search('//rdf:RDF/rdf:Description/fedora:isMemberOfCollection',
120
- 'fedora' => 'info:fedora/fedora-system:def/relations-external#',
121
- 'rdf' => 'http://www.w3.org/1999/02/22-rdf-syntax-ns#')
117
+ collections = object.relationships(:is_member_of_collection)
122
118
  return if collections.empty?
123
119
 
124
120
  remove_related_item_nodes_for_collections!
125
121
 
126
- collections.each do |collection_node|
127
- collection_druid = collection_node['rdf:resource'].gsub('info:fedora/', '')
122
+ collections.each do |collection_uri|
123
+ collection_druid = collection_uri.gsub('info:fedora/', '')
128
124
  add_related_item_node_for_collection! collection_druid
129
125
  end
130
126
  end
@@ -144,7 +140,7 @@ module Dor
144
140
  end
145
141
 
146
142
  title_node = Nokogiri::XML::Node.new('title', doc)
147
- title_node.content = Dor::Describable.get_collection_title(collection_obj)
143
+ title_node.content = collection_obj.full_title
148
144
 
149
145
  title_info_node = Nokogiri::XML::Node.new('titleInfo', doc)
150
146
  title_info_node.add_child(title_node)
@@ -5,51 +5,11 @@ require 'active_support/core_ext'
5
5
 
6
6
  module Dor
7
7
  class SearchService
8
- extend Deprecation
9
- RISEARCH_TEMPLATE = "select $object from <#ri> where $object <dc:identifier> '%s'"
10
- @@index_version = nil
11
-
12
8
  class << self
13
9
  def index_version
14
10
  Dor::VERSION
15
11
  end
16
12
 
17
- # @deprecated because this depends on Fedora 3 having sparql turned on
18
- def risearch(query, opts = {})
19
- Deprecation.warn(self, 'risearch is deprecated and will be removed in dor-services 7')
20
- client = Config.fedora.client['risearch']
21
- client.options[:timeout] = opts.delete(:timeout)
22
- query_params = {
23
- type: 'tuples',
24
- lang: 'itql',
25
- format: 'CSV',
26
- limit: '1000',
27
- stream: 'on',
28
- query: query
29
- }.merge(opts)
30
- result = client.post(query_params)
31
- result.split(/\n/)[1..-1].collect { |pid| pid.chomp.sub(/^info:fedora\//, '') }
32
- end
33
-
34
- # @deprecated because this depends on Fedora 3 having sparql turned on
35
- def iterate_over_pids(opts = {})
36
- Deprecation.warn(self, 'iterate_over_pids is deprecated and will be removed in dor-services 7')
37
- opts[:query] ||= 'select $object from <#ri> where $object <info:fedora/fedora-system:def/model#label> $label'
38
- opts[:in_groups_of] ||= 100
39
- opts[:mode] ||= :single
40
- start = 0
41
- pids = Dor::SearchService.risearch("#{opts[:query]} limit #{opts[:in_groups_of]} offset #{start}")
42
- while pids.present?
43
- if opts[:mode] == :single
44
- pids.each { |pid| yield pid }
45
- else
46
- yield pids
47
- end
48
- start += pids.length
49
- pids = Dor::SearchService.risearch("#{opts[:query]} limit #{opts[:in_groups_of]} offset #{start}")
50
- end
51
- end
52
-
53
13
  def query(query, args = {})
54
14
  params = args.merge(q: query)
55
15
  params[:start] ||= 0
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.8.0'
4
+ VERSION = '7.0.0'
5
5
  end
@@ -3,7 +3,6 @@
3
3
  module Dor
4
4
  module Workflow
5
5
  class Document
6
- extend Deprecation
7
6
  include ::OM::XML::Document
8
7
 
9
8
  set_terminology do |t|
@@ -37,12 +36,6 @@ module Dor
37
36
  processes.map { |proc| proc.priority.to_i }.detect(0) { |p| p > 0 }
38
37
  end
39
38
 
40
- # @return [Boolean] if any process node does not have version, returns true, false otherwise (all processes have version)
41
- def active?
42
- ng_xml.at_xpath('/workflow/process[not(@version)]') ? true : false
43
- end
44
- deprecation_deprecate active?: 'Workflow::Document#active? has moved to Argo. This implementation does not work with the new workflow server, which returns all versions'
45
-
46
39
  # @return [Dor::WorkflowDefinitionDs]
47
40
  def definition
48
41
  @definition ||= begin
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.8.0
4
+ version: 7.0.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-04-11 00:00:00.000000000 Z
17
+ date: 2019-04-24 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: active-fedora
@@ -40,22 +40,16 @@ dependencies:
40
40
  name: activesupport
41
41
  requirement: !ruby/object:Gem::Requirement
42
42
  requirements:
43
- - - ">="
44
- - !ruby/object:Gem::Version
45
- version: 4.2.10
46
- - - "<"
43
+ - - "~>"
47
44
  - !ruby/object:Gem::Version
48
- version: 6.0.0
45
+ version: '5.1'
49
46
  type: :runtime
50
47
  prerelease: false
51
48
  version_requirements: !ruby/object:Gem::Requirement
52
49
  requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 4.2.10
56
- - - "<"
50
+ - - "~>"
57
51
  - !ruby/object:Gem::Version
58
- version: 6.0.0
52
+ version: '5.1'
59
53
  - !ruby/object:Gem::Dependency
60
54
  name: confstruct
61
55
  requirement: !ruby/object:Gem::Requirement
@@ -132,20 +126,6 @@ dependencies:
132
126
  - - ">="
133
127
  - !ruby/object:Gem::Version
134
128
  version: 1.8.1
135
- - !ruby/object:Gem::Dependency
136
- name: net-sftp
137
- requirement: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - "~>"
140
- - !ruby/object:Gem::Version
141
- version: '2.1'
142
- type: :runtime
143
- prerelease: false
144
- version_requirements: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '2.1'
149
129
  - !ruby/object:Gem::Dependency
150
130
  name: nokogiri
151
131
  requirement: !ruby/object:Gem::Requirement
@@ -325,19 +305,19 @@ dependencies:
325
305
  - !ruby/object:Gem::Version
326
306
  version: 1.2.0
327
307
  - !ruby/object:Gem::Dependency
328
- name: dor-workflow-service
308
+ name: dor-workflow-client
329
309
  requirement: !ruby/object:Gem::Requirement
330
310
  requirements:
331
- - - "~>"
311
+ - - '='
332
312
  - !ruby/object:Gem::Version
333
- version: '2.11'
313
+ version: 3.0.0.rc1
334
314
  type: :runtime
335
315
  prerelease: false
336
316
  version_requirements: !ruby/object:Gem::Requirement
337
317
  requirements:
338
- - - "~>"
318
+ - - '='
339
319
  - !ruby/object:Gem::Version
340
- version: '2.11'
320
+ version: 3.0.0.rc1
341
321
  - !ruby/object:Gem::Dependency
342
322
  name: druid-tools
343
323
  requirement: !ruby/object:Gem::Requirement
@@ -520,20 +500,6 @@ dependencies:
520
500
  - - ">="
521
501
  - !ruby/object:Gem::Version
522
502
  version: '0'
523
- - !ruby/object:Gem::Dependency
524
- name: vcr
525
- requirement: !ruby/object:Gem::Requirement
526
- requirements:
527
- - - ">="
528
- - !ruby/object:Gem::Version
529
- version: '0'
530
- type: :development
531
- prerelease: false
532
- version_requirements: !ruby/object:Gem::Requirement
533
- requirements:
534
- - - ">="
535
- - !ruby/object:Gem::Version
536
- version: '0'
537
503
  - !ruby/object:Gem::Dependency
538
504
  name: webmock
539
505
  requirement: !ruby/object:Gem::Requirement
@@ -609,63 +575,34 @@ files:
609
575
  - lib/dor/models/admin_policy_object.rb
610
576
  - lib/dor/models/agreement.rb
611
577
  - lib/dor/models/collection.rb
612
- - lib/dor/models/concerns/assembleable.rb
613
- - lib/dor/models/concerns/contentable.rb
614
- - lib/dor/models/concerns/describable.rb
615
578
  - lib/dor/models/concerns/embargoable.rb
616
- - lib/dor/models/concerns/eventable.rb
617
- - lib/dor/models/concerns/geoable.rb
618
- - lib/dor/models/concerns/governable.rb
619
- - lib/dor/models/concerns/identifiable.rb
620
- - lib/dor/models/concerns/itemizable.rb
621
- - lib/dor/models/concerns/preservable.rb
622
- - lib/dor/models/concerns/processable.rb
623
- - lib/dor/models/concerns/publishable.rb
624
- - lib/dor/models/concerns/releaseable.rb
625
- - lib/dor/models/concerns/rightsable.rb
626
- - lib/dor/models/concerns/shelvable.rb
627
- - lib/dor/models/concerns/versionable.rb
579
+ - lib/dor/models/etd.rb
628
580
  - lib/dor/models/item.rb
581
+ - lib/dor/models/part.rb
629
582
  - lib/dor/models/set.rb
630
583
  - lib/dor/models/workflow_object.rb
631
584
  - lib/dor/models/workflow_solr_document.rb
632
585
  - lib/dor/rest_resource_factory.rb
633
- - lib/dor/services/ability.rb
634
- - lib/dor/services/cleanup_reset_service.rb
635
586
  - lib/dor/services/cleanup_service.rb
587
+ - lib/dor/services/collection_service.rb
636
588
  - lib/dor/services/create_workflow_service.rb
637
589
  - lib/dor/services/creative_commons_license_service.rb
638
- - lib/dor/services/datastream_builder.rb
639
- - lib/dor/services/decommission_service.rb
640
- - lib/dor/services/digital_stacks_service.rb
641
- - lib/dor/services/dublin_core_service.rb
642
- - lib/dor/services/file_metadata_merge_service.rb
643
- - lib/dor/services/indexing_service.rb
644
- - lib/dor/services/merge_service.rb
590
+ - lib/dor/services/embargo_service.rb
645
591
  - lib/dor/services/metadata_handlers/catalog_handler.rb
646
592
  - lib/dor/services/metadata_service.rb
647
593
  - lib/dor/services/mods2dc.xslt
648
594
  - lib/dor/services/ontology.rb
649
595
  - lib/dor/services/open_data_license_service.rb
650
596
  - lib/dor/services/public_desc_metadata_service.rb
651
- - lib/dor/services/public_xml_service.rb
652
- - lib/dor/services/publish_metadata_service.rb
653
597
  - lib/dor/services/release_tag_service.rb
654
- - lib/dor/services/reset_workspace_service.rb
655
- - lib/dor/services/sdr_ingest_service.rb
656
598
  - lib/dor/services/search_service.rb
657
- - lib/dor/services/secondary_file_name_service.rb
658
- - lib/dor/services/shelving_service.rb
659
599
  - lib/dor/services/status_service.rb
660
600
  - lib/dor/services/suri_service.rb
661
601
  - lib/dor/services/tag_service.rb
662
- - lib/dor/services/technical_metadata_service.rb
663
602
  - lib/dor/services/thumbnail_service.rb
664
- - lib/dor/services/version_service.rb
665
603
  - lib/dor/utils/hydrus_shims.rb
666
604
  - lib/dor/utils/ng_tidy.rb
667
605
  - lib/dor/utils/predicate_patch.rb
668
- - lib/dor/utils/sdr_client.rb
669
606
  - lib/dor/utils/solr_doc_helper.rb
670
607
  - lib/dor/version.rb
671
608
  - lib/dor/workflow/document.rb