Class: Dor::ProcessableIndexer
- Inherits:
-
Object
- Object
- Dor::ProcessableIndexer
- Includes:
- SolrDocHelper
- Defined in:
- lib/dor/indexers/processable_indexer.rb
Instance Attribute Summary collapse
-
#resource ⇒ Object
readonly
Returns the value of attribute resource.
Instance Method Summary collapse
-
#initialize(resource:) ⇒ ProcessableIndexer
constructor
A new instance of ProcessableIndexer.
-
#simplified_status_code_disp_txt(status_code) ⇒ String
e.g.
-
#to_solr ⇒ Hash
The partial solr document for processable concerns.
Methods included from SolrDocHelper
Constructor Details
#initialize(resource:) ⇒ ProcessableIndexer
Returns a new instance of ProcessableIndexer.
8 9 10 |
# File 'lib/dor/indexers/processable_indexer.rb', line 8 def initialize(resource:) @resource = resource end |
Instance Attribute Details
#resource ⇒ Object (readonly)
Returns the value of attribute resource.
7 8 9 |
# File 'lib/dor/indexers/processable_indexer.rb', line 7 def resource @resource end |
Instance Method Details
#simplified_status_code_disp_txt(status_code) ⇒ String
e.g. ‘In accessioning (described)’ and ‘In accessioning (described, published)’ both return ‘In accessioning’
68 69 70 |
# File 'lib/dor/indexers/processable_indexer.rb', line 68 def simplified_status_code_disp_txt(status_code) Processable::STATUS_CODE_DISP_TXT[status_code].gsub(/\(.*\)$/, '').strip end |
#to_solr ⇒ Hash
Returns the partial solr document for processable concerns.
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/dor/indexers/processable_indexer.rb', line 13 def to_solr solr_doc = {} sortable_milestones = {} current_version = '1' begin current_version = resource.versionMetadata.current_version_id rescue StandardError end current_version_num = current_version.to_i if resource.respond_to?('versionMetadata') # add an entry with version id, tag and description for each version while current_version_num > 0 new_val = "#{current_version_num};#{resource.versionMetadata.tag_for_version(current_version_num.to_s)};#{resource.versionMetadata.description_for_version(current_version_num.to_s)}" add_solr_value(solr_doc, 'versions', new_val, :string, [:displayable]) current_version_num -= 1 end end resource.milestones.each do |milestone| = milestone[:at].utc.xmlschema sortable_milestones[milestone[:milestone]] ||= [] sortable_milestones[milestone[:milestone]] << milestone[:version] ||= current_version solr_doc['lifecycle_ssim'] ||= [] solr_doc['lifecycle_ssim'] << milestone[:milestone] add_solr_value(solr_doc, 'lifecycle', "#{milestone[:milestone]}:#{};#{milestone[:version]}", :symbol) end sortable_milestones.each do |milestone, unordered_dates| dates = unordered_dates.sort # create the published_dttsi and published_day fields and the like dates.each do |date| solr_doc["#{milestone}_dttsim"] ||= [] solr_doc["#{milestone}_dttsim"] << date unless solr_doc["#{milestone}_dttsim"].include?(date) end # fields for OAI havester to sort on: _dttsi is trie date +stored +indexed (single valued, i.e. sortable) solr_doc["#{milestone}_earliest_dttsi"] = dates.first solr_doc["#{milestone}_latest_dttsi"] = dates.last end solr_doc['status_ssi'] = resource.status # status is singular (i.e. the current one) solr_doc['current_version_isi'] = current_version.to_i solr_doc['modified_latest_dttsi'] = resource.modified_date.to_datetime.utc.strftime('%FT%TZ') add_solr_value(solr_doc, 'rights', resource.rights, :string, [:symbol]) if resource.respond_to? :rights status_info_hash = resource.status_info status_code = status_info_hash[:status_code] add_solr_value(solr_doc, 'processing_status_text', simplified_status_code_disp_txt(status_code), :string, [:stored_sortable]) solr_doc['processing_status_code_isi'] = status_code # no _isi in Solrizer's default descriptors solr_doc end |