lib/bulkrax.rb in bulkrax-7.0.0 vs lib/bulkrax.rb in bulkrax-8.0.0

- old
+ new

@@ -1,27 +1,44 @@ # frozen_string_literal: true require "bulkrax/version" require "bulkrax/engine" require 'active_support/all' + require 'coderay' +require 'csv' require 'denormalize_fields' +require 'erb' +require 'iso8601' +require 'language_list' +require 'marcel' +require 'nokogiri' +require 'ostruct' +require 'zip' + +def conditional_require(gem_name) + require gem_name +rescue LoadError + ENV["BULKRAX_NO_#{gem_name.upcase}"] = 'true' +end + +conditional_require 'bagit' +conditional_require 'rdf' + # rubocop:disable Metrics/ModuleLength module Bulkrax extend self # rubocop:disable Style/ModuleFunction extend Forwardable ## # @api public class Configuration attr_accessor :api_definition, - :curation_concerns, :default_field_mapping, :default_work_type, :export_path, :field_mappings, - :file_model_class, :generated_metadata_mapping, :import_path, :multi_value_element_join_on, :multi_value_element_split_on, :object_factory, @@ -39,14 +56,10 @@ # @return [#call] with arity 2. The first parameter is a {Bulkrax::ApplicationParser} and the # second parameter is an Integer for the index of the record encountered in the import. attr_accessor :fill_in_blank_source_identifiers ## - # @param adapter [Class<Bulkrax::PersistenceLayer::AbstractAdapter>] - attr_writer :persistence_adapter - - ## # @param [String] attr_writer :solr_key_for_member_file_ids ## # @return [String] @@ -76,47 +89,49 @@ # => Work def factory_class_name_coercer @factory_class_name_coercer || Bulkrax::FactoryClassFinder::DefaultCoercer end + def collection_model_class + @collection_model_class ||= Collection + end + + attr_writer :collection_model_class + + def collection_model_internal_resource + collection_model_class.try(:internal_resource) || collection_model_class.to_s + end + + def file_model_class + @file_model_class ||= defined?(::Hyrax) ? ::FileSet : File + end + + attr_writer :file_model_class + + def file_model_internal_resource + file_model_class.try(:internal_resource) || file_model_class.to_s + end + + def curation_concerns + @curation_concerns ||= defined?(::Hyrax) ? ::Hyrax.config.curation_concerns : [] + end + + attr_writer :curation_concerns + + def curation_concern_internal_resources + curation_concerns.map { |cc| cc.try(:internal_resource) || cc.to_s }.uniq + end + attr_writer :ingest_queue_name ## # @return [String, Proc] def ingest_queue_name return @ingest_queue_name if @ingest_queue_name.present? return Hyrax.config.ingest_queue_name if defined?(Hyrax) :import end - ## - # Configure the persistence adapter used for persisting imported data. - # - # @return [Class<Bulkrax::PersistenceLayer::AbstractAdapter>] - # @see Bulkrax::PersistenceLayer - def persistence_adapter - @persistence_adapter || derived_persistence_adapter - end - - def derived_persistence_adapter - if defined?(Hyrax) - # There's probably some configuration of Hyrax we could use to better refine this; but it's - # likely a reasonable guess. The main goal is to not break existing implementations and - # maintain an upgrade path. - if Gem::Version.new(Hyrax::VERSION) >= Gem::Version.new('6.0.0') - Bulkrax::PersistenceLayer::ValkyrieAdapter - else - Bulkrax::PersistenceLayer::ActiveFedoraAdapter - end - elsif defined?(ActiveFedora) - Bulkrax::PersistenceLayer::ActiveFedoraAdapter - elsif defined?(Valkyrie) - Bulkrax::PersistenceLayer::ValkyrieAdapter - else - raise "Unable to derive a persistence adapter" - end - end - attr_writer :use_locking def use_locking return @use_locking if defined?(@use_locking) @@ -133,12 +148,16 @@ alias setup config def_delegators :@config, :api_definition, :api_definition=, + :collection_model_class, + :collection_model_internal_resource, + :collection_model_class=, :curation_concerns, :curation_concerns=, + :curation_concern_internal_resources, :default_field_mapping, :default_field_mapping=, :default_work_type, :default_work_type=, :export_path, @@ -147,10 +166,11 @@ :factory_class_name_coercer=, :field_mappings, :field_mappings=, :file_model_class, :file_model_class=, + :file_model_internal_resource, :fill_in_blank_source_identifiers, :fill_in_blank_source_identifiers=, :generated_metadata_mapping, :generated_metadata_mapping=, :import_path, @@ -161,12 +181,10 @@ :multi_value_element_split_on=, :object_factory, :object_factory=, :parsers, :parsers=, - :persistence_adapter, - :persistence_adapter=, :qa_controlled_properties, :qa_controlled_properties=, :related_children_field_mapping, :related_children_field_mapping=, :related_parents_field_mapping, @@ -200,25 +218,9 @@ conf.export_path = Bulkrax.export_path || 'tmp/exports' conf.removed_image_path = Bulkrax::Engine.root.join('spec', 'fixtures', 'removed.png').to_s conf.server_name = 'bulkrax@example.com' conf.relationship_job_class = "Bulkrax::CreateRelationshipsJob" conf.required_elements = ['title'] - - def conf.curation_concerns - @curation_concerns ||= defined?(::Hyrax) ? ::Hyrax.config.curation_concerns : [] - end - - def conf.curation_concerns=(val) - @curation_concerns = val - end - - def conf.file_model_class - @file_model_class ||= defined?(::Hyrax) ? ::FileSet : File - end - - def conf.file_model_class=(val) - @file_model_class = val - end # Hash of Generic field_mappings for use in the view # There must be one field_mappings hash per view partial # Based on Hyrax CoreMetadata && BasicMetadata # Override at application level to change