Module: Dor::Preservable

Extended by:
ActiveSupport::Concern
Included in:
Abstract
Defined in:
lib/dor/models/concerns/preservable.rb

Instance Method Summary collapse

Instance Method Details

#build_provenanceMetadata_datastream(workflow_id, event_text) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/dor/models/concerns/preservable.rb', line 12

def (workflow_id, event_text)
  workflow_provenance = create_workflow_provenance(workflow_id, event_text)
  ds = datastreams['provenanceMetadata']
  ds.label ||= 'Provenance Metadata'
  ds.ng_xml = workflow_provenance
  ds.save
end

#build_technicalMetadata_datastream(ds = nil) ⇒ Object



20
21
22
# File 'lib/dor/models/concerns/preservable.rb', line 20

def (ds = nil)
  TechnicalMetadataService.(self) if self.is_a?(Dor::Item) # only items need technical metadata, other object types do not have contentMetadata or content
end

#create_workflow_provenance(workflow_id, event_text) ⇒ Nokogiri::Document

Returns:

  • (Nokogiri::Document)


29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/dor/models/concerns/preservable.rb', line 29

def create_workflow_provenance(workflow_id, event_text)
  builder = Nokogiri::XML::Builder.new do |xml|
    xml.(:objectId => pid) {
      xml.agent(:name => 'DOR') {
        xml.what(:object => pid) {
          xml.event(:who => "DOR-#{workflow_id}", :when => Time.new.iso8601) {
            xml.text(event_text)
          }
        }
      }
    }
  end
  builder.doc
end

#sdr_ingest_transfer(agreement_id) ⇒ Object



24
25
26
# File 'lib/dor/models/concerns/preservable.rb', line 24

def sdr_ingest_transfer(agreement_id)
  SdrIngestService.transfer(self, agreement_id)
end