cul_hydra 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/concerns/cul/hydra/application_id_behavior.rb +5 -6
- data/app/models/administrative_set.rb +0 -1
- data/app/models/concept.rb +0 -1
- data/app/models/concerns/cul/hydra/models.rb +1 -0
- data/app/models/concerns/cul/hydra/models/common.rb +8 -9
- data/app/models/concerns/cul/hydra/models/rels_int.rb +18 -0
- data/app/models/concerns/ore/proxy.rb +2 -3
- data/app/models/cul/hydra/datastreams/rels_int.rb +179 -0
- data/app/models/dc_document.rb +0 -1
- data/app/models/generic_aggregator.rb +0 -1
- data/app/models/generic_object.rb +0 -1
- data/app/models/generic_resource.rb +1 -3
- data/fixtures/spec/CUL_RELS_INT/rels_int_blank.xml +2 -0
- data/fixtures/spec/CUL_RELS_INT/rels_int_profile.xml +19 -0
- data/fixtures/spec/CUL_RELS_INT/rels_int_test.xml +12 -0
- data/fixtures/spec/FOXML/resource-thumb.xml +2 -1
- data/lib/cul_hydra.rb +1 -4
- data/lib/cul_hydra/rels_int.rb +9 -0
- data/lib/cul_hydra/rels_int/rdf_xml_writer.rb +33 -0
- data/lib/cul_hydra/version.rb +1 -1
- data/lib/tasks/cul_hydra_dev.rake +0 -28
- metadata +32 -58
- data/app/models/jp2_image_aggregator.rb +0 -34
- data/app/models/mets_structured_aggregator.rb +0 -18
- data/app/models/resource.rb +0 -78
- data/app/models/resource_aggregator.rb +0 -22
- data/app/models/static_audio_aggregator.rb +0 -12
- data/app/models/static_image_aggregator.rb +0 -32
- data/lib/cul_hydra/controllers.rb +0 -14
- data/lib/cul_hydra/controllers/aggregates.rb +0 -93
- data/lib/cul_hydra/controllers/aggregator_controller_helper.rb +0 -27
- data/lib/cul_hydra/controllers/catalog.rb +0 -12
- data/lib/cul_hydra/controllers/collections.rb +0 -81
- data/lib/cul_hydra/controllers/content_aggregators.rb +0 -81
- data/lib/cul_hydra/controllers/datastreams.rb +0 -145
- data/lib/cul_hydra/controllers/helpers.rb +0 -10
- data/lib/cul_hydra/controllers/helpers/active_fedora_helper_behavior.rb +0 -9
- data/lib/cul_hydra/controllers/helpers/application_helper_behavior.rb +0 -16
- data/lib/cul_hydra/controllers/helpers/dc_metadata_helper_behavior.rb +0 -9
- data/lib/cul_hydra/controllers/helpers/hydra_assets_helper_behavior.rb +0 -46
- data/lib/cul_hydra/controllers/helpers/hydra_autocomplete_helper_behavior.rb +0 -35
- data/lib/cul_hydra/controllers/helpers/hydra_uploader_helper_behavior.rb +0 -34
- data/lib/cul_hydra/controllers/helpers/resources_helper_behavior.rb +0 -159
- data/lib/cul_hydra/controllers/resources.rb +0 -161
- data/lib/cul_hydra/controllers/static_image_aggregators.rb +0 -105
- data/lib/cul_hydra/controllers/suggestions.rb +0 -126
- data/lib/cul_hydra/controllers/terms.rb +0 -205
@@ -1,105 +0,0 @@
|
|
1
|
-
require 'cul_hydra/controllers/helpers/resources_helper_behavior'
|
2
|
-
module Cul::Hydra::Controllers
|
3
|
-
module StaticImageAggregators
|
4
|
-
extend ActiveSupport::Concern
|
5
|
-
|
6
|
-
included do
|
7
|
-
include Hydra::AssetsControllerHelper
|
8
|
-
include Cul::Hydra::Controllers::Helpers::ResourcesHelperBehavior
|
9
|
-
include Hydra::RepositoryController
|
10
|
-
include MediaShelf::ActiveFedoraHelper
|
11
|
-
include Blacklight::SolrHelper
|
12
|
-
before_filter :require_fedora
|
13
|
-
prepend_before_filter :sanitize_update_params
|
14
|
-
end
|
15
|
-
|
16
|
-
def index
|
17
|
-
if params[:layout] == "false"
|
18
|
-
# action = "index_embedded"
|
19
|
-
layout = false
|
20
|
-
end
|
21
|
-
if !params[:container_id].nil?
|
22
|
-
container_uri = "info:fedora/#{params[:container_id]}"
|
23
|
-
escaped_uri = container_uri.gsub(/(:)/, '\\:')
|
24
|
-
extra_controller_params = {:q=>"cul_member_of_s:#{escaped_uri}"}
|
25
|
-
@response, @document_list = get_search_results( extra_controller_params )
|
26
|
-
|
27
|
-
# Including this line so permissions tests can be run against the container
|
28
|
-
@container_response, @document = get_solr_response_for_doc_id(params[:container_id])
|
29
|
-
|
30
|
-
# Including these lines for backwards compatibility (until we can use Rails3 callbacks)
|
31
|
-
@container = ActiveFedora::Base.load_instance(params[:container_id])
|
32
|
-
@solr_result = @container.file_objects(:response_format=>:solr)
|
33
|
-
else
|
34
|
-
# @solr_result = ActiveFedora::SolrService.instance.conn.query('has_model_field:info\:fedora/ldpd\:Resource', @search_params)
|
35
|
-
@solr_result = Resource.find_by_solr(:all)
|
36
|
-
end
|
37
|
-
render :action=>params[:action], :layout=>layout
|
38
|
-
end
|
39
|
-
|
40
|
-
def new
|
41
|
-
@asset = StaticImageAggregator.new
|
42
|
-
apply_depositor_metadata(@asset)
|
43
|
-
set_collection_type(@asset, params[:content_type])
|
44
|
-
if !params[:container_id].nil?
|
45
|
-
associate_resource_with_container(@asset, params[:container_id])
|
46
|
-
end
|
47
|
-
@asset.save
|
48
|
-
@asset.refresh
|
49
|
-
msg = "Created a Static Image Aggregator with pid #{@asset.pid}. Now it's ready to be edited."
|
50
|
-
flash[:notice]= msg
|
51
|
-
|
52
|
-
if params.has_key?(:Filedata)
|
53
|
-
@file_asset = create_and_save_resource_from_params
|
54
|
-
apply_depositor_metadata(@file_asset)
|
55
|
-
|
56
|
-
flash[:notice] += " The file #{params[:Filename]} has been saved in <a href=\"#{asset_url(@file_asset.pid)}\">#{@file_asset.pid}</a>."
|
57
|
-
|
58
|
-
if !params[:container_id].nil?
|
59
|
-
associate_resource_with_container(@file_asset, @asset.pid)
|
60
|
-
end
|
61
|
-
|
62
|
-
## Apply any posted file metadata
|
63
|
-
unless params[:asset].nil?
|
64
|
-
logger.debug("applying submitted file metadata: #{@sanitized_params.inspect}")
|
65
|
-
@metadata_update_response = update_document(@file_asset, @sanitized_params)
|
66
|
-
end
|
67
|
-
@file_asset.save
|
68
|
-
# If redirect_params has not been set, use {:action=>:index}
|
69
|
-
logger.debug "Created #{@file_asset.pid}."
|
70
|
-
end
|
71
|
-
@asset.save
|
72
|
-
|
73
|
-
session[:scripts] = params[:combined] == "true"
|
74
|
-
redirect_to url_for(:action=>"edit", :id=>@asset.pid, :new_asset=>true, :controller=>'catalog')
|
75
|
-
|
76
|
-
end
|
77
|
-
|
78
|
-
# Common destroy method for all AssetsControllers
|
79
|
-
def destroy
|
80
|
-
# The correct implementation, with garbage collection:
|
81
|
-
# if params.has_key?(:container_id)
|
82
|
-
# container = ActiveFedora::Base.load_instance(params[:container_id])
|
83
|
-
# container.file_objects_remove(params[:id])
|
84
|
-
# FileAsset.garbage_collect(params[:id])
|
85
|
-
# else
|
86
|
-
|
87
|
-
# The dirty implementation (leaves relationship in container object, deletes regardless of whether the file object has other containers)
|
88
|
-
ActiveFedora::Base.load_instance(params[:id]).delete
|
89
|
-
render :text => "Deleted #{params[:id]} from #{params[:container_id]}."
|
90
|
-
end
|
91
|
-
|
92
|
-
|
93
|
-
def show
|
94
|
-
@image_agg = StaticImageAggregator.find(params[:id])
|
95
|
-
if (@image_agg.nil?)
|
96
|
-
logger.warn("No such object: " + params[:id])
|
97
|
-
flash[:notice]= "No such object."
|
98
|
-
redirect_to(:action => 'index', :q => nil , :f => nil)
|
99
|
-
else
|
100
|
-
@id_array = @image_agg.containers(:response_format => :id_array)
|
101
|
-
end
|
102
|
-
render :action=>params[:action], :layout=>(params[:layout]=="false")
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|
@@ -1,126 +0,0 @@
|
|
1
|
-
require 'cul_hydra'
|
2
|
-
require 'json'
|
3
|
-
module Cul::Hydra::Controllers
|
4
|
-
module Suggestions
|
5
|
-
extend ActiveSupport::Concern
|
6
|
-
included do
|
7
|
-
include Blacklight::SolrHelper
|
8
|
-
include MediaShelf::ActiveFedoraHelper
|
9
|
-
end
|
10
|
-
|
11
|
-
def index
|
12
|
-
stub = params[:term] || ""
|
13
|
-
if params[:term_id].nil?
|
14
|
-
raise "Cannot provide suggestions without a term name"
|
15
|
-
end
|
16
|
-
field_name = params[:term_id]
|
17
|
-
field_key = field_key_from(field_name, Cul::Hydra::Om::ModsDocument.terminology)
|
18
|
-
solr_name = get_solr_name(field_key, Cul::Hydra::Om::ModsDocument)
|
19
|
-
solr_params = {}
|
20
|
-
solr_params['wt'] = 'json'
|
21
|
-
solr_params['terms'] = 'true'
|
22
|
-
solr_params['terms.fl'] = solr_name
|
23
|
-
solr_params['terms.lower'] = stub
|
24
|
-
solr_params['terms.lower.incl'] = false
|
25
|
-
solr_params['terms.prefix'] = stub
|
26
|
-
solr_params['terms.sort'] = 'index'
|
27
|
-
solr_response = Blacklight.solr.get 'terms', {:params => solr_params}
|
28
|
-
result = []
|
29
|
-
hash = {}
|
30
|
-
(1...solr_response['terms'].length).step(2) { |ix|
|
31
|
-
solr_response['terms'][ix].each { |val|
|
32
|
-
result << val if val.is_a? String
|
33
|
-
}
|
34
|
-
}
|
35
|
-
send_data result.to_json, :disposition => 'inline', :type => 'text/plain'
|
36
|
-
return
|
37
|
-
end
|
38
|
-
|
39
|
-
## field_key_from(field_name) to reverse this method from HydraFedoraMetadataHelper
|
40
|
-
# def field_name_for(field_key)
|
41
|
-
# if field_key.kind_of?(Array)
|
42
|
-
# return OM::XML::Terminology.term_hierarchical_name(*field_key)
|
43
|
-
# else
|
44
|
-
# field_key.to_s
|
45
|
-
# end
|
46
|
-
# end
|
47
|
-
|
48
|
-
def field_key_from(field_name, terminology)
|
49
|
-
# this is a hack, but necessary until/unless OM generates names differently
|
50
|
-
candidates = field_name.split('__')
|
51
|
-
field_key = []
|
52
|
-
candidates.each_with_index { |candidate, ix|
|
53
|
-
if (candidates[ix + 1] and candidates[ix + 1].match(/\d+/))
|
54
|
-
field_key << {OM.destringify(candidate) => Integer(candidates.delete_at(ix + 1))}
|
55
|
-
else
|
56
|
-
field_key << OM.destringify(candidate)
|
57
|
-
end
|
58
|
-
}
|
59
|
-
logger.debug field_key.inspect
|
60
|
-
field_key
|
61
|
-
end
|
62
|
-
|
63
|
-
# ** largely copied from ActiveFedora::NokogiriDatastream.get_values **
|
64
|
-
def get_solr_name(term_pointer, dsClass)
|
65
|
-
term = dsClass.terminology.retrieve_term(*OM.pointers_to_flat_array(term_pointer, false))
|
66
|
-
names = []
|
67
|
-
if is_hierarchical_term_pointer?(*term_pointer)
|
68
|
-
bases = []
|
69
|
-
#add first item in term_pointer as start of bases
|
70
|
-
# then iterate through possible nodes that might exist
|
71
|
-
term_pointer.first.kind_of?(Hash) ? bases << term_pointer.first.keys.first : bases << term_pointer.first
|
72
|
-
for i in 1..(term_pointer.length-1)
|
73
|
-
#iterate in reverse so that we can modify the bases array while iterating
|
74
|
-
(bases.length-1).downto(0) do |j|
|
75
|
-
current_last = (term_pointer[i].kind_of?(Hash) ? term_pointer[i].keys.first : term_pointer[i])
|
76
|
-
if (term_pointer[i-1].kind_of?(Hash))
|
77
|
-
#just use index supplied instead of trying possibilities
|
78
|
-
index = term_pointer[i-1].values.first
|
79
|
-
solr_name_base = OM::XML::Terminology.term_hierarchical_name({bases[j]=>index},current_last)
|
80
|
-
solr_name = generate_solr_symbol(solr_name_base, term.data_type)
|
81
|
-
bases.delete_at(j)
|
82
|
-
#insert the new solr name base if found
|
83
|
-
bases.insert(j,solr_name_base) if has_solr_name?(solr_name,solr_doc)
|
84
|
-
else
|
85
|
-
#detect how many nodes exist
|
86
|
-
index = 0
|
87
|
-
current_base = bases[j]
|
88
|
-
bases.delete_at(j)
|
89
|
-
solr_name_base = OM::XML::Terminology.term_hierarchical_name({current_base=>index},current_last)
|
90
|
-
solr_name = generate_solr_symbol(solr_name_base, term.data_type)
|
91
|
-
bases.insert(j,solr_name_base)
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
95
|
-
bases.each do |base|
|
96
|
-
names << generate_solr_symbol(base.to_sym, term.data_type)
|
97
|
-
end
|
98
|
-
else
|
99
|
-
#this is not hierarchical and we can simply look for the solr name created using the terms without any indexes
|
100
|
-
generic_field_name_base = OM::XML::Terminology.term_generic_name(*term_pointer)
|
101
|
-
names << generate_solr_symbol(generic_field_name_base, term.data_type)
|
102
|
-
end
|
103
|
-
names
|
104
|
-
end
|
105
|
-
|
106
|
-
# ** copied from ActiveFedora::NokogiriDatastream **
|
107
|
-
#@return true if the term_pointer contains an index
|
108
|
-
# ====Example:
|
109
|
-
# [:image, {:title_set=>1}, :title] return true
|
110
|
-
# [:image, :title_set, :title] return false
|
111
|
-
def is_hierarchical_term_pointer?(*term_pointer)
|
112
|
-
if term_pointer.length>1
|
113
|
-
term_pointer.each do |pointer|
|
114
|
-
if pointer.kind_of?(Hash)
|
115
|
-
return true
|
116
|
-
end
|
117
|
-
end
|
118
|
-
end
|
119
|
-
return false
|
120
|
-
end
|
121
|
-
# ** copied from ActiveFedora::NokogiriDatastream **
|
122
|
-
def generate_solr_symbol(base, data_type)
|
123
|
-
Solrizer::XML::TerminologyBasedSolrizer.default_field_mapper.solr_name(base.to_sym, data_type)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
@@ -1,205 +0,0 @@
|
|
1
|
-
require 'cul_hydra'
|
2
|
-
require 'json'
|
3
|
-
require 'blacklight'
|
4
|
-
module Cul::Hydra::Controllers
|
5
|
-
module Terms
|
6
|
-
extend ActiveSupport::Concern
|
7
|
-
included do
|
8
|
-
include ::Blacklight::SearchHelper
|
9
|
-
#include MediaShelf::ActiveFedoraHelper
|
10
|
-
end
|
11
|
-
|
12
|
-
def index
|
13
|
-
if params[:layout] == "false"
|
14
|
-
layout = false
|
15
|
-
end
|
16
|
-
if params[:term_id]
|
17
|
-
@solr_name = solr_name(params[:term_id])
|
18
|
-
else
|
19
|
-
@solr_name = params[:solr_name]
|
20
|
-
end
|
21
|
-
@terms = term_values
|
22
|
-
render :action=>params[:action], :layout=>layout
|
23
|
-
end
|
24
|
-
|
25
|
-
# this method should be overridden to use the appropriate terminology
|
26
|
-
def solr_name(term_id)
|
27
|
-
if term_id.nil?
|
28
|
-
raise "Cannot provide suggestions without a term name"
|
29
|
-
end
|
30
|
-
field_key = field_key_from(term_id, Cul::Hydra::Om::ModsDocument.terminology)
|
31
|
-
get_solr_name(field_key, Cul::Hydra::Om::ModsDocument)
|
32
|
-
end
|
33
|
-
def term_values
|
34
|
-
if @solr_name.nil?
|
35
|
-
logger.debug "no solr field name, return nil for term values"
|
36
|
-
return nil
|
37
|
-
end
|
38
|
-
stub = params[:term_value]
|
39
|
-
solr_params = {}
|
40
|
-
solr_params['wt'] = 'json'
|
41
|
-
solr_params['terms'] = 'true'
|
42
|
-
solr_params['terms.fl'] = @solr_name
|
43
|
-
if stub
|
44
|
-
solr_params['terms.lower'] = stub
|
45
|
-
solr_params['terms.lower.incl'] = false
|
46
|
-
solr_params['terms.prefix'] = stub
|
47
|
-
solr_params['terms.sort'] = 'index'
|
48
|
-
else
|
49
|
-
solr_params['terms.sort'] = params.fetch(:sort,'count')
|
50
|
-
solr_params['terms.limit'] = -1
|
51
|
-
end
|
52
|
-
solr_response = Blacklight.solr.get 'terms', {:params => solr_params}
|
53
|
-
result = []
|
54
|
-
hash = {}
|
55
|
-
(1...solr_response['terms'].length).step(2) { |ix|
|
56
|
-
_t = solr_response['terms'][ix]
|
57
|
-
(0..._t.length).step(2) { |jx|
|
58
|
-
result << [_t[jx], _t[jx + 1]]
|
59
|
-
}
|
60
|
-
}
|
61
|
-
return result
|
62
|
-
end
|
63
|
-
|
64
|
-
## field_key_from(field_name) to reverse this method from HydraFedoraMetadataHelper
|
65
|
-
# def field_name_for(field_key)
|
66
|
-
# if field_key.kind_of?(Array)
|
67
|
-
# return OM::XML::Terminology.term_hierarchical_name(*field_key)
|
68
|
-
# else
|
69
|
-
# field_key.to_s
|
70
|
-
# end
|
71
|
-
# end
|
72
|
-
|
73
|
-
def field_key_from(hier_field_name, t)
|
74
|
-
candidates = hier_field_name.split('_')
|
75
|
-
field_key = []
|
76
|
-
candidates.inject(field_key) { |ptrs, term|
|
77
|
-
if term =~ /\d+/
|
78
|
-
ptr = {ptrs.pop=>term.to_i}
|
79
|
-
else
|
80
|
-
ptr = (ptrs.empty? or ptrs.last.is_a? Hash) ? term.to_sym : (ptrs.pop.to_s + "_" + term).to_sym
|
81
|
-
end
|
82
|
-
ptrs.push ptr
|
83
|
-
}
|
84
|
-
return field_key if t.has_term? *field_key
|
85
|
-
# pointers are probably from ambiguous underscores
|
86
|
-
amb = field_key.dup
|
87
|
-
field_key = []
|
88
|
-
amb.each do |candidate|
|
89
|
-
key = (candidate.is_a? Hash) ? candidate.keys.first : candidate # no indexes should be included
|
90
|
-
parts = key.to_s.split('_')
|
91
|
-
ptrs = parts_to_terms(parts, t, field_key)
|
92
|
-
if ptrs.nil? or !t.has_term? *ptrs
|
93
|
-
raise "Couldn't generate pointer from term name going forward for \"" + hier_field_name + "\" (no matched term sequence)"
|
94
|
-
else
|
95
|
-
if candidate.is_a? Hash
|
96
|
-
ptr_key = ptrs.pop
|
97
|
-
ptrs.push({ptr_key => candidate[candidate.keys.first] })
|
98
|
-
end
|
99
|
-
field_key = ptrs
|
100
|
-
end
|
101
|
-
end
|
102
|
-
return field_key if t.has_term? *field_key
|
103
|
-
raise "Couldn't generate pointer from term name going forward for \"" + hier_field_name + "\", tried " + field_key.inspect
|
104
|
-
end
|
105
|
-
|
106
|
-
def parts_to_terms(parts, t, prefix=[])
|
107
|
-
return nil if parts.length == 0 # this should be short-circuited in the loop below rather than recurring
|
108
|
-
if parts.length == 1
|
109
|
-
new_term_ptr = prefix.dup.push parts[0].to_sym
|
110
|
-
if t.has_term? *new_term_ptr
|
111
|
-
return new_term_ptr
|
112
|
-
else
|
113
|
-
return nil
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
results = []
|
118
|
-
parts.each_index do |ix|
|
119
|
-
term_ptr = prefix.dup.push parts[0...(parts.length - ix)].join('_').to_sym
|
120
|
-
|
121
|
-
if t.has_term? *term_ptr
|
122
|
-
case ix
|
123
|
-
when 0
|
124
|
-
results.push term_ptr
|
125
|
-
when 1
|
126
|
-
new_term_ptr = term_ptr.concat [parts.last.to_sym]
|
127
|
-
results.push new_term_ptr if t.has_term? *new_term_ptr
|
128
|
-
else
|
129
|
-
new_term_ptr = parts_to_terms(parts[parts.length - ix, ix], t, term_ptr)
|
130
|
-
results.push new_term_ptr if !new_term_ptr.nil?
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
if results.length == 1
|
136
|
-
return results[0]
|
137
|
-
else
|
138
|
-
return nil
|
139
|
-
end
|
140
|
-
end
|
141
|
-
|
142
|
-
# ** largely copied from ActiveFedora::NokogiriDatastream.get_values **
|
143
|
-
def get_solr_name(term_pointer, dsClass)
|
144
|
-
term = dsClass.terminology.retrieve_term(*OM.pointers_to_flat_array(term_pointer, false))
|
145
|
-
names = []
|
146
|
-
if is_hierarchical_term_pointer?(*term_pointer)
|
147
|
-
bases = []
|
148
|
-
#add first item in term_pointer as start of bases
|
149
|
-
# then iterate through possible nodes that might exist
|
150
|
-
term_pointer.first.kind_of?(Hash) ? bases << term_pointer.first.keys.first : bases << term_pointer.first
|
151
|
-
for i in 1..(term_pointer.length-1)
|
152
|
-
#iterate in reverse so that we can modify the bases array while iterating
|
153
|
-
(bases.length-1).downto(0) do |j|
|
154
|
-
current_last = (term_pointer[i].kind_of?(Hash) ? term_pointer[i].keys.first : term_pointer[i])
|
155
|
-
if (term_pointer[i-1].kind_of?(Hash))
|
156
|
-
#just use index supplied instead of trying possibilities
|
157
|
-
index = term_pointer[i-1].values.first
|
158
|
-
solr_name_base = OM::XML::Terminology.term_hierarchical_name({bases[j]=>index},current_last)
|
159
|
-
solr_name = generate_solr_symbol(solr_name_base, term.data_type)
|
160
|
-
bases.delete_at(j)
|
161
|
-
#insert the new solr name base if found
|
162
|
-
bases.insert(j,solr_name_base) if has_solr_name?(solr_name,solr_doc)
|
163
|
-
else
|
164
|
-
#detect how many nodes exist
|
165
|
-
index = 0
|
166
|
-
current_base = bases[j]
|
167
|
-
bases.delete_at(j)
|
168
|
-
solr_name_base = OM::XML::Terminology.term_hierarchical_name({current_base=>index},current_last)
|
169
|
-
solr_name = generate_solr_symbol(solr_name_base, term.data_type)
|
170
|
-
bases.insert(j,solr_name_base)
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
174
|
-
bases.each do |base|
|
175
|
-
names << generate_solr_symbol(base.to_sym, term.data_type)
|
176
|
-
end
|
177
|
-
else
|
178
|
-
#this is not hierarchical and we can simply look for the solr name created using the terms without any indexes
|
179
|
-
generic_field_name_base = OM::XML::Terminology.term_generic_name(*term_pointer)
|
180
|
-
names << generate_solr_symbol(generic_field_name_base, term.data_type)
|
181
|
-
end
|
182
|
-
names
|
183
|
-
end
|
184
|
-
|
185
|
-
# ** copied from ActiveFedora::NokogiriDatastream **
|
186
|
-
#@return true if the term_pointer contains an index
|
187
|
-
# ====Example:
|
188
|
-
# [:image, {:title_set=>1}, :title] return true
|
189
|
-
# [:image, :title_set, :title] return false
|
190
|
-
def is_hierarchical_term_pointer?(*term_pointer)
|
191
|
-
if term_pointer.length>1
|
192
|
-
term_pointer.each do |pointer|
|
193
|
-
if pointer.kind_of?(Hash)
|
194
|
-
return true
|
195
|
-
end
|
196
|
-
end
|
197
|
-
end
|
198
|
-
return false
|
199
|
-
end
|
200
|
-
# ** copied from ActiveFedora::NokogiriDatastream **
|
201
|
-
def generate_solr_symbol(base, data_type)
|
202
|
-
Solrizer::XML::TerminologyBasedSolrizer.default_field_mapper.solr_name(base.to_sym, data_type)
|
203
|
-
end
|
204
|
-
end
|
205
|
-
end
|