Module: Dor::Describable
- Extended by:
- ActiveSupport::Concern, Deprecation
- Included in:
- Abstract
- Defined in:
- lib/dor/models/concerns/describable.rb
Class Method Summary collapse
Instance Method Summary collapse
- #build_descMetadata_datastream(ds) ⇒ Object
- #fetch_descMetadata_datastream ⇒ Object
- #full_title ⇒ Object
-
#generate_dublin_core(include_collection_as_related_item: true) ⇒ Nokogiri::XML::Document
Generates Dublin Core from the MODS in the descMetadata datastream using the LoC mods2dc stylesheet Should not be used for the Fedora DC datastream.
-
#generate_public_desc_md(**options) ⇒ String
Public descriptive medatada XML.
-
#set_desc_metadata_using_label(force = false) ⇒ String
DescMetadata.content XML.
-
#stanford_mods(content = nil, ns_aware = true) ⇒ Object
intended for read-access, “as SearchWorks would see it”, mostly for to_solr().
Class Method Details
.get_collection_title(obj) ⇒ Object
74 75 76 |
# File 'lib/dor/models/concerns/describable.rb', line 74 def self.get_collection_title(obj) obj.full_title end |
Instance Method Details
#build_descMetadata_datastream(ds) ⇒ Object
33 34 35 36 37 38 39 40 41 |
# File 'lib/dor/models/concerns/describable.rb', line 33 def build_descMetadata_datastream(ds) content = fetch_descMetadata_datastream return nil if content.nil? ds.dsLabel = 'Descriptive Metadata' ds.ng_xml = Nokogiri::XML(content) ds.ng_xml.normalize_text! ds.content = ds.ng_xml.to_xml end |
#fetch_descMetadata_datastream ⇒ Object
27 28 29 30 31 |
# File 'lib/dor/models/concerns/describable.rb', line 27 def fetch_descMetadata_datastream candidates = datastreams['identityMetadata'].otherId.collect(&:to_s) = Dor::MetadataService.resolvable(candidates).first .nil? ? nil : Dor::MetadataService.fetch(.to_s) end |
#full_title ⇒ Object
78 79 80 |
# File 'lib/dor/models/concerns/describable.rb', line 78 def full_title stanford_mods.sw_title_display end |
#generate_dublin_core(include_collection_as_related_item: true) ⇒ Nokogiri::XML::Document
Generates Dublin Core from the MODS in the descMetadata datastream using the LoC mods2dc stylesheet
Should not be used for the Fedora DC datastream
47 48 49 |
# File 'lib/dor/models/concerns/describable.rb', line 47 def generate_dublin_core(include_collection_as_related_item: true) DublinCoreService.new(self, include_collection_as_related_item: ).ng_xml end |
#generate_public_desc_md(**options) ⇒ String
Returns Public descriptive medatada XML.
53 54 55 |
# File 'lib/dor/models/concerns/describable.rb', line 53 def generate_public_desc_md(**) PublicDescMetadataService.new(self).to_xml(**) end |
#set_desc_metadata_using_label(force = false) ⇒ String
Returns descMetadata.content XML.
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/dor/models/concerns/describable.rb', line 60 def (force = false) raise 'Cannot proceed, there is already content in the descriptive metadata datastream: ' + descMetadata.content.to_s unless force || descMetadata.new? label = self.label builder = Nokogiri::XML::Builder.new do |xml| xml.mods(Dor::DescMetadataDS::MODS_HEADER_CONFIG) do xml.titleInfo do xml.title label end end end descMetadata.content = builder.to_xml end |
#stanford_mods(content = nil, ns_aware = true) ⇒ Object
intended for read-access, “as SearchWorks would see it”, mostly for to_solr()
18 19 20 21 22 23 24 25 |
# File 'lib/dor/models/concerns/describable.rb', line 18 def stanford_mods(content = nil, ns_aware = true) @stanford_mods ||= begin m = Stanford::Mods::Record.new desc = content.nil? ? descMetadata.ng_xml : content m.from_nk_node(desc.root, ns_aware) m end end |