dor-services 6.8.0 → 7.0.0

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