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