dor-services 5.17.3 → 5.18.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
  SHA1:
3
- metadata.gz: 909b3c0e3cd70327c8c654a683fcff6104e65ccf
4
- data.tar.gz: 16aec03de432570223cf31f8f70e24ae37323517
3
+ metadata.gz: d2d0fea02b55ee4906b57a7f1ec29d281cd4441a
4
+ data.tar.gz: 87963a5b75e157f4bb9bfd3aadefaf77b1945707
5
5
  SHA512:
6
- metadata.gz: 3ffec7bd43758242bd733c224e8da84cabd1ef97d5ace802602405cf89d11208d150ea206eb2767f637769bd4ebd780118d0d2301cd690ad0c3c3587543b7d54
7
- data.tar.gz: 5e8ef10484c3df919d0a2a30d542697c1e0849ec9a8e4b9f68bb015b4bdaddac84e11a9c6ae54d3dbf85ddcd0fd0c7044d3b76f56db9f2d291a7d207be555924
6
+ metadata.gz: 3d97aa054071249c9980d50c382823395a8b1deaa0a76241166bb5d0c1d903e5a6b6d0cd619a6bb881d64907ac07ef7beba7f6efda267dc1d55c852a62099d6b
7
+ data.tar.gz: f5c4680e39daa95b119771e1c6c0006b7e3189552637d4b20650008b2e5697d4b2c179f2ca85f6f518cb25532226b828e0fcf1039518e9546324c79ee70d9b4c
@@ -9,13 +9,6 @@
9
9
  :key_pass: ""
10
10
  :fedora:
11
11
  :url:
12
- :safeurl:
13
- :stomp:
14
- :host:
15
- :user: ""
16
- :password: ""
17
- :port: 61613
18
- :client_id: 'dor-services'
19
12
  :solr:
20
13
  :url:
21
14
  :opts: {}
@@ -23,8 +16,6 @@
23
16
  :metadata:
24
17
  :catalog:
25
18
  :url:
26
- :exist:
27
- :url:
28
19
  :sdr:
29
20
  :local_workspace_root: /dor/workspace
30
21
  :local_export_home: /dor/export
@@ -40,8 +31,6 @@
40
31
  :rest_url: ""
41
32
  :stacks:
42
33
  :local_workspace_root: /dor
43
- :storage_root: /stacks
44
- :document_cache_storage_root:
45
34
  :host:
46
35
  :user:
47
36
  :document_cache_host:
@@ -49,7 +38,7 @@
49
38
  :local_stacks_root: /stacks
50
39
  :local_document_cache_root: /purl/document_cache
51
40
  :url:
52
- :iiif_profile:
41
+ :iiif_profile: 'http://iiif.io/api/image/2/level1.json'
53
42
  :suri:
54
43
  :pass:
55
44
  :id_namespace: druid
@@ -69,3 +58,10 @@
69
58
  :log: 'log/indexing_svc.log'
70
59
  :log_date_format_str: '%Y-%m-%d %H:%M:%S.%L'
71
60
  :log_rotation_interval: 'daily'
61
+ :goobi:
62
+ :url:
63
+ :dpg_workflow_name: 'goobiWF'
64
+ :default_goobi_workflow_name: 'Example_Workflow'
65
+ :max_tries: 3
66
+ :max_sleep_seconds: 20
67
+ :base_sleep_seconds: 2
@@ -30,7 +30,6 @@ Dor::Config.configure do
30
30
  document_cache_host 'purl-dev.stanford.edu'
31
31
  document_cache_user ''
32
32
  local_workspace_root '/dor/workspace'
33
- storage_root '/stacks'
34
33
  host 'host'
35
34
  user ''
36
35
  local_stacks_root '/stacks'
@@ -1,6 +1,7 @@
1
1
  require 'active_fedora'
2
2
  require 'active_fedora/version'
3
3
  require 'active_support/core_ext/module/attribute_accessors'
4
+ require 'active_support/core_ext/object/blank'
4
5
  require 'modsulator'
5
6
  require 'dor/utils/sdr_client'
6
7
 
@@ -144,11 +145,6 @@ module Dor
144
145
  autoload :ResetWorkspaceService, 'dor/services/reset_workspace_service'
145
146
  autoload :CleanupResetService, 'dor/services/cleanup_reset_service'
146
147
 
147
- # Versioning Classes
148
- module Versioning
149
- autoload :FileInventoryDifference, 'dor/versioning/file_inventory_difference'
150
- end
151
-
152
148
  # Workflow Classes
153
149
  module Workflow
154
150
  autoload :Graph, 'dor/workflow/graph'
@@ -1,6 +1,5 @@
1
1
  require 'confstruct/configuration'
2
2
  require 'rsolr'
3
- require 'stomp'
4
3
  require 'yaml'
5
4
 
6
5
  module Dor
@@ -72,10 +71,6 @@ module Dor
72
71
  :sdr => {
73
72
  :rest_client => Confstruct.deferred { |c| config.make_rest_client c.url, c.cert_file, c.key_file, c.key_pass }
74
73
  },
75
- :stomp => {
76
- :connection => Confstruct.deferred { |c| Stomp::Connection.new c.user, c.password, c.host, c.port, true, 5, { 'client-id' => c.client_id }},
77
- :client => Confstruct.deferred { |c| Stomp::Client.new c.user, c.password, c.host, c.port }
78
- },
79
74
  :workflow => {
80
75
  :client => Confstruct.deferred do |c|
81
76
  Dor::WorkflowService.configure c.url, logger: c.client_logger, timeout: c.timeout, dor_services_url: config.dor_services.url
@@ -183,17 +183,17 @@ module Dor
183
183
 
184
184
  # these two values are returned by index_elements[:primary], but are just a less granular version of
185
185
  # what the other more specific fields return, so discard them
186
- solr_doc['rights_descriptions_ssim'].reject! { |rights_desc| ['access_restricted', 'access_restricted_qualified', 'world_qualified'].include? rights_desc }
187
- solr_doc['rights_descriptions_ssim'] << 'dark (file)' if dra.index_elements[:terms].include? 'none_read_file'
186
+ solr_doc['rights_descriptions_ssim'] -= ['access_restricted', 'access_restricted_qualified', 'world_qualified']
187
+ solr_doc['rights_descriptions_ssim'] += ['dark (file)'] if dra.index_elements[:terms].include? 'none_read_file'
188
188
 
189
- solr_doc['obj_rights_locations_ssim'] = dra.index_elements[:obj_locations] if !dra.index_elements[:obj_locations].blank?
190
- solr_doc['file_rights_locations_ssim'] = dra.index_elements[:file_locations] if !dra.index_elements[:file_locations].blank?
191
- solr_doc['obj_rights_agents_ssim'] = dra.index_elements[:obj_agents] if !dra.index_elements[:obj_agents].blank?
192
- solr_doc['file_rights_agents_ssim'] = dra.index_elements[:file_agents] if !dra.index_elements[:file_agents].blank?
189
+ solr_doc['obj_rights_locations_ssim'] = dra.index_elements[:obj_locations] unless dra.index_elements[:obj_locations].blank?
190
+ solr_doc['file_rights_locations_ssim'] = dra.index_elements[:file_locations] unless dra.index_elements[:file_locations].blank?
191
+ solr_doc['obj_rights_agents_ssim'] = dra.index_elements[:obj_agents] unless dra.index_elements[:obj_agents].blank?
192
+ solr_doc['file_rights_agents_ssim'] = dra.index_elements[:file_agents] unless dra.index_elements[:file_agents].blank?
193
193
 
194
194
  # suppress empties
195
195
  %w(use_statement_ssim copyright_ssim).each do |key|
196
- solr_doc[key] = solr_doc[key].reject { |val| val.nil? || val == '' }.flatten unless solr_doc[key].nil?
196
+ solr_doc[key] = solr_doc[key].reject(&:blank?).flatten unless solr_doc[key].nil?
197
197
  end
198
198
  add_solr_value(solr_doc, 'use_license_machine', use_license, :string, [:stored_sortable])
199
199
 
@@ -201,9 +201,9 @@ module Dor
201
201
  end
202
202
 
203
203
  def use_license
204
- return creative_commons unless ['', nil].include?(creative_commons)
205
- return open_data_commons unless ['', nil].include?(open_data_commons)
206
- ''
204
+ return creative_commons unless creative_commons.blank?
205
+ return open_data_commons unless open_data_commons.blank?
206
+ nil
207
207
  end
208
208
 
209
209
  # maintain AF < 8 indexing behavior
@@ -18,10 +18,12 @@ module Dor
18
18
  # @param [Nokogiri::XML::Document] content Nokogiri descMetadata document (overriding internal data)
19
19
  # @param [boolean] ns_aware namespace awareness toggle for from_nk_node()
20
20
  def stanford_mods(content = nil, ns_aware = true)
21
- m = Stanford::Mods::Record.new
22
- desc = content.nil? ? descMetadata.ng_xml : content
23
- m.from_nk_node(desc.root, ns_aware)
24
- m
21
+ @stanford_mods ||= begin
22
+ m = Stanford::Mods::Record.new
23
+ desc = content.nil? ? descMetadata.ng_xml : content
24
+ m.from_nk_node(desc.root, ns_aware)
25
+ m
26
+ end
25
27
  end
26
28
 
27
29
  def fetch_descMetadata_datastream
@@ -198,68 +200,74 @@ module Dor
198
200
 
199
201
  def to_solr(solr_doc = {}, *args)
200
202
  solr_doc = super solr_doc, *args
203
+ add_metadata_format_to_solr_doc(solr_doc)
204
+ add_dc_to_solr_doc(solr_doc)
205
+ add_mods_to_solr_doc(solr_doc)
206
+ end
207
+
208
+ def add_metadata_format_to_solr_doc(solr_doc)
209
+ solr_doc['metadata_format_ssim'] ||= []
210
+ solr_doc['metadata_format_ssim'] += ['mods']
211
+ end
212
+
213
+ def add_dc_to_solr_doc(solr_doc)
214
+ dc_doc = generate_dublin_core(include_collection_as_related_item: false)
215
+ # we excluding the generated collection relation here; we instead get the collection
216
+ # title from Dor::Identifiable.
217
+ dc_doc.xpath('/oai_dc:dc/*', oai_dc: XMLNS_OAI_DC).each do |node|
218
+ add_solr_value(solr_doc, "public_dc_#{node.name}", node.text, :string, [:stored_searchable])
219
+ end
220
+ creator = ''
221
+ dc_doc.xpath('//dc:creator', dc: XMLNS_DC).each do |node|
222
+ creator = node.text
223
+ end
224
+ title = ''
225
+ dc_doc.xpath('//dc:title', dc: XMLNS_DC).each do |node|
226
+ title = node.text
227
+ end
228
+ creator_title = creator + title
229
+ add_solr_value(solr_doc, 'creator_title', creator_title, :string, [:stored_sortable])
230
+ rescue CrosswalkError => e
231
+ Dor.logger.warn "Cannot index #{pid}.descMetadata: #{e.message}"
232
+ end
233
+
234
+ def add_mods_to_solr_doc(solr_doc)
201
235
  mods_sources = {
202
- 'sw_display_title_tesim' => :sw_title_display,
203
- 'sw_author_ssim' => :main_author_w_date,
204
- 'sw_author_tesim' => :main_author_w_date,
205
- 'sw_author_sort_ssi' => :sw_sort_author,
206
- 'sw_language_ssim' => :sw_language_facet,
207
- 'sw_language_tesim' => :sw_language_facet,
208
- 'sw_genre_ssim' => :sw_genre,
209
- 'sw_genre_tesim' => :sw_genre,
210
- 'sw_format_ssim' => :format_main, # basically sw_typeOfResource_ssim
211
- 'sw_format_tesim' => :format_main, # basically sw_typeOfResource_tesim
212
- 'sw_topic_ssim' => :topic_facet,
213
- 'sw_topic_tesim' => :topic_facet,
214
- 'sw_subject_temporal_ssim' => :era_facet,
215
- 'sw_subject_temporal_tesim' => :era_facet,
216
- 'sw_subject_geographic_ssim' => :geographic_facet,
217
- 'sw_subject_geographic_tesim' => :geographic_facet,
218
- 'mods_typeOfResource_ssim' => [:term_values, :typeOfResource],
219
- 'mods_typeOfResource_tesim' => [:term_values, :typeOfResource]
220
- }
221
- keys = mods_sources.keys.concat(%w( metadata_format_ssim ))
222
- keys.each { |key|
223
- solr_doc[key] ||= [] # initialize multivalue targts if necessary
236
+ sw_title_display: %w(sw_display_title_tesim),
237
+ main_author_w_date: %w(sw_author_ssim sw_author_tesim),
238
+ sw_sort_author: %w(sw_author_sort_ssi),
239
+ sw_language_facet: %w(sw_language_ssim sw_language_tesim),
240
+ sw_genre: %w(sw_genre_ssim sw_genre_tesim),
241
+ format_main: %w(sw_format_ssim sw_format_tesim),
242
+ topic_facet: %w(sw_topic_ssim sw_topic_tesim),
243
+ era_facet: %w(sw_subject_temporal_ssim sw_subject_temporal_tesim),
244
+ geographic_facet: %w(sw_subject_geographic_ssim sw_subject_geographic_tesim),
245
+ [:term_values, :typeOfResource] => %w(mods_typeOfResource_ssim mods_typeOfResource_tesim),
246
+ pub_year_sort_str: %w(sw_pub_date_sort_ssi),
247
+ pub_year_int: %w(sw_pub_date_sort_isi),
248
+ pub_year_display_str: %w(sw_pub_date_facet_ssi)
224
249
  }
225
250
 
226
- solr_doc['metadata_format_ssim'] << 'mods'
227
- begin
228
- dc_doc = generate_dublin_core(include_collection_as_related_item: false)
229
- # we excluding the generated collection relation here; we instead get the collection
230
- # title from Dor::Identifiable.
231
- dc_doc.xpath('/oai_dc:dc/*', oai_dc: XMLNS_OAI_DC).each do |node|
232
- add_solr_value(solr_doc, "public_dc_#{node.name}", node.text, :string, [:stored_searchable])
233
- end
234
- creator = ''
235
- dc_doc.xpath('//dc:creator', dc: XMLNS_DC).each do |node|
236
- creator = node.text
237
- end
238
- title = ''
239
- dc_doc.xpath('//dc:title', dc: XMLNS_DC).each do |node|
240
- title = node.text
251
+ mods_sources.each_pair do |meth, solr_keys|
252
+ vals = meth.is_a?(Array) ? stanford_mods.send(meth.shift, *meth) : stanford_mods.send(meth)
253
+
254
+ next if vals.nil? || (vals.respond_to?(:empty?) && vals.empty?)
255
+
256
+ solr_keys.each do |key|
257
+ solr_doc[key] ||= []
258
+ solr_doc[key].push *vals
241
259
  end
242
- creator_title = creator + title
243
- add_solr_value(solr_doc, 'creator_title', creator_title, :string, [:stored_sortable])
244
- rescue CrosswalkError => e
245
- Dor.logger.warn "Cannot index #{pid}.descMetadata: #{e.message}"
260
+ # asterisk to avoid multi-dimensional array: push values, not the array
246
261
  end
247
262
 
248
- begin
249
- mods = stanford_mods
250
- mods_sources.each_pair do |solr_key, meth|
251
- vals = meth.is_a?(Array) ? mods.send(meth.shift, *meth) : mods.send(meth)
252
- solr_doc[solr_key].push *vals unless vals.nil? || vals.empty?
253
- # asterisk to avoid multi-dimensional array: push values, not the array
254
- end
255
- solr_doc['sw_pub_date_sort_ssi' ] = mods.pub_year_sort_str # e.g. '0800'
256
- solr_doc['sw_pub_date_sort_isi' ] = mods.pub_year_int # e.g. '0800'
257
- solr_doc['sw_pub_date_facet_ssi'] = mods.pub_year_display_str # e.g. '9th century'
263
+ # convert multivalued fields to single value
264
+ %w(sw_pub_date_sort_ssi sw_pub_date_sort_isi sw_pub_date_facet_ssi).each do |key|
265
+ solr_doc[key] = solr_doc[key].first unless solr_doc[key].nil?
258
266
  end
259
267
  # some fields get explicit "(none)" placeholder values, mostly for faceting
260
- %w(sw_language_tesim sw_genre_tesim sw_format_tesim).each { |key| solr_doc[key] = ['(none)'] if solr_doc[key].empty? }
261
- # otherwise remove empties
262
- keys.each { |key| solr_doc.delete(key) if solr_doc[key].nil? || solr_doc[key].empty?}
268
+ %w(sw_language_tesim sw_genre_tesim sw_format_tesim).each do |key|
269
+ solr_doc[key] = ['(none)'] if solr_doc[key].nil? || solr_doc[key].empty?
270
+ end
263
271
  solr_doc
264
272
  end
265
273
 
@@ -174,19 +174,19 @@ module Dor
174
174
  end
175
175
 
176
176
  def use_license
177
- return creative_commons_license unless ['', nil].include?(creative_commons_license)
178
- return open_data_commons_license unless ['', nil].include?(open_data_commons_license)
179
- ''
177
+ return creative_commons_license unless creative_commons_license.blank?
178
+ return open_data_commons_license unless open_data_commons_license.blank?
179
+ nil
180
180
  end
181
181
  def use_license_uri
182
- return defaultObjectRights.creative_commons.uri.first unless ['', nil].include?(defaultObjectRights.creative_commons.uri)
183
- return defaultObjectRights.open_data_commons.uri.first unless ['', nil].include?(defaultObjectRights.open_data_commons.uri)
184
- ''
182
+ return defaultObjectRights.creative_commons.uri.first unless defaultObjectRights.creative_commons.uri.blank?
183
+ return defaultObjectRights.open_data_commons.uri.first unless defaultObjectRights.open_data_commons.uri.blank?
184
+ nil
185
185
  end
186
186
  def use_license_human
187
- return creative_commons_license_human unless ['', nil].include?(creative_commons_license_human)
188
- return open_data_commons_license_human unless ['', nil].include?(open_data_commons_license_human)
189
- ''
187
+ return creative_commons_license_human unless creative_commons_license_human.blank?
188
+ return open_data_commons_license_human unless open_data_commons_license_human.blank?
189
+ nil
190
190
  end
191
191
 
192
192
  def creative_commons_license=(use_license_machine)
@@ -1,3 +1,3 @@
1
1
  module Dor
2
- VERSION = '5.17.3'.freeze
2
+ VERSION = '5.18.0'.freeze
3
3
  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: 5.17.3
4
+ version: 5.18.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: 2016-11-22 00:00:00.000000000 Z
17
+ date: 2016-11-30 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: active-fedora