From ea8664d203d2f3174619ecbc51c19e0bb2a57ff1 Mon Sep 17 00:00:00 2001 From: Justin Coyne Date: Thu, 20 Dec 2018 22:48:24 -0600 Subject: [PATCH] Refactor publish service --- lib/dor/services/publish_metadata_service.rb | 34 ++++++++++++-------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/lib/dor/services/publish_metadata_service.rb b/lib/dor/services/publish_metadata_service.rb index b21ef928..38b73b2e 100644 --- a/lib/dor/services/publish_metadata_service.rb +++ b/lib/dor/services/publish_metadata_service.rb @@ -14,26 +14,32 @@ def initialize(item) # Appends contentMetadata file resources from the source objects to this object def publish - if world_discoverable? - dc_xml = item.generate_dublin_core.to_xml(&:no_declaration) - transfer_to_document_store(dc_xml, 'dc') - %w(identityMetadata contentMetadata rightsMetadata).each do |stream| - transfer_to_document_store(item.datastreams[stream].content.to_s, stream) if item.datastreams[stream] - end - transfer_to_document_store(item.public_xml, 'public') - transfer_to_document_store(item.generate_public_desc_md, 'mods') - publish_notify_on_success - else - # Clear out the document cache for this item - purl_druid.prune! - publish_delete_on_success - end + return unpublish unless world_discoverable? + + transfer_metadata + publish_notify_on_success end private attr_reader :item + def transfer_metadata + dc_xml = item.generate_dublin_core.to_xml(&:no_declaration) + transfer_to_document_store(dc_xml, 'dc') + %w(identityMetadata contentMetadata rightsMetadata).each do |stream| + transfer_to_document_store(item.datastreams[stream].content.to_s, stream) if item.datastreams[stream] + end + transfer_to_document_store(item.public_xml, 'public') + transfer_to_document_store(item.generate_public_desc_md, 'mods') + end + + # Clear out the document cache for this item + def unpublish + purl_druid.prune! + publish_delete_on_success + end + def world_discoverable? rights = item.rightsMetadata.ng_xml.clone.remove_namespaces! rights.at_xpath("//rightsMetadata/access[@type='discover']/machine/world")