From 9607f7455b6a87222f4801fd684a3363edc97b51 Mon Sep 17 00:00:00 2001 From: Michael Holloway Date: Tue, 14 Jan 2025 23:25:36 -0500 Subject: [PATCH] Fix bugs, add logging to script --- .../transformers/dated_claim_transformer.rb | 5 +++-- .../transformers/name_claim_transformer.rb | 6 +++--- wikibase_to_solr_new.rb | 13 ++++++++----- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/digital_scriptorium/transformers/dated_claim_transformer.rb b/lib/digital_scriptorium/transformers/dated_claim_transformer.rb index fb30c43..7ffd119 100644 --- a/lib/digital_scriptorium/transformers/dated_claim_transformer.rb +++ b/lib/digital_scriptorium/transformers/dated_claim_transformer.rb @@ -5,12 +5,13 @@ module DigitalScriptorium class DatedClaimTransformer < BaseClaimTransformer PREFIX = 'dated' - def initialize(claim, _export_hash) + def initialize(claim, export_hash) super(claim, prefix: PREFIX) + @export_hash = export_hash end def facet_values - [export_hash[@claim.entity_id_value]&.label('en')].compact + [@export_hash[@claim.entity_id_value]&.label('en')].compact end end end diff --git a/lib/digital_scriptorium/transformers/name_claim_transformer.rb b/lib/digital_scriptorium/transformers/name_claim_transformer.rb index 06d3fa9..66d0652 100644 --- a/lib/digital_scriptorium/transformers/name_claim_transformer.rb +++ b/lib/digital_scriptorium/transformers/name_claim_transformer.rb @@ -12,12 +12,12 @@ def initialize(claim, export_hash) end def role_prefix(claim, export_hash) - role_entity_id = claim.qualifiers_by_property_id(ROLE_IN_AUTHORITY_FILE).first.entity_id_value + role_entity_id = claim.qualifiers_by_property_id(ROLE_IN_AUTHORITY_FILE)&.first&.entity_id_value + raise "Missing role qualifier for name claim" unless role_entity_id + role_item = export_hash[role_entity_id] role_label = role_item.label('en') role_label.split.last.downcase - rescue e - raise "Error fetching role qualifier: #{e}" end end end diff --git a/wikibase_to_solr_new.rb b/wikibase_to_solr_new.rb index 6910b50..459b112 100644 --- a/wikibase_to_solr_new.rb +++ b/wikibase_to_solr_new.rb @@ -2,6 +2,7 @@ require 'digital_scriptorium' require 'json' +require 'logging' require 'optparse' require 'set' require 'time' @@ -16,6 +17,8 @@ config_file = File.expand_path 'property_config.yml', dir pretty_print = false +logger = Logging.logger(STDOUT) + OptionParser.new { |opts| opts.banner = 'Usage: wikibase_to_solr.rb [options]' @@ -92,11 +95,11 @@ def record?(entity) next unless (property_config = config[property_id]) begin - transformer = property_config['transformer_class'].new claim, export_hash - solr_item = merge(solr_item, transformer.solr_props) - rescue e - # TODO: Log properly - puts "Error processing item ID #{item.id}: #{e}" + transformer_class = DigitalScriptorium.const_get(property_config['transformer_class']) + transformer = transformer_class.new claim, export_hash + solr_item = merge solr_item, transformer.solr_props + rescue => e + logger.error "Error processing claim for item #{item.id}: #{e}" end end end