Class: GenericAggregator
Instance Method Summary
collapse
#add_member, #aggregator!, #has_struct_metadata?, #member_ids, #members, #remove_member, #solr_members, #thumbnail_info
#cmodel_pid, #datastreams_in_fedora, #has_desc?, #initialize, #label=, #rdf_type, #thumbnail_info, #update_datastream_attributes
Instance Method Details
#index_type_label ⇒ Object
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'app/models/generic_aggregator.rb', line 16
def index_type_label
riquery = Cul::Hydra::Models::MEMBER_ITQL.gsub(/%PID%/, self.pid)
begin
docs = Cul::Fedora.repository.find_by_itql riquery, limit: 2, format: 'count/json'
docs = JSON.parse(docs)['results']
size = docs.first && docs.first['count'] && docs.first['count'].to_i
rescue Exception=>e
Rails.logger.warn("#{self.class.name} failed to find children with TQL: #{e.message}")
end
size ||= self.parts(response_format: :solr, limit: 2).size
type_label_for(size)
end
|
#proxies ⇒ Object
52
53
54
|
# File 'app/models/generic_aggregator.rb', line 52
def proxies
datastreams['structMetadata'] ? datastreams['structMetadata'].proxies : []
end
|
#route_as ⇒ Object
12
13
14
|
# File 'app/models/generic_aggregator.rb', line 12
def route_as
"multipartitem"
end
|
#set_size_labels(solr_doc = {}) ⇒ Object
set the index type label and any RI-based fields overridde
41
42
43
44
45
|
# File 'app/models/generic_aggregator.rb', line 41
def set_size_labels(solr_doc={})
count = Cul::Hydra::RisearchMembers.get_direct_member_count(pid)
solr_doc["index_type_label_ssi"] = [type_label_for(count)]
solr_doc["cul_number_of_members_isi"] = count
end
|
#to_solr(solr_doc = Hash.new, opts = {}) ⇒ Object
47
48
49
50
|
# File 'app/models/generic_aggregator.rb', line 47
def to_solr(solr_doc = Hash.new, opts={})
solr_doc = super(solr_doc, opts)
solr_doc
end
|
#type_label_for(size = nil) ⇒ Object
29
30
31
32
33
34
35
36
37
|
# File 'app/models/generic_aggregator.rb', line 29
def type_label_for(size=nil)
if size == 0
return "EMPTY"
elsif size == 1
return "SINGLE PART"
else
return "MULTIPART"
end
end
|
#update_index ⇒ Object
55
56
57
58
59
60
61
62
63
64
65
66
67
|
# File 'app/models/generic_aggregator.rb', line 55
def update_index
super
if has_struct_metadata?()
conn = ActiveFedora::SolrService.instance.conn
conn.delete_by_query("proxyIn_ssi:#{RSolr.escape(internal_uri())}")
proxy_docs = proxies().collect {|p| p.to_solr}
conn.add(proxy_docs, params: {softCommit: true})
conn.commit
end
end
|