Module: Exlibris::Primo::Pnx::Holdings

Included in:
Record
Defined in:
lib/exlibris/primo/pnx/holdings.rb

Overview

Handle holdings in availlibrary tags.

Instance Method Summary collapse

Instance Method Details

#holdingsObject

Gather Holdings for this record.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/exlibris/primo/pnx/holdings.rb', line 11

def holdings
  @holdings ||=  xml.root.xpath("display/availlibrary").collect do |availlibrary|
    subfields = parse_subfields availlibrary.inner_text
    # Get original id for dealing w/ dedup merger records
    original_id = (subfields["O"]) ? subfields["O"] : recordid
    # Get some info that may or may not be in the PNX metadata
    title = self.display_title if self.respond_to? :display_title
    author = self.display_creator if self.respond_to? :display_creator
    display_type = self.display_type if self.respond_to? :display_type
    # Add a new holding to the record's holdings.
    Exlibris::Primo::Holding.new(
      :availlibrary => availlibrary.inner_text,
      :record_id => recordid, :original_id => original_id,
      :title => title, :author => author, :display_type => display_type,
      :original_source_id => originalsourceids[original_id], :source_id => sourceids[original_id],
      :source_record_id => sourcerecordids[original_id], :ils_api_id => ilsapiids[original_id],
      :institution_code => subfields["I"],
      :library_code => subfields["L"],
      :collection => subfields["1"], :call_number => subfields["2"],
      :subfields => subfields, :availability_status_code => subfields["S"])
    end
end