diff --git a/app/jobs/valkyrie_ingest_job.rb b/app/jobs/valkyrie_ingest_job.rb index 590344ec94..6a5f393dc5 100644 --- a/app/jobs/valkyrie_ingest_job.rb +++ b/app/jobs/valkyrie_ingest_job.rb @@ -25,14 +25,12 @@ def perform(file, pcdm_use: Hyrax::FileMetadata::Use::ORIGINAL_FILE) def ingest(file:, pcdm_use:) file_set_uri = Valkyrie::ID.new(file.file_set_uri) file_set = Hyrax.query_service.find_by(id: file_set_uri) - updated_metadata = upload_file( + upload_file( file: file, file_set: file_set, pcdm_use: pcdm_use, user: file.user ) - - ValkyrieCreateDerivativesJob.perform_later(file_set.id.to_s, updated_metadata.id.to_s) end ## diff --git a/app/services/hyrax/characterization/valkyrie_characterization_service.rb b/app/services/hyrax/characterization/valkyrie_characterization_service.rb index 66bec8d72c..d8e5a5ebf6 100644 --- a/app/services/hyrax/characterization/valkyrie_characterization_service.rb +++ b/app/services/hyrax/characterization/valkyrie_characterization_service.rb @@ -15,6 +15,11 @@ def self.run(metadata:, file:, user: ::User.system_user, **options) new(metadata: metadata, file: file, **options).characterize saved = Hyrax.persister.save(resource: metadata) Hyrax.publisher.publish('file.metadata.updated', metadata: saved, user: user) + + Hyrax.publisher.publish('file.characterized', + file_set: Hyrax.query_service.find_by(id: saved.file_set_id), + file_id: saved.id.to_s, + path_hint: saved.file_identifier.to_s) end ## diff --git a/app/services/hyrax/listeners/file_metadata_listener.rb b/app/services/hyrax/listeners/file_metadata_listener.rb index 6ef1538faa..5a36f20979 100644 --- a/app/services/hyrax/listeners/file_metadata_listener.rb +++ b/app/services/hyrax/listeners/file_metadata_listener.rb @@ -12,8 +12,16 @@ class FileMetadataListener # @param [Dry::Events::Event] event # @return [void] def on_file_characterized(event) - CreateDerivativesJob - .perform_later(event[:file_set], event[:file_id], event[:path_hint]) + file_set = event[:file_set] + + case file_set + when ActiveFedora::Base # ActiveFedora + CreateDerivativesJob + .perform_later(file_set, event[:file_id], event[:path_hint]) + else + ValkyrieCreateDerivativesJob + .perform_later(file_set.id.to_s, event[:file_id]) + end end ## @@ -39,7 +47,9 @@ def on_file_metadata_updated(event) # @param [Dry::Events::Event] event # @return [void] def on_file_uploaded(event) - # Run characterization + # Run characterization for original file only + return unless event[:metadata]&.original_file? + Hyrax.config .characterization_service .run(metadata: event[:metadata], file: event[:metadata].file) diff --git a/spec/services/hyrax/characterization/valkyrie_characterization_service_spec.rb b/spec/services/hyrax/characterization/valkyrie_characterization_service_spec.rb index 91de5f56ef..ec2d6f33d5 100644 --- a/spec/services/hyrax/characterization/valkyrie_characterization_service_spec.rb +++ b/spec/services/hyrax/characterization/valkyrie_characterization_service_spec.rb @@ -18,7 +18,10 @@ original_filename: 'test_world.png') end - before { Hyrax.publisher.subscribe(listener) } + before do + Hyrax.publisher.subscribe(listener) + metadata.file_set_id = file_set.id + end after { Hyrax.publisher.unsubscribe(listener) } describe '#run' do