dor_indexing 1.3.1 → 1.4.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
  SHA256:
3
- metadata.gz: 83583cc273179a722bf069396bfab8ee5e67da1cc3562c1e2de31b0c987c6bda
4
- data.tar.gz: f823aa9a76740bf9b2ea785aaab80aa69958e16b8b7ad27b92869996de188066
3
+ metadata.gz: 108a49c639925b8e1ba4e892d0ed3e4d903f7e741311f480ce85dd1be88d17c0
4
+ data.tar.gz: 5483c10c3b7fa972097e6b8f8cc889a6abc8a67e82bc864253ea003b97e6e578
5
5
  SHA512:
6
- metadata.gz: 047fb2b8f9050f083201622629419c82a203cb65867f8f1fce35026b50ceaebbe341ab5d2182c0e89e74f43a671ba42a00080e0aab2906d7c4a8f6477e7ebe60
7
- data.tar.gz: 2c908c0b6f3d4c1f4380f4e34a502eaa7508aa0037954cd32863982fe33892e9759d8db7f6e3b06ac70c4acedb3c5be728b3defd265e7242cf8566a9e75add86
6
+ metadata.gz: d2f7554c2a2d7dc5ab0eebe685b309f88706cef647ee0aeeeded3da2dc252016b7b43b4328303cfcc0da63c6c45d89ae1f883b6e120f982bcabf750c2a90040a
7
+ data.tar.gz: 5fdf32e3282b995903bc70892cc0baa9c8db8139668c40fbc92f1aff0ee0e40957c3242f07bffcd5d9512bf748697024c407f1708109f4a2837f638ea49012a3
data/Gemfile.lock CHANGED
@@ -1,12 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dor_indexing (1.3.1)
4
+ dor_indexing (1.4.0)
5
+ activesupport
5
6
  cocina-models (~> 0.95.0)
6
7
  dor-workflow-client (~> 7.0)
7
8
  honeybadger
8
9
  marc-vocab (~> 0.3.0)
9
- solrizer
10
10
  stanford-mods
11
11
  zeitwerk
12
12
 
@@ -49,7 +49,7 @@ GEM
49
49
  connection_pool (2.4.1)
50
50
  deprecation (1.1.0)
51
51
  activesupport
52
- diff-lcs (1.5.0)
52
+ diff-lcs (1.5.1)
53
53
  docile (1.4.0)
54
54
  dor-workflow-client (7.0.2)
55
55
  activesupport (>= 3.2.1, < 8)
@@ -100,7 +100,7 @@ GEM
100
100
  multi_json
101
101
  language_server-protocol (3.17.0.3)
102
102
  marc-vocab (0.3.0)
103
- minitest (5.21.2)
103
+ minitest (5.22.2)
104
104
  mods (3.0.4)
105
105
  edtf (~> 3.0)
106
106
  iso-639
@@ -110,9 +110,9 @@ GEM
110
110
  mutex_m (0.2.0)
111
111
  net-http (0.4.1)
112
112
  uri
113
- nokogiri (1.16.0-x86_64-darwin)
113
+ nokogiri (1.16.2-x86_64-darwin)
114
114
  racc (~> 1.4)
115
- nokogiri (1.16.0-x86_64-linux)
115
+ nokogiri (1.16.2-x86_64-linux)
116
116
  racc (~> 1.4)
117
117
  nom-xml (1.2.0)
118
118
  i18n
@@ -132,19 +132,19 @@ GEM
132
132
  rake (13.1.0)
133
133
  regexp_parser (2.9.0)
134
134
  rexml (3.2.6)
135
- rspec (3.12.0)
136
- rspec-core (~> 3.12.0)
137
- rspec-expectations (~> 3.12.0)
138
- rspec-mocks (~> 3.12.0)
139
- rspec-core (3.12.2)
140
- rspec-support (~> 3.12.0)
141
- rspec-expectations (3.12.3)
135
+ rspec (3.13.0)
136
+ rspec-core (~> 3.13.0)
137
+ rspec-expectations (~> 3.13.0)
138
+ rspec-mocks (~> 3.13.0)
139
+ rspec-core (3.13.0)
140
+ rspec-support (~> 3.13.0)
141
+ rspec-expectations (3.13.0)
142
142
  diff-lcs (>= 1.2.0, < 2.0)
143
- rspec-support (~> 3.12.0)
144
- rspec-mocks (3.12.6)
143
+ rspec-support (~> 3.13.0)
144
+ rspec-mocks (3.13.0)
145
145
  diff-lcs (>= 1.2.0, < 2.0)
146
- rspec-support (~> 3.12.0)
147
- rspec-support (3.12.1)
146
+ rspec-support (~> 3.13.0)
147
+ rspec-support (3.13.0)
148
148
  rss (0.3.0)
149
149
  rexml
150
150
  rubocop (1.60.2)
@@ -179,14 +179,10 @@ GEM
179
179
  simplecov_json_formatter (~> 0.1)
180
180
  simplecov-html (0.12.3)
181
181
  simplecov_json_formatter (0.1.4)
182
- solrizer (4.1.0)
183
- activesupport
184
- nokogiri
185
- xml-simple
186
182
  stanford-mods (3.3.9)
187
183
  activesupport
188
184
  mods (~> 3.0, >= 3.0.4)
189
- super_diff (0.10.0)
185
+ super_diff (0.11.0)
190
186
  attr_extras (>= 6.2.4)
191
187
  diff-lcs
192
188
  patience_diff
@@ -195,9 +191,7 @@ GEM
195
191
  concurrent-ruby (~> 1.0)
196
192
  unicode-display_width (2.5.0)
197
193
  uri (0.13.0)
198
- xml-simple (1.1.9)
199
- rexml
200
- zeitwerk (2.6.12)
194
+ zeitwerk (2.6.13)
201
195
 
202
196
  PLATFORMS
203
197
  x86_64-darwin-21
data/dor_indexing.gemspec CHANGED
@@ -31,11 +31,11 @@ Gem::Specification.new do |spec|
31
31
  spec.executables = spec.files.grep(%r{\Aexe/}) { |f| File.basename(f) }
32
32
  spec.require_paths = ['lib']
33
33
 
34
+ spec.add_dependency 'activesupport' # for blank? method
34
35
  spec.add_dependency 'cocina-models', '~> 0.95.0'
35
36
  spec.add_dependency 'dor-workflow-client', '~> 7.0'
36
37
  spec.add_dependency 'honeybadger'
37
- spec.add_dependency 'marc-vocab', '~> 0.3.0'
38
- spec.add_dependency 'solrizer'
38
+ spec.add_dependency 'marc-vocab', '~> 0.3.0' # for marcgac and marccountry
39
39
  spec.add_dependency 'stanford-mods'
40
40
  spec.add_dependency 'zeitwerk'
41
41
  end
@@ -33,7 +33,7 @@ class DorIndexing
33
33
  DorIndexing::Indexers::IdentityMetadataIndexer,
34
34
  DorIndexing::Indexers::DescriptiveMetadataIndexer,
35
35
  DorIndexing::Indexers::EmbargoMetadataIndexer,
36
- DorIndexing::Indexers::ContentMetadataIndexer,
36
+ DorIndexing::Indexers::ObjectFilesIndexer,
37
37
  DorIndexing::Indexers::IdentifiableIndexer,
38
38
  DorIndexing::Indexers::CollectionTitleIndexer,
39
39
  DorIndexing::Indexers::ReleasableIndexer,
@@ -2,14 +2,12 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Index administrative tags for an object.
6
- # NOTE: Most of this code was extracted from the dor-services gem:
7
- # https://github.com/sul-dlss/dor-services/blob/v9.0.0/lib/dor/datastreams/identity_metadata_ds.rb#L196-L218
5
+ # Index administrative tags for an object
8
6
  class AdministrativeTagIndexer
9
7
  TAG_PART_DELIMITER = ' : '
10
8
  SPECIAL_TAG_TYPES_TO_INDEX = ['Project', 'Registered By'].freeze
11
9
 
12
- attr_reader :id
10
+ attr_reader :id, :administrative_tags
13
11
 
14
12
  def initialize(id:, administrative_tags:, **)
15
13
  @id = id
@@ -30,18 +28,23 @@ class DorIndexing
30
28
  tag_prefix, rest = tag.split(TAG_PART_DELIMITER, 2)
31
29
  prefix = tag_prefix.downcase.strip.gsub(/\s/, '_')
32
30
 
33
- solr_doc['tag_ssim'] << tag # for facet and display
34
- solr_doc['tag_text_unstemmed_im'] << tag # for search
31
+ solr_doc['tag_ssim'] << tag # for Argo display and fq
32
+ solr_doc['tag_text_unstemmed_im'] << tag # for Argo search
35
33
 
36
- solr_doc['exploded_nonproject_tag_ssim'] += exploded_tags_from(tag) unless prefix == 'project'
34
+ # exploded tags are for hierarchical facets in Argo
35
+ solr_doc['exploded_nonproject_tag_ssim'] += explode_tag_hierarchy(tag) unless prefix == 'project'
37
36
 
38
- next if SPECIAL_TAG_TYPES_TO_INDEX.exclude?(tag_prefix) || rest.nil?
37
+ next if rest.blank?
38
+
39
+ # Index specific tag types that are used in Argo:
40
+ # project tags for search results and registered by tags for reports ...
41
+ next unless SPECIAL_TAG_TYPES_TO_INDEX.include?(tag_prefix)
39
42
 
40
43
  (solr_doc["#{prefix}_tag_ssim"] ||= []) << rest.strip
41
44
 
42
45
  if prefix == 'project'
43
46
  solr_doc['exploded_project_tag_ssim'] ||= []
44
- solr_doc['exploded_project_tag_ssim'] += exploded_tags_from(rest.strip)
47
+ solr_doc['exploded_project_tag_ssim'] += explode_tag_hierarchy(rest.strip)
45
48
  end
46
49
  end
47
50
  solr_doc
@@ -52,12 +55,10 @@ class DorIndexing
52
55
 
53
56
  private
54
57
 
55
- attr_reader :administrative_tags
56
-
57
- # solrize each possible prefix for the tag, inclusive of the full tag.
58
- # e.g., for a tag such as "A : B : C", this will solrize to an _ssim field
59
- # that contains ["A", "A : B", "A : B : C"].
60
- def exploded_tags_from(tag)
58
+ # index each possible path, inclusive of the full tag.
59
+ # e.g., for "A : B : C", return ["A", "A : B", "A : B : C"].
60
+ # this is for the blacklight-hierarchy plugin for faceting on each level of the hierarchy
61
+ def explode_tag_hierarchy(tag)
61
62
  tag_parts = tag.split(TAG_PART_DELIMITER)
62
63
 
63
64
  1.upto(tag_parts.count).map do |i|
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Basic indexing for all objects
5
+ # Basic indexing for any object
6
6
  class BasicIndexer
7
7
  attr_reader :cocina, :workflow_client
8
8
 
@@ -11,6 +11,7 @@ class DorIndexing
11
11
  @workflow_client = workflow_client
12
12
  end
13
13
 
14
+ # @return [Hash] the partial solr document for basic data
14
15
  # rubocop:disable Metrics/AbcSize
15
16
  # rubocop:disable Metrics/MethodLength
16
17
  def to_solr
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the collection title
5
+ # Indexes collection titles for an object
6
6
  class CollectionTitleIndexer
7
7
  attr_reader :cocina, :parent_collections
8
8
 
@@ -11,14 +11,17 @@ class DorIndexing
11
11
  @parent_collections = parent_collections
12
12
  end
13
13
 
14
- # @return [Hash] the partial solr document for identifiable concerns
14
+ # @return [Hash] the partial solr document for collection title concerns
15
15
  def to_solr
16
16
  {}.tap do |solr_doc|
17
- parent_collections.each do |related_obj|
18
- coll_title = Cocina::Models::Builders::TitleBuilder.build(related_obj.description.title)
17
+ parent_collections.each do |collection_obj|
18
+ coll_title = Cocina::Models::Builders::TitleBuilder.build(collection_obj.description.title)
19
+ next if coll_title.blank?
19
20
 
20
- # create/append collection_title_tesim and collection_title_ssim
21
- ::Solrizer.insert_field(solr_doc, 'collection_title', coll_title, :stored_searchable, :symbol)
21
+ solr_doc['collection_title_ssim'] ||= []
22
+ solr_doc['collection_title_ssim'] << coll_title
23
+ solr_doc['collection_title_tesim'] ||= []
24
+ solr_doc['collection_title_tesim'] << coll_title
22
25
  end
23
26
  end
24
27
  end
@@ -2,6 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
+ # Allows DorIndexing::Builders::DocumentBuilder class (which builds the solr doc for an object) to be much more readable
5
6
  # Borrowed from https://github.com/samvera/valkyrie/blob/master/lib/valkyrie/persistence/solr/composite_indexer.rb
6
7
  class CompositeIndexer
7
8
  attr_reader :indexers
@@ -4,8 +4,8 @@ require 'stanford-mods'
4
4
 
5
5
  class DorIndexing
6
6
  module Indexers
7
- # rubocop:disable Metrics/ClassLength
8
7
  # Indexes the descriptive metadata
8
+ # rubocop:disable Metrics/ClassLength
9
9
  class DescriptiveMetadataIndexer
10
10
  attr_reader :cocina, :stanford_mods_record
11
11
 
@@ -29,7 +29,8 @@ class DorIndexing
29
29
 
30
30
  # contributor
31
31
  'author_text_nostem_im' => author_primary, # primary author tokenized but not stemmed
32
- 'sw_author_tesim' => author_primary, # used for author display in Argo
32
+ 'sw_author_tesim' => author_primary, # DEPRECATED - used for author display in Argo
33
+ 'author_display_ss' => author_primary, # used for author display in Argo
33
34
  'contributor_text_nostem_im' => author_all, # author names should be tokenized but not stemmed
34
35
  'contributor_orcids_ssim' => orcids,
35
36
 
@@ -43,8 +44,6 @@ class DorIndexing
43
44
  'originInfo_place_placeTerm_tesim' => event_place, # do we want this?
44
45
  'sw_pub_date_facet_ssi' => stanford_mods_record.pub_year_int.to_s, # SW Date facet
45
46
 
46
- 'metadata_format_ssim' => 'mods', # no longer used? https://github.com/search?q=org%3Asul-dlss+metadata_format_ssim&type=code
47
-
48
47
  # SW facets plus a friend facet
49
48
  'sw_format_ssim' => sw_format, # SW Resource Type facet
50
49
  'mods_typeOfResource_ssim' => resource_type, # MODS Resource Type facet
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the identifiable concerns
5
+ # Indexes the druid, metadata sources, and the apo titles
6
6
  class IdentifiableIndexer
7
7
  attr_reader :cocina, :cocina_repository
8
8
 
@@ -13,23 +13,29 @@ class DorIndexing
13
13
  @cocina_repository = cocina_repository
14
14
  end
15
15
 
16
- ## Module-level variables, shared between ALL mixin includers (and ALL *their* includers/extenders)!
17
- ## used for caching found values
16
+ ## Module-level variable, shared between ALL mixin includers (and ALL *their* includers/extenders)!
17
+ ## used for caching apo titles
18
18
  @@apo_hash = {} # rubocop:disable Style/ClassVars
19
19
 
20
20
  # @return [Hash] the partial solr document for identifiable concerns
21
- def to_solr
21
+ def to_solr # rubocop:disable Metrics/AbcSize
22
22
  {}.tap do |solr_doc|
23
23
  add_apo_titles(solr_doc, cocina.administrative.hasAdminPolicy)
24
24
 
25
25
  solr_doc['metadata_source_ssim'] = identity_metadata_sources unless cocina.is_a? Cocina::Models::AdminPolicyWithMetadata
26
- # This used to be added to the index by https://github.com/sul-dlss/dor-services/commit/11b80d249d19326ef591411ffeb634900e75c2c3
27
- # and was called dc_identifier_druid_tesim
28
- # It is used to search based on druid.
29
- solr_doc['objectId_tesim'] = [cocina.externalIdentifier, cocina.externalIdentifier.delete_prefix('druid:')]
26
+ solr_doc['druid_prefixed_ssi'] = cocina.externalIdentifier
27
+ solr_doc['druid_bare_ssi'] = cocina.externalIdentifier.delete_prefix('druid:')
28
+ solr_doc['objectId_tesim'] = [cocina.externalIdentifier, cocina.externalIdentifier.delete_prefix('druid:')] # DEPRECATED
30
29
  end
31
30
  end
32
31
 
32
+ # Clears out the cache of apos. Used primarily in testing.
33
+ def self.reset_cache!
34
+ @@apo_hash = {} # rubocop:disable Style/ClassVars
35
+ end
36
+
37
+ private
38
+
33
39
  # @return [Array<String>] calculated values for Solr index
34
40
  def identity_metadata_sources
35
41
  return ['DOR'] if !cocina.identification.respond_to?(:catalogLinks) || distinct_current_catalog_types.empty?
@@ -37,13 +43,6 @@ class DorIndexing
37
43
  distinct_current_catalog_types.map(&:capitalize)
38
44
  end
39
45
 
40
- # Clears out the cache of items. Used primarily in testing.
41
- def self.reset_cache!
42
- @@apo_hash = {} # rubocop:disable Style/ClassVars
43
- end
44
-
45
- private
46
-
47
46
  def distinct_current_catalog_types
48
47
  # Filter out e.g. "previous symphony", "previous folio"
49
48
  @distinct_current_catalog_types ||=
@@ -57,15 +56,18 @@ class DorIndexing
57
56
 
58
57
  # @param [Hash] solr_doc
59
58
  # @param [String] admin_policy_id
60
- def add_apo_titles(solr_doc, admin_policy_id)
59
+ def add_apo_titles(solr_doc, admin_policy_id) # rubocop:disable Metrics/MethodLength
61
60
  row = populate_cache(admin_policy_id)
62
61
  title = row['related_obj_title']
63
62
  if row['is_from_hydrus']
64
- ::Solrizer.insert_field(solr_doc, 'hydrus_apo_title', title, :symbol)
63
+ solr_doc['hydrus_apo_title_ssim'] ||= []
64
+ solr_doc['hydrus_apo_title_ssim'] << title
65
65
  else
66
- ::Solrizer.insert_field(solr_doc, 'nonhydrus_apo_title', title, :symbol)
66
+ solr_doc['nonhydrus_apo_title_ssim'] ||= []
67
+ solr_doc['nonhydrus_apo_title_ssim'] << title
67
68
  end
68
- ::Solrizer.insert_field(solr_doc, 'apo_title', title, :symbol)
69
+ solr_doc['apo_title_ssim'] ||= []
70
+ solr_doc['apo_title_ssim'] << title
69
71
  end
70
72
 
71
73
  # populate cache if necessary
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the identity metadata
5
+ # Indexes the identity metadata from cocina.identification
6
6
  class IdentityMetadataIndexer
7
7
  attr_reader :cocina_object
8
8
 
@@ -11,24 +11,21 @@ class DorIndexing
11
11
  end
12
12
 
13
13
  # @return [Hash] the partial solr document for identityMetadata
14
- # rubocop:disable Metrics/AbcSize
15
14
  # rubocop:disable Metrics/MethodLength
16
15
  def to_solr
17
- return { 'objectType_ssim' => [object_type] } if object_type == 'adminPolicy' || cocina_object.identification.nil?
16
+ return { 'objectType_ssim' => [object_type] } if object_type == 'adminPolicy' || cocina_object.identification.blank?
18
17
 
19
18
  {
20
19
  'objectType_ssim' => [object_type],
21
- 'dor_id_tesim' => [source_id_value, barcode, folio_instance_hrid, previous_ils_ids].flatten.compact,
22
- 'identifier_ssim' => prefixed_identifiers,
23
- 'identifier_tesim' => prefixed_identifiers,
20
+ 'identifier_ssim' => prefixed_identifiers, # sourceid, barcode, folio_instance_hrid for display
21
+ 'identifier_tesim' => prefixed_identifiers, # ditto ^^, for search, tokenized (can search prefix and value as separate tokens)
24
22
  'barcode_id_ssim' => [barcode].compact,
25
- 'source_id_ssi' => source_id,
26
- 'source_id_text_nostem_i' => source_id,
23
+ 'source_id_ssi' => source_id, # for search and display (reports, track_sheet)
24
+ 'source_id_text_nostem_i' => source_id, # for search, tokenized per request from accessioneers
27
25
  'folio_instance_hrid_ssim' => [folio_instance_hrid].compact,
28
26
  'doi_ssim' => [doi].compact
29
27
  }
30
28
  end
31
- # rubocop:enable Metrics/AbcSize
32
29
  # rubocop:enable Metrics/MethodLength
33
30
 
34
31
  private
@@ -37,10 +34,6 @@ class DorIndexing
37
34
  @source_id ||= cocina_object.identification.sourceId
38
35
  end
39
36
 
40
- def source_id_value
41
- @source_id_value ||= source_id ? source_id.split(':', 2)[1] : nil
42
- end
43
-
44
37
  def barcode
45
38
  @barcode ||= object_type == 'collection' ? nil : cocina_object.identification.barcode
46
39
  end
@@ -53,15 +46,6 @@ class DorIndexing
53
46
  @folio_instance_hrid ||= Array(cocina_object.identification.catalogLinks).find { |link| link.catalog == 'folio' }&.catalogRecordId
54
47
  end
55
48
 
56
- def previous_folio_instance_hrids
57
- @previous_folio_instance_hrids ||=
58
- Array(cocina_object.identification.catalogLinks).filter_map { |link| link.catalogRecordId if link.catalog == 'previous folio' }
59
- end
60
-
61
- def previous_ils_ids
62
- @previous_ils_ids ||= previous_folio_instance_hrids
63
- end
64
-
65
49
  def object_type
66
50
  case cocina_object
67
51
  when Cocina::Models::AdminPolicyWithMetadata
@@ -2,15 +2,15 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the content metadata
6
- class ContentMetadataIndexer
5
+ # Indexes the information about files in the object
6
+ class ObjectFilesIndexer
7
7
  attr_reader :cocina
8
8
 
9
9
  def initialize(cocina:, **)
10
10
  @cocina = cocina
11
11
  end
12
12
 
13
- # @return [Hash] the partial solr document for contentMetadata
13
+ # @return [Hash] the partial solr document for files in the object
14
14
  def to_solr
15
15
  {
16
16
  'content_type_ssim' => type(cocina.type),
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the role metadata
5
+ # Indexes the administrative role metadata
6
6
  class RoleMetadataIndexer
7
7
  attr_reader :cocina
8
8
 
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the objects position in workflows
5
+ # Indexes the object's state for each process in a single workflow
6
6
  class WorkflowIndexer
7
7
  # @param [Workflow::Response::Workflow] workflow the workflow document to index
8
8
  def initialize(workflow:, workflow_client:)
@@ -10,14 +10,14 @@ class DorIndexing
10
10
  @workflow_client = workflow_client
11
11
  end
12
12
 
13
- # @return [Hash] the partial solr document for the workflow document
13
+ # @return [Hash] the partial solr document for all the workflow processes
14
14
  def to_solr
15
15
  WorkflowSolrDocument.new do |solr_doc|
16
16
  solr_doc.name = workflow_name
17
17
 
18
18
  errors = 0 # The error count is used by the Report class in Argo
19
19
  processes.each do |process|
20
- ProcessIndexer.new(solr_doc:, workflow_name:, process:).to_solr
20
+ WorkflowProcessIndexer.new(solr_doc:, workflow_name:, process:).to_solr
21
21
  errors += 1 if process.status == 'error'
22
22
  end
23
23
  solr_doc.status = [workflow_name, workflow_status, errors].join('|')
@@ -2,8 +2,8 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the process for a workflow
6
- class ProcessIndexer
5
+ # Creates solr doc fields (and values) for a process for a workflow (which is for an object)
6
+ class WorkflowProcessIndexer
7
7
  ERROR_OMISSION = '... (continued)'
8
8
  private_constant :ERROR_OMISSION
9
9
 
@@ -13,14 +13,14 @@ class DorIndexing
13
13
 
14
14
  # @param [WorkflowSolrDocument] solr_doc
15
15
  # @param [String] workflow_name
16
- # @param [Dor::Workflow::Response::Process] process
16
+ # @param [Dor::Workflow::Response::Process] process containing data for a process in a workflow for an object
17
17
  def initialize(solr_doc:, workflow_name:, process:)
18
18
  @solr_doc = solr_doc
19
19
  @workflow_name = workflow_name
20
20
  @process = process
21
21
  end
22
22
 
23
- # @return [Hash] the partial solr document for the workflow document
23
+ # @return [Hash] the partial solr document for a single workflow process
24
24
  # rubocop:disable Metrics/AbcSize
25
25
  def to_solr
26
26
  return unless status
@@ -2,7 +2,7 @@
2
2
 
3
3
  class DorIndexing
4
4
  module Indexers
5
- # Indexes the objects position in workflows
5
+ # Indexes the object's state in the most recent execution of every one of its workflows
6
6
  class WorkflowsIndexer
7
7
  attr_reader :id
8
8
 
@@ -11,7 +11,7 @@ class DorIndexing
11
11
  @workflow_client = workflow_client
12
12
  end
13
13
 
14
- # @return [Hash] the partial solr document for workflow concerns
14
+ # @return [Hash] the partial solr document for workflows concerns
15
15
  def to_solr
16
16
  WorkflowSolrDocument.new do |combined_doc|
17
17
  workflows.each do |wf|
@@ -30,7 +30,6 @@ class DorIndexing
30
30
  all_workflows.workflows
31
31
  end
32
32
 
33
- # TODO: remove Dor::Workflow::Document
34
33
  # @return [Workflow::Response::Workflows]
35
34
  def all_workflows
36
35
  @all_workflows ||= workflow_client.workflow_routes.all_workflows pid: id
@@ -61,7 +61,7 @@ class DorIndexing
61
61
 
62
62
  event_dates = Array(event.date) + Array(event.parallelEvent&.map(&:date))
63
63
  event_dates.flatten.compact.find do |date|
64
- date_type(date).nil?
64
+ date_type(date).blank?
65
65
  end
66
66
  end
67
67
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class DorIndexing
4
- VERSION = '1.3.1'
4
+ VERSION = '1.4.0'
5
5
  end
data/lib/dor_indexing.rb CHANGED
@@ -3,7 +3,6 @@
3
3
  require 'zeitwerk'
4
4
  require 'stanford-mods'
5
5
  require 'cocina/models'
6
- require 'solrizer'
7
6
  require 'marc/vocab'
8
7
  require 'honeybadger'
9
8
 
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dor_indexing
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Littman
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-31 00:00:00.000000000 Z
11
+ date: 2024-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: cocina-models
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +80,6 @@ dependencies:
66
80
  - - "~>"
67
81
  - !ruby/object:Gem::Version
68
82
  version: 0.3.0
69
- - !ruby/object:Gem::Dependency
70
- name: solrizer
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: stanford-mods
85
85
  requirement: !ruby/object:Gem::Requirement
@@ -140,17 +140,17 @@ files:
140
140
  - lib/dor_indexing/indexers/basic_indexer.rb
141
141
  - lib/dor_indexing/indexers/collection_title_indexer.rb
142
142
  - lib/dor_indexing/indexers/composite_indexer.rb
143
- - lib/dor_indexing/indexers/content_metadata_indexer.rb
144
143
  - lib/dor_indexing/indexers/default_object_rights_indexer.rb
145
144
  - lib/dor_indexing/indexers/descriptive_metadata_indexer.rb
146
145
  - lib/dor_indexing/indexers/embargo_metadata_indexer.rb
147
146
  - lib/dor_indexing/indexers/identifiable_indexer.rb
148
147
  - lib/dor_indexing/indexers/identity_metadata_indexer.rb
149
- - lib/dor_indexing/indexers/process_indexer.rb
148
+ - lib/dor_indexing/indexers/object_files_indexer.rb
150
149
  - lib/dor_indexing/indexers/releasable_indexer.rb
151
150
  - lib/dor_indexing/indexers/rights_metadata_indexer.rb
152
151
  - lib/dor_indexing/indexers/role_metadata_indexer.rb
153
152
  - lib/dor_indexing/indexers/workflow_indexer.rb
153
+ - lib/dor_indexing/indexers/workflow_process_indexer.rb
154
154
  - lib/dor_indexing/indexers/workflows_indexer.rb
155
155
  - lib/dor_indexing/marc_country.rb
156
156
  - lib/dor_indexing/selectors/event_selector.rb
@@ -180,7 +180,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
180
180
  - !ruby/object:Gem::Version
181
181
  version: '0'
182
182
  requirements: []
183
- rubygems_version: 3.4.10
183
+ rubygems_version: 3.4.13
184
184
  signing_key:
185
185
  specification_version: 4
186
186
  summary: Library for creating Solr documents for SDR indexing.