Sha256: e04a972bdfc0efa047dc7efd6a1ed53480c0be5ad8ca4e696fafb96fe1b68a44

Contents?: true

Size: 1.53 KB

Versions: 19

Compression:

Stored size: 1.53 KB

Contents

module Dor
class RoleMetadataDS < ActiveFedora::OmDatastream
  include SolrDocHelper
  
  set_terminology do |t|
    t.root :path => 'roleMetadata'

    t.actor do
      t.identifier do
        t.type_ :path => {:attribute => 'type'}
      end
      t.name
    end
    t.person :ref => [:actor], :path => 'person'
    t.group  :ref => [:actor], :path => 'group'

    t.role do
      t.type_ :path => {:attribute => 'type'}
      t.person :ref => [:person]
      t.group  :ref => [:group]
    end
    
    t.manager    :ref => [:role], :attributes => {:type => 'manager'}
    t.depositor  :ref => [:role], :attributes => {:type => 'depositor'}
    t.reviewer   :ref => [:role], :attributes => {:type => 'reviewer'}
    t.viewer     :ref => [:role], :attributes => {:type => 'viewer'}
  end
  
  def self.xml_template
    Nokogiri::XML::Builder.new do |xml|
      xml.roleMetadata{
      }
    end.doc
  end
  

  def to_solr(solr_doc=Hash.new, *args)
    self.find_by_xpath('/roleMetadata/role/*').each do |actor|
      role_type = actor.parent['type']
      val = [actor.at_xpath('identifier/@type'),actor.at_xpath('identifier/text()')].join ':'
      add_solr_value(solr_doc, "apo_role_#{actor.name}_#{role_type}", val, :string, [:searchable, :facetable])
      add_solr_value(solr_doc, "apo_role_#{role_type}", val, :string, [:searchable, :facetable])
      if ['dor-apo-manager','dor-apo-depositor'].include? role_type
        add_solr_value(solr_doc, "apo_register_permissions", val, :string, [:searchable, :facetable])
      end
    end
    solr_doc
  end
  
end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
dor-services-4.4.12.1 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.6.3 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.8.0 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.6.2 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.6.1 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.7.0 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.8 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.7 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.5 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.4 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.3 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.2 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.1 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.6.0 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.5.0 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.4.13 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.4.12 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.4.11 lib/dor/datastreams/role_metadata_ds.rb
dor-services-4.4.10 lib/dor/datastreams/role_metadata_ds.rb