class Ddr::Models::StructDiv

Attributes

divs[RW]
fptrs[RW]
id[RW]
label[RW]
order[RW]
orderlabel[RW]
type[RW]

Public Class Methods

new(structmap_or_div_node) click to toggle source
# File lib/ddr/models/struct_div.rb, line 7
def initialize(structmap_or_div_node)
  @id = structmap_or_div_node['ID']
  @label = structmap_or_div_node['LABEL']
  @order = structmap_or_div_node['ORDER']
  @orderlabel = structmap_or_div_node['ORDERLABEL']
  @type = structmap_or_div_node['TYPE']
  @fptrs = fptr_pids(structmap_or_div_node) if structmap_or_div_node.node_name == "div"
  @divs = subdivs(structmap_or_div_node).sort
end

Public Instance Methods

<=>(other) click to toggle source
# File lib/ddr/models/struct_div.rb, line 17
def <=>(other)
  self.order.to_i <=> other.order.to_i
end
as_json(options={}) click to toggle source
Calls superclass method
# File lib/ddr/models/struct_div.rb, line 39
def as_json(options={})
  super.compact
end
docs() click to toggle source
# File lib/ddr/models/struct_div.rb, line 25
def docs
  query = ActiveFedora::SolrQueryBuilder.construct_query_for_ids(pids)
  results = ActiveFedora::SolrService.query(query, rows: 999999)
  results.each_with_object({}) do |r, memo|
    memo[r["id"]] = ::SolrDocument.new(r)
  end
end
objects() click to toggle source
# File lib/ddr/models/struct_div.rb, line 33
def objects
  pids.each_with_object({}) do |pid, memo|
    memo[pid] = ActiveFedora::Base.find(pid)
  end
end
pids() click to toggle source
# File lib/ddr/models/struct_div.rb, line 21
def pids
  collect_pids(self)
end

Private Instance Methods

collect_pids(structdiv) click to toggle source
# File lib/ddr/models/struct_div.rb, line 53
def collect_pids(structdiv)
  pids = structdiv.divs.each_with_object([]) do |div, memo|
    memo << collect_pids(div)
  end
  pids << structdiv.fptrs if structdiv.fptrs
  pids.flatten
end
fptr_pids(div_node) click to toggle source
# File lib/ddr/models/struct_div.rb, line 45
def fptr_pids(div_node)
  div_node.xpath('xmlns:fptr').map { |fptr_node| fptr_node["CONTENTIDS"] }
end
subdivs(structmap_or_div_node) click to toggle source
# File lib/ddr/models/struct_div.rb, line 49
def subdivs(structmap_or_div_node)
  structmap_or_div_node.xpath('xmlns:div').map { |div_node| Ddr::Models::StructDiv.new(div_node) }
end