dor-services 5.1.1 → 5.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.
Files changed (68) hide show
  1. checksums.yaml +8 -8
  2. data/lib/dor-services.rb +1 -2
  3. data/lib/dor/config.rb +5 -6
  4. data/lib/dor/datastreams/content_metadata_ds.rb +17 -20
  5. data/lib/dor/datastreams/datastream_spec_solrizer.rb +1 -1
  6. data/lib/dor/datastreams/desc_metadata_ds.rb +7 -7
  7. data/lib/dor/datastreams/embargo_metadata_ds.rb +2 -7
  8. data/lib/dor/datastreams/events_ds.rb +9 -9
  9. data/lib/dor/datastreams/identity_metadata_ds.rb +29 -34
  10. data/lib/dor/datastreams/rights_metadata_ds.rb +1 -1
  11. data/lib/dor/datastreams/role_metadata_ds.rb +0 -1
  12. data/lib/dor/datastreams/simple_dublin_core_ds.rb +12 -13
  13. data/lib/dor/datastreams/version_metadata_ds.rb +11 -15
  14. data/lib/dor/datastreams/workflow_definition_ds.rb +18 -22
  15. data/lib/dor/datastreams/workflow_ds.rb +24 -36
  16. data/lib/dor/migrations/identifiable/assert_adminPolicy.rb +1 -1
  17. data/lib/dor/migrations/identifiable/fix_model_assertions.rb +1 -1
  18. data/lib/dor/migrations/identifiable/record_remediation.rb +2 -2
  19. data/lib/dor/migrations/identifiable/uriify_augmented_contentlocation_refs.rb +1 -1
  20. data/lib/dor/migrations/identifiable/uriify_contentlocation_refs.rb +1 -1
  21. data/lib/dor/migrations/processable/unify_workflows.rb +4 -4
  22. data/lib/dor/migrations/versionable/add_missing_version_md.rb +2 -2
  23. data/lib/dor/models/assembleable.rb +2 -2
  24. data/lib/dor/models/collection.rb +1 -0
  25. data/lib/dor/models/contentable.rb +3 -3
  26. data/lib/dor/models/describable.rb +16 -13
  27. data/lib/dor/models/editable.rb +3 -3
  28. data/lib/dor/models/embargoable.rb +2 -2
  29. data/lib/dor/models/eventable.rb +2 -2
  30. data/lib/dor/models/geoable.rb +14 -18
  31. data/lib/dor/models/governable.rb +1 -1
  32. data/lib/dor/models/identifiable.rb +36 -57
  33. data/lib/dor/models/itemizable.rb +6 -6
  34. data/lib/dor/models/presentable.rb +12 -12
  35. data/lib/dor/models/preservable.rb +2 -5
  36. data/lib/dor/models/processable.rb +19 -25
  37. data/lib/dor/models/publishable.rb +2 -2
  38. data/lib/dor/models/releaseable.rb +165 -212
  39. data/lib/dor/models/shelvable.rb +10 -14
  40. data/lib/dor/models/upgradable.rb +11 -11
  41. data/lib/dor/models/versionable.rb +16 -21
  42. data/lib/dor/models/workflow_object.rb +3 -3
  43. data/lib/dor/services/cleanup_reset_service.rb +32 -27
  44. data/lib/dor/services/digital_stacks_service.rb +3 -3
  45. data/lib/dor/services/merge_service.rb +4 -8
  46. data/lib/dor/services/metadata_handlers/catalog_handler.rb +1 -1
  47. data/lib/dor/services/metadata_handlers/mdtoolkit_handler.rb +4 -6
  48. data/lib/dor/services/metadata_service.rb +20 -22
  49. data/lib/dor/services/registration_service.rb +6 -8
  50. data/lib/dor/services/reset_workspace_service.rb +14 -16
  51. data/lib/dor/services/sdr_ingest_service.rb +2 -6
  52. data/lib/dor/services/search_service.rb +3 -3
  53. data/lib/dor/services/suri_service.rb +2 -3
  54. data/lib/dor/services/technical_metadata_service.rb +2 -3
  55. data/lib/dor/utils/ng_tidy.rb +6 -6
  56. data/lib/dor/utils/predicate_patch.rb +1 -1
  57. data/lib/dor/utils/solr_doc_helper.rb +2 -2
  58. data/lib/dor/version.rb +1 -1
  59. data/lib/dor/workflow/document.rb +27 -33
  60. data/lib/dor/workflow/graph.rb +34 -37
  61. data/lib/dor/workflow/process.rb +8 -8
  62. data/lib/tasks/rdoc.rake +5 -5
  63. metadata +4 -11
  64. data/bin/dor-indexer +0 -108
  65. data/bin/dor-indexerd +0 -73
  66. data/config/certs/robots-dor-dev.crt +0 -29
  67. data/config/certs/robots-dor-dev.key +0 -27
  68. data/config/dev_console_env.rb +0 -78
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- OGQ5ZWQ0NWFjYTg0ZDc0YTFiNmMwMjM2ZmEzYzJjYTA4NzA5NmUwOA==
4
+ MTIxOTE5NDBmNGMxNDI2OTg5ZWZiMzVhYWFlNmNlYWVkMjI0MTljZg==
5
5
  data.tar.gz: !binary |-
6
- MDJmMmQ5ZGNmNzU5OWQxNmMwNjJlOWY2MTgwMTc4NWM4ZmI3YWNhYg==
6
+ YjMzM2M1ZThjYjZmZjdjMjJjY2VlODM3OTYzMDg1MjZiOTNjMDE4Yg==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- MzcxNDU3MjQ4NjQwODgwZTQyM2Q1OGQ4ZGYzYjdhOTI3ZTY1MzA3OGEzZjc2
10
- MWJiYjkzN2VjNzVmYWI1NWRhMDBjMTE4MDZhMjM5Y2QzOTIwNGRlY2IwYWYy
11
- YmQyZDc5YjY4N2I3ODcwMDZkZDE3ODRlOTM3NTY4MDY3ODhmNzI=
9
+ YzBjMzFiOTU0YmY3OGE5ZDA1NzZlYWM5ZjYwNTMxYmU3MDM4MzkwOWI0MzVi
10
+ N2UyM2U5MTUxMzJjNjFjMjRkM2U3NTFjNWFhMDVkYTg5M2UyYmUxYzkzOTQ2
11
+ MGM5MTYxMDM1ZTIyY2U0MDYwNDJkODhiNDc4YWZiZjlhNTNkZTc=
12
12
  data.tar.gz: !binary |-
13
- OTZiMzAzNjg3NDFlZTM3NzYwYmVmNjljMzcxYjA4YzE2Y2MwYmQ3ZjA2Zjdh
14
- ZjY0MWVhNDlmMWE3ZWE2ZWUxNWUwN2JkNWU2NDlhZGNiYWZkZTg3MmUzZWQx
15
- Y2FhM2I3MGFhMjc4OTk2YTk3MGU5N2YwYjkzYTQyOTQxMTIxNjY=
13
+ NmE4ZjZjNjMwYTM1YTBhY2Q0MzJmZjQxNGZkOGVhMzUxYWQ0MTRmNDYwMTYy
14
+ NDgxNWVmMzFlOTAwMDkzOTNiMWE4MjQ1ZmJhNjc0NGFlMTY1NzI5MzQ5MDVk
15
+ NWU1NmJlZWNmODIzNjA1NDVmNzJmODcwNDA5ZDFiZmQ3ZjRlN2I=
data/lib/dor-services.rb CHANGED
@@ -42,7 +42,7 @@ module Dor
42
42
  doc_version = Gem::Version.new(doc_version)
43
43
  object_type = Array(solr_doc[ActiveFedora::SolrService.solr_name('objectType', :symbol)]).first
44
44
  object_class = registered_classes[object_type] || ActiveFedora::Base
45
- if opts[:lightweight] and doc_version >= Gem::Version.new('3.1.0')
45
+ if opts[:lightweight] && doc_version >= Gem::Version.new('3.1.0')
46
46
  begin
47
47
  object_class.load_instance_from_solr solr_doc['id'], solr_doc
48
48
  rescue Exception => e
@@ -115,7 +115,6 @@ module Dor
115
115
  autoload :Releaseable, 'dor/models/releaseable'
116
116
  autoload :Rightsable, 'dor/models/rightsable'
117
117
 
118
-
119
118
  # ActiveFedora Classes
120
119
  autoload :Abstract, 'dor/models/item'
121
120
  autoload :Item, 'dor/models/item'
data/lib/dor/config.rb CHANGED
@@ -70,7 +70,7 @@ module Dor
70
70
  }
71
71
  },
72
72
  :sdr => {
73
- :rest_client => Confstruct.deferred { |c| config.make_rest_client c.url },
73
+ :rest_client => Confstruct.deferred { |c| config.make_rest_client c.url }
74
74
  },
75
75
  :gsearch => {
76
76
  :rest_client => Confstruct.deferred { |c| config.make_rest_client c.rest_url },
@@ -88,13 +88,12 @@ module Dor
88
88
  config[:stomp][:host] ||= URI.parse(config.fedora.url).host rescue nil
89
89
 
90
90
  [:cert_file, :key_file, :key_pass].each do |key|
91
+ next unless config.fedora[key].present?
91
92
  stack = Kernel.caller.dup
92
93
  stack.shift while stack[0] =~ %r{(active_support/callbacks|dor/config|dor-services)\.rb}
93
- if config.fedora[key].present?
94
- ActiveSupport::Deprecation.warn "Dor::Config -- fedora.#{key.to_s} is deprecated. Please use ssl.#{key.to_s} instead.", stack
95
- config.ssl[key] = config.fedora[key] unless config.ssl[key].present?
96
- config.fedora.delete(key)
97
- end
94
+ ActiveSupport::Deprecation.warn "Dor::Config -- fedora.#{key} is deprecated. Please use ssl.#{key} instead.", stack
95
+ config.ssl[key] = config.fedora[key] unless config.ssl[key].present?
96
+ config.fedora.delete(key)
98
97
  end
99
98
 
100
99
  if ActiveFedora.respond_to?(:configurator)
@@ -9,7 +9,7 @@ module Dor
9
9
  t.stacks :path => '/contentMetadata/@stacks', :index_as => [:not_searchable]
10
10
  t.resource(:index_as => [:not_searchable]) do
11
11
  t.id_ :path => { :attribute => 'id' }
12
- t.sequence :path => { :attribute => 'sequence' }#, :data_type => :integer
12
+ t.sequence :path => { :attribute => 'sequence' } #, :data_type => :integer
13
13
  t.type_ :path => { :attribute => 'type' }, :index_as => [:displayable]
14
14
  t.attribute(:path => 'attr', :index_as => [:not_searchable]) do
15
15
  t.name :path => { :attribute => 'name' }, :index_as => [:not_searchable]
@@ -18,19 +18,19 @@ module Dor
18
18
  t.id_ :path => { :attribute => 'id' }
19
19
  t.mimeType :path => { :attribute => 'mimeType' }, :index_as => [:displayable]
20
20
  t.dataType :path => { :attribute => 'dataType' }, :index_as => [:displayable]
21
- t.size :path => { :attribute => 'size' }, :index_as => [:displayable]#, :data_type => :long
22
- t.shelve :path => { :attribute => 'shelve' }, :index_as => [:not_searchable]#, :data_type => :boolean
23
- t.publish :path => { :attribute => 'publish' }, :index_as => [:not_searchable]#, :data_type => :boolean
24
- t.preserve :path => { :attribute => 'preserve' }, :index_as => [:not_searchable]#, :data_type => :boolean
21
+ t.size :path => { :attribute => 'size' }, :index_as => [:displayable] #, :data_type => :long
22
+ t.shelve :path => { :attribute => 'shelve' }, :index_as => [:not_searchable] #, :data_type => :boolean
23
+ t.publish :path => { :attribute => 'publish' }, :index_as => [:not_searchable] #, :data_type => :boolean
24
+ t.preserve :path => { :attribute => 'preserve' }, :index_as => [:not_searchable] #, :data_type => :boolean
25
25
  t.checksum do
26
26
  t.type_ :path => { :attribute => 'type' }
27
27
  end
28
28
  end
29
29
  t.shelved_file(:path => 'file', :attributes => {:shelve=>'yes'}, :index_as => [:not_searchable]) do
30
- t.id_ :path => { :attribute => 'id' }, :index_as => [:displayable, :searchable]
30
+ t.id_ :path => { :attribute => 'id' }, :index_as => [:displayable, :stored_searchable]
31
31
  end
32
32
  end
33
- t.shelved_file_id :proxy => [:resource, :shelved_file, :id], :index_as => [:displayable, :searchable]
33
+ t.shelved_file_id :proxy => [:resource, :shelved_file, :id], :index_as => [:displayable, :stored_searchable]
34
34
  end
35
35
 
36
36
  def public_xml
@@ -75,7 +75,7 @@ module Dor
75
75
 
76
76
  max = xml.search('//resource').map{ |node| node['sequence'].to_i }.max
77
77
  #renumber all of the resources that will come after the newly added one
78
- while max>position do
78
+ while max>position
79
79
  node=xml.search('//resource[@sequence=\'' + position + '\']')
80
80
  node.first[sequence]=max+1 if node.length>0
81
81
  max-=1
@@ -113,7 +113,7 @@ module Dor
113
113
  res=xml.search('//resource[@sequence=\''+position.to_s+'\']')
114
114
  break if res.length==0
115
115
  res['sequence']=position.to_s
116
- position=position+1
116
+ position+=1
117
117
  end
118
118
  self.content=xml.to_s
119
119
  self.save
@@ -168,20 +168,17 @@ module Dor
168
168
  preserved_size=0
169
169
  counts = Hash.new(0) # default count is zero
170
170
  resource_type_counts = Hash.new(0) # default count is zero
171
- first_shelved_image=nil
171
+ first_shelved_image = nil
172
172
 
173
173
  doc.xpath('contentMetadata/resource').sort { |a,b| a['sequence'].to_i <=> b['sequence'].to_i }.each do |resource|
174
- counts['resource']+=1
175
- resource_type_counts[resource['type']]+=1 if resource['type']
174
+ counts['resource'] += 1
175
+ resource_type_counts[resource['type']] += 1 if resource['type']
176
176
  resource.xpath('file').each do |file|
177
- counts['content_file']+=1
177
+ counts['content_file'] += 1
178
178
  preserved_size += file['size'].to_i if file['preserve'] == 'yes'
179
- if file['shelve'] == 'yes'
180
- counts['shelved_file']+=1
181
- if first_shelved_image.nil? && file['id'].match(/jp2$/)
182
- first_shelved_image=file['id']
183
- end
184
- end
179
+ next unless file['shelve'] == 'yes'
180
+ counts['shelved_file'] += 1
181
+ first_shelved_image ||= file['id'] if file['id'].match(/jp2$/)
185
182
  end
186
183
  end
187
184
  solr_doc["content_type_ssim" ] = doc.root['type']
@@ -216,7 +213,7 @@ module Dor
216
213
  def update_resource_label resource_name, new_label
217
214
  node = singular_node('//resource[@id=\''+resource_name+'\']')
218
215
  labels = node.xpath('./label')
219
- if(labels.length==0)
216
+ if (labels.length==0)
220
217
  #create a label
221
218
  label_node = Nokogiri::XML::Node.new('label',self.ng_xml)
222
219
  label_node.content=new_label
@@ -1,7 +1,7 @@
1
1
  module DatastreamSpecSolrizer
2
2
  extend ActiveSupport::Concern
3
3
  include SolrDocHelper
4
-
4
+
5
5
  def datastream_spec_string
6
6
  s = begin
7
7
  controlGroup == 'E' ? content.to_s.length : size
@@ -12,19 +12,19 @@ class DescMetadataDS < ActiveFedora::OmDatastream
12
12
  end
13
13
  end
14
14
  t.subject(:index_as => [:not_searchable]) do
15
- t.geographic :index_as => [:stored_searchable]
16
- t.topic :index_as => [:stored_searchable]
15
+ t.geographic :index_as => [:symbol, :stored_searchable]
16
+ t.topic :index_as => [:symbol, :stored_searchable]
17
17
  t.temporal :index_as => [:stored_searchable]
18
18
  end
19
19
  t.title_info(:path=>"titleInfo") {
20
- t.main_title(:index_as=>[:facetable], :path=>"title", :label=>"title") {
20
+ t.main_title(:index_as=>[:symbol], :path=>"title", :label=>"title") {
21
21
  t.main_title_lang(:path=>{:attribute=> "xml:lang"})
22
22
  }
23
23
  }
24
- t.coordinates :index_as => [:searchable]
25
- t.extent :index_as => [:searchable]
26
- t.scale :index_as => [:searchable]
27
- t.topic :index_as => [:stored_searchable]
24
+ t.coordinates :index_as => [:symbol]
25
+ t.extent :index_as => [:symbol]
26
+ t.scale :index_as => [:symbol]
27
+ t.topic :index_as => [:symbol, :stored_searchable]
28
28
  t.abstract :index_as => [:stored_searchable]
29
29
  end
30
30
 
@@ -9,7 +9,7 @@ class EmbargoMetadataDS < ActiveFedora::OmDatastream
9
9
  t.embargo_status(:path => 'status', :index_as => [:symbol])
10
10
  t.release_date(:path => "releaseDate", :index_as => [:dateable])
11
11
  t.release_access(:path => "releaseAccess")
12
- t.twenty_pct_status( :path => "twentyPctVisibilityStatus", :index_as => [:facetable])
12
+ t.twenty_pct_status( :path => "twentyPctVisibilityStatus", :index_as => [:symbol])
13
13
  t.twenty_pct_release_date(:path => "twentyPctVisibilityReleaseDate")
14
14
  end
15
15
 
@@ -96,15 +96,10 @@ class EmbargoMetadataDS < ActiveFedora::OmDatastream
96
96
  find_by_terms(:release_access).first
97
97
  end
98
98
 
99
- # @return [Nokogiri::XML::Element] The releaseAccess node
100
- def release_access_node
101
- find_by_terms(:release_access).first
102
- end
103
-
104
99
  # Sets the embargaAccess node
105
100
  # @param [Nokogiri::XML::Document] new_doc Document that will replace the existing releaseAccess node
106
101
  def release_access_node=(new_doc)
107
- if(new_doc.root.name != 'releaseAccess')
102
+ if (new_doc.root.name != 'releaseAccess')
108
103
  raise "Trying to replace releaseAccess with a non-releaseAccess document"
109
104
  end
110
105
 
@@ -1,7 +1,7 @@
1
1
  module Dor
2
2
  class EventsDS < ActiveFedora::OmDatastream
3
3
  before_create :ensure_non_versionable
4
-
4
+
5
5
  set_terminology do |t|
6
6
  t.root(:path => 'events')
7
7
  t.event do
@@ -11,30 +11,30 @@ class EventsDS < ActiveFedora::OmDatastream
11
11
  t.message :path => 'text()', :index_as => [:displayable, :not_searchable]
12
12
  end
13
13
  end
14
-
15
- # Default EventsDS xml
14
+
15
+ # Default EventsDS xml
16
16
  def self.xml_template
17
17
  builder = Nokogiri::XML::Builder.new do |xml|
18
18
  xml.events
19
19
  end
20
20
  return builder.doc
21
21
  end
22
-
22
+
23
23
  def ensure_non_versionable
24
24
  self.versionable = 'false'
25
25
  end
26
-
26
+
27
27
  # Adds an event to the datastream
28
28
  # @param [String] type a tag used to group events together. Sets the type attribute for the event
29
29
  # @param [String] who who is responsible for this event. Sets the who attribute for the event
30
30
  # @param [String] message what happened. Sets the content of the event with this message
31
31
  def add_event(type, who, message)
32
- ev = ng_xml.create_element 'event', message,
32
+ ev = ng_xml.create_element 'event', message,
33
33
  :type => type, :who => who, :when => Time.now.xmlschema
34
34
  ng_xml.root.add_child(ev)
35
35
  ng_xml_will_change!
36
36
  end
37
-
37
+
38
38
  # Finds events with the desired type attribute
39
39
  # @param [String] tag events where type == tag will be returned
40
40
  # @yield [who, timestamp, message] The values of the current event
@@ -46,7 +46,7 @@ class EventsDS < ActiveFedora::OmDatastream
46
46
  block.call(node['who'], Time.parse(node['when']), node.content)
47
47
  end
48
48
  end
49
-
49
+
50
50
  # Returns all the events in the datastream
51
51
  # @yield [type, who, timestamp, message] The values of the current event
52
52
  # @yieldparam [String] type tag for this particular event. Value of the 'type' attribute
@@ -58,6 +58,6 @@ class EventsDS < ActiveFedora::OmDatastream
58
58
  block.call(node['type'], node['who'], Time.parse(node['when']), node.content)
59
59
  end
60
60
  end
61
-
61
+
62
62
  end
63
63
  end
@@ -1,10 +1,10 @@
1
1
  module Dor
2
- class IdentityMetadataDS < ActiveFedora::OmDatastream
2
+ class IdentityMetadataDS < ActiveFedora::OmDatastream
3
3
  include SolrDocHelper
4
-
4
+
5
5
  set_terminology do |t|
6
6
  t.root(:path=>"identityMetadata")
7
- t.objectId :index_as => [:symbol]
7
+ t.objectId :index_as => [:symbol]
8
8
  t.objectType :index_as => [:symbol]
9
9
  t.objectLabel
10
10
  t.citationCreator
@@ -16,53 +16,48 @@ class IdentityMetadataDS < ActiveFedora::OmDatastream
16
16
  t.tag :index_as => [:symbol]
17
17
  t.citationTitle
18
18
  t.objectCreator :index_as => [:stored_searchable, :symbol]
19
- t.adminPolicy :index_as => [:not_searchable]
19
+ t.adminPolicy :index_as => [:not_searchable]
20
20
  end
21
-
21
+
22
22
  define_template :value do |builder,name,value,attrs|
23
23
  builder.send(name.to_sym, value, attrs)
24
24
  end
25
-
25
+
26
26
  def self.xml_template
27
27
  Nokogiri::XML('<identityMetadata/>')
28
- end #self.xml_template
29
-
28
+ end
29
+
30
30
  def add_value(name, value, attrs={})
31
31
  add_child_node(ng_xml.root, :value, name, value, attrs)
32
32
  end
33
-
33
+
34
34
  def objectId
35
35
  self.find_by_terms(:objectId).text
36
36
  end
37
-
37
+
38
38
  def sourceId
39
39
  node = self.find_by_terms(:sourceId).first
40
40
  node ? [node['source'],node.text].join(':') : nil
41
41
  end
42
-
42
+
43
43
  def sourceId=(value)
44
44
  node = self.find_by_terms(:sourceId).first
45
- unless value.present?
45
+ unless value.present? # so setting it to '' is the same as removal: worth documenting maybe?
46
46
  node.remove unless node.nil?
47
- nil
48
- else
49
- (source,val) = value.split(/:/,2)
50
- unless source.present? and value.present?
51
- raise ArgumentError, "Source ID must follow the format namespace:value"
52
- end
53
- node = ng_xml.root.add_child('<sourceId/>').first if node.nil?
54
- node['source'] = source
55
- node.content = val
56
- node
47
+ return nil
57
48
  end
49
+ (source, val) = value.split(/:/, 2)
50
+ raise ArgumentError, "Source ID must follow the format namespace:value, not '#{value}'" unless source.present? && val.present?
51
+ node ||= ng_xml.root.add_child('<sourceId/>').first
52
+ node['source'] = source
53
+ node.content = val
54
+ node
58
55
  end
59
- def tags()
60
- result=[]
61
- self.ng_xml.search('//tag').each do |node|
62
- result << node.content
63
- end
64
- result
56
+
57
+ def tags
58
+ self.ng_xml.search('//tag').collect(&:content)
65
59
  end
60
+
66
61
  def otherId(type = nil)
67
62
  result = self.find_by_terms(:otherId).to_a
68
63
  if type.nil?
@@ -73,13 +68,13 @@ class IdentityMetadataDS < ActiveFedora::OmDatastream
73
68
  end
74
69
 
75
70
  def add_otherId(other_id)
76
- (name,val) = other_id.split(/:/,2)
71
+ (name, val) = other_id.split(/:/, 2)
77
72
  node = ng_xml.root.add_child('<otherId/>').first
78
73
  node['name'] = name
79
74
  node.content = val
80
75
  node
81
76
  end
82
-
77
+
83
78
  def to_solr(solr_doc=Hash.new, *args)
84
79
  super(solr_doc, *args)
85
80
 
@@ -102,21 +97,21 @@ class IdentityMetadataDS < ActiveFedora::OmDatastream
102
97
  add_solr_value(solr_doc, "identifier", qid, :symbol, [:stored_searchable])
103
98
  add_solr_value(solr_doc, "#{name}_id", id, :symbol, [])
104
99
  }
105
-
100
+
106
101
  # do some stuff to make tags in general and project tags specifically more easily searchable and facetable
107
102
  self.find_by_terms(:tag).each { |tag|
108
103
  (prefix, rest) = tag.text.split(/:/, 2)
109
104
  prefix = prefix.downcase.strip.gsub(/\s/,'_')
110
105
  unless rest.nil?
111
- # this part will index a value in a field specific to the tag, e.g. registered_by_tag_*,
106
+ # this part will index a value in a field specific to the tag, e.g. registered_by_tag_*,
112
107
  # book_tag_*, project_tag_*, remediated_by_tag_*, etc. project_tag_* and registered_by_tag_*
113
- # definitley get used, but most don't. we can limit the prefixes that get solrized if things
108
+ # definitley get used, but most don't. we can limit the prefixes that get solrized if things
114
109
  # get out of hand.
115
110
  add_solr_value(solr_doc, "#{prefix}_tag", rest.strip, :symbol, [])
116
111
  end
117
112
 
118
113
  # solrize each possible prefix for the tag, inclusive of the full tag.
119
- # e.g., for a tag such as "A : B : C", this will solrize to an _ssim field
114
+ # e.g., for a tag such as "A : B : C", this will solrize to an _ssim field
120
115
  # that contains ["A", "A : B", "A : B : C"].
121
116
  tag_parts = tag.text.split(/:/)
122
117
  progressive_tag_prefix = ''
@@ -65,7 +65,7 @@ module Dor
65
65
  # slight misnomer: also sets discover rights!
66
66
  # TODO: convert xpath reads to dra_object calls
67
67
  def set_read_rights(rights)
68
- raise(ArgumentError, "Argument '#{rights}' is not a recognized value") unless ['world','stanford','none','dark'].include? rights
68
+ raise(ArgumentError, "Argument '#{rights}' is not a recognized value") unless %w(world stanford none dark).include? rights
69
69
  rights_xml = self.ng_xml
70
70
  if (rights_xml.search('//rightsMetadata/access[@type=\'read\']').length==0)
71
71
  raise('The rights metadata stream doesnt contain an entry for machine read permissions. Consider populating it from the APO before trying to change it.')
@@ -33,7 +33,6 @@ class RoleMetadataDS < ActiveFedora::OmDatastream
33
33
  end.doc
34
34
  end
35
35
 
36
-
37
36
  def to_solr(solr_doc=Hash.new, *args)
38
37
  self.find_by_xpath('/roleMetadata/role/*').each do |actor|
39
38
  role_type = actor.parent['type']
@@ -24,25 +24,24 @@ class SimpleDublinCoreDs < ActiveFedora::OmDatastream
24
24
  def to_solr(solr_doc=Hash.new, *args)
25
25
  # There are a whole bunch of namespace-related things that can go
26
26
  # wrong with this terminology. Until it's fixed in OM, ignore them all.
27
- begin
28
- doc = super solr_doc, *args
29
27
 
30
- add_solr_value(doc, 'dc_title', self.title.first, :string, [:stored_sortable, :stored_searchable])
31
- add_solr_value(doc, 'dc_creator', self.creator.first, :string, [:stored_sortable, :stored_searchable])
28
+ doc = super solr_doc, *args
32
29
 
33
- identifiers = {}
30
+ add_solr_value(doc, 'dc_title', self.title.first, :string, [:stored_sortable, :stored_searchable])
31
+ add_solr_value(doc, 'dc_creator', self.creator.first, :string, [:stored_sortable, :stored_searchable])
34
32
 
35
- self.identifier.each { |i| ns, val = i.split(":"); identifiers[ns] ||= val }
33
+ identifiers = {}
36
34
 
37
- identifiers.each do |ns, val|
38
- add_solr_value(doc, "dc_identifier_#{ns}", val, :string, [:stored_sortable, :stored_searchable])
39
- end
35
+ self.identifier.each { |i| ns, val = i.split(":"); identifiers[ns] ||= val }
40
36
 
41
- return doc
42
- rescue Exception => e
43
- warn "ERROR in SimpleDublinCoreDs to_solr()! #{e}"
44
- solr_doc
37
+ identifiers.each do |ns, val|
38
+ add_solr_value(doc, "dc_identifier_#{ns}", val, :string, [:stored_sortable, :stored_searchable])
45
39
  end
40
+
41
+ return doc
42
+ rescue Exception => e
43
+ warn "ERROR in SimpleDublinCoreDs to_solr()! #{e}"
44
+ solr_doc
46
45
  end
47
46
  end
48
47
  end