cul_scv_hydra 0.14.2 → 0.15.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 +8 -8
- data/app/models/concerns/cul/scv/hydra/models/aggregator.rb +1 -1
- data/app/models/concerns/cul/scv/hydra/models/common.rb +17 -0
- data/app/models/generic_aggregator.rb +6 -0
- data/app/models/generic_resource.rb +1 -1
- data/config/jetty.yml +6 -0
- data/lib/cul_scv_fedora/rubydora_patch.rb +6 -1
- data/lib/cul_scv_hydra/indexer.rb +1 -18
- data/lib/cul_scv_hydra/risearch_members.rb +51 -0
- data/lib/cul_scv_hydra/version.rb +1 -1
- data/lib/cul_scv_hydra.rb +1 -0
- data/lib/tasks/cmodel.rake +7 -2
- data/lib/tasks/cul_hydra_dev.rake +43 -0
- data/lib/tasks/index.rake +2 -1
- metadata +19 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
MjMwMTA4NzFkZDdjYzVlNDFkZWY4MTUxMzIwNWRjMzlhZjNkZjY5Mw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjYwYzkxNjFlY2VmY2UzOTRiY2MwZmJhNWEwMGJhOWJhODhhY2UwYg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
M2NiZjkxOTQ4YjEyNGE1NTE0YWVhNzQxNTdlZDVmMGRlOTk0NmU4ZDNlMzgw
|
10
|
+
NWJhNDJlMGY4MmFkYWQzMjg5MmVjYjY4NGM5NjhhMDgzZTRkNzE3MWFhYWE1
|
11
|
+
MjllZTg4Y2NkODhlNDZjYmE1NDdiZWYwYTQxNDY3ZmUyODYzY2Q=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
NDY3Njc4ZTJjOTRjMzNjNWE0ZWE1YjZlNzVkM2Q4MTUxZGU4ZjI0NzYwMDE0
|
14
|
+
YmI4YmRmMzdhODUzNTNmNzNjN2YyZGExNGI3MzJlMmE5MGRjNGMwYWM1MDQ4
|
15
|
+
NTkyN2VmMjJkNjBhMTE5NmM5MWNiNmNlZDExZTBiMWYzMTZiNDA=
|
@@ -75,6 +75,7 @@ module Cul::Scv::Hydra::Models::Common
|
|
75
75
|
|
76
76
|
def to_solr(solr_doc = Hash.new, opts={})
|
77
77
|
solr_doc = super(solr_doc, opts)
|
78
|
+
|
78
79
|
if has_desc?
|
79
80
|
solr_doc["descriptor_ssi"] = ["mods"]
|
80
81
|
else
|
@@ -114,6 +115,7 @@ module Cul::Scv::Hydra::Models::Common
|
|
114
115
|
end
|
115
116
|
}
|
116
117
|
solr_doc[:structured_bsi] = 'false' unless solr_doc.has_key? :structured_bsi
|
118
|
+
|
117
119
|
solr_doc
|
118
120
|
end
|
119
121
|
|
@@ -180,4 +182,19 @@ module Cul::Scv::Hydra::Models::Common
|
|
180
182
|
response[OM::XML::Terminology.term_hierarchical_name(pointer)] = returned
|
181
183
|
}
|
182
184
|
end
|
185
|
+
|
186
|
+
def legacy_content_path(ds, ds_root=ActiveFedora.config.credentials[:datastreams_root])
|
187
|
+
unless ds.controlGroup == 'M'
|
188
|
+
return ds.dsLocation
|
189
|
+
end
|
190
|
+
cd = ds.dsCreateDate
|
191
|
+
tz = ActiveFedora.config.credentials[:time_zone]
|
192
|
+
tzi = ActiveSupport::TimeZone.find_tzinfo(tz)
|
193
|
+
ld = tzi.utc_to_local(cd)
|
194
|
+
month = (ld.month < 10) ? "0#{ld.month}" : ld.month.to_s
|
195
|
+
day = (ld.day < 10) ? "0#{ld.day}" : ld.day.to_s
|
196
|
+
hour = (ld.hour < 10) ? "0#{ld.hour}" : ld.hour.to_s
|
197
|
+
min = (ld.min < 10) ? "0#{ld.min}" : ld.min.to_s
|
198
|
+
return File.join(ds_root,"#{ld.year}/#{month}#{day}/#{hour}/#{min}", ds.dsLocation.sub(':','_'))
|
199
|
+
end
|
183
200
|
end
|
@@ -32,4 +32,10 @@ class GenericAggregator < ::ActiveFedora::Base
|
|
32
32
|
label
|
33
33
|
end
|
34
34
|
|
35
|
+
def to_solr(solr_doc = Hash.new, opts={})
|
36
|
+
solr_doc = super(solr_doc, opts)
|
37
|
+
solr_doc["cul_number_of_members_isi"] = Cul::Scv::Hydra::RisearchMembers.get_direct_member_pids(pid).length
|
38
|
+
solr_doc
|
39
|
+
end
|
40
|
+
|
35
41
|
end
|
@@ -61,7 +61,7 @@ class GenericResource < ::ActiveFedora::Base
|
|
61
61
|
if self.zooming?
|
62
62
|
fz = rels_int.relationships(datastreams['content'], :foaf_zooming).first.object.to_s.split('/')[-1]
|
63
63
|
ds = datastreams[fz]
|
64
|
-
rft_id = ds.controlGroup == 'E' ? datastreams[fz].dsLocation :
|
64
|
+
rft_id = ds.controlGroup == 'E' ? datastreams[fz].dsLocation : legacy_content_path(ds,'info:fedora/datastreams/')
|
65
65
|
solr_doc['rft_id_ss'] = rft_id
|
66
66
|
end
|
67
67
|
solr_doc
|
data/config/jetty.yml
ADDED
@@ -3,7 +3,12 @@ module Cul
|
|
3
3
|
module Fedora
|
4
4
|
module RubydoraPatch
|
5
5
|
def find_by_itql query, options = {}
|
6
|
-
|
6
|
+
begin
|
7
|
+
self.risearch(query, {:lang => 'itql'}.merge(options))
|
8
|
+
rescue Exception => e
|
9
|
+
logger.error e
|
10
|
+
"{\"results\":[]}"
|
11
|
+
end
|
7
12
|
end
|
8
13
|
end
|
9
14
|
end
|
@@ -25,24 +25,7 @@ module Cul::Scv::Hydra::Indexer
|
|
25
25
|
|
26
26
|
puts 'Recursively retreieving and indexing all members...'
|
27
27
|
|
28
|
-
|
29
|
-
'select $child $parent $cmodel from <#ri>
|
30
|
-
where
|
31
|
-
walk($child <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '> and $child <http://purl.oclc.org/NET/CUL/memberOf> $parent)
|
32
|
-
and
|
33
|
-
$child <fedora-model:hasModel> $cmodel'
|
34
|
-
|
35
|
-
puts 'Performing query:' if verbose_output
|
36
|
-
puts member_query if verbose_output
|
37
|
-
|
38
|
-
search_response = JSON(Cul::Scv::Fedora.repository.find_by_itql(member_query, {
|
39
|
-
:type => 'tuples',
|
40
|
-
:format => 'json',
|
41
|
-
:limit => '',
|
42
|
-
:stream => 'on'
|
43
|
-
}))
|
44
|
-
|
45
|
-
unique_pids = search_response['results'].map{|result| result['child'].gsub('info:fedora/', '') }.uniq
|
28
|
+
unique_pids = Cul::Scv::Hydra::RisearchMembers.get_recursive_member_pids(pid, true)
|
46
29
|
|
47
30
|
total_number_of_members = unique_pids.length
|
48
31
|
puts 'Recursive search found ' + total_number_of_members.to_s + ' members.' if verbose_output
|
@@ -0,0 +1,51 @@
|
|
1
|
+
module Cul::Scv::Hydra::RisearchMembers
|
2
|
+
|
3
|
+
def self.get_recursive_member_pids(pid, verbose_output=false)
|
4
|
+
|
5
|
+
recursive_member_query =
|
6
|
+
'select $child $parent $cmodel from <#ri>
|
7
|
+
where
|
8
|
+
walk($child <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '> and $child <http://purl.oclc.org/NET/CUL/memberOf> $parent)
|
9
|
+
and
|
10
|
+
$child <fedora-model:hasModel> $cmodel'
|
11
|
+
|
12
|
+
puts 'Performing query:' if verbose_output
|
13
|
+
puts recursive_member_query if verbose_output
|
14
|
+
|
15
|
+
search_response = JSON(Cul::Scv::Fedora.repository.find_by_itql(recursive_member_query, {
|
16
|
+
:type => 'tuples',
|
17
|
+
:format => 'json',
|
18
|
+
:limit => '',
|
19
|
+
:stream => 'on'
|
20
|
+
}))
|
21
|
+
|
22
|
+
unique_pids = search_response['results'].map{|result| result['child'].gsub('info:fedora/', '') }.uniq
|
23
|
+
|
24
|
+
return unique_pids
|
25
|
+
|
26
|
+
end
|
27
|
+
|
28
|
+
def self.get_direct_member_pids(pid, verbose_output=false)
|
29
|
+
|
30
|
+
direct_member_query =
|
31
|
+
'select $pid $cmodel from <#ri>
|
32
|
+
where $pid <http://purl.oclc.org/NET/CUL/memberOf> <fedora:' + pid + '>
|
33
|
+
and $pid <fedora-model:hasModel> $cmodel'
|
34
|
+
|
35
|
+
puts 'Performing query:' if verbose_output
|
36
|
+
puts direct_member_query if verbose_output
|
37
|
+
|
38
|
+
search_response = JSON(Cul::Scv::Fedora.repository.find_by_itql(direct_member_query, {
|
39
|
+
:type => 'tuples',
|
40
|
+
:format => 'json',
|
41
|
+
:limit => '',
|
42
|
+
:stream => 'on'
|
43
|
+
}))
|
44
|
+
|
45
|
+
unique_pids = search_response['results'].map{|result| result['pid'].gsub('info:fedora/', '') }.uniq
|
46
|
+
|
47
|
+
return unique_pids
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
data/lib/cul_scv_hydra.rb
CHANGED
@@ -45,6 +45,7 @@ require "cul_scv_hydra/access_controls_enforcement"
|
|
45
45
|
require "cul_scv_hydra/controllers"
|
46
46
|
require "cul_scv_hydra/om"
|
47
47
|
require "cul_scv_hydra/indexer"
|
48
|
+
require "cul_scv_hydra/risearch_members"
|
48
49
|
require "cul_scv_hydra/solrizer"
|
49
50
|
require "cul_scv_hydra/version"
|
50
51
|
require "cul_scv_hydra/engine" if defined? Rails
|
data/lib/tasks/cmodel.rake
CHANGED
@@ -1,4 +1,9 @@
|
|
1
1
|
APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../")
|
2
|
+
require 'active-fedora'
|
3
|
+
|
4
|
+
def logger
|
5
|
+
@logger ||= Logger.new($stdout)
|
6
|
+
end
|
2
7
|
|
3
8
|
def filename_for_pid(pid)
|
4
9
|
pid.gsub(/\:/,'_') + '.xml'
|
@@ -27,9 +32,9 @@ def config_subs
|
|
27
32
|
cfile = File.join(APP_ROOT,'config','subs.yml')
|
28
33
|
subs = {}
|
29
34
|
if File.exists? cfile
|
30
|
-
open(cfile) {|blob| subs = YAML::load(blob)[
|
35
|
+
open(cfile) {|blob| subs = YAML::load(blob)[ENV['RAILS_ENV'] || 'test'] }
|
31
36
|
else
|
32
|
-
|
37
|
+
logger.warn("No subs.yml found; CModels will be loaded without inline substitutions")
|
33
38
|
end
|
34
39
|
subs
|
35
40
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../")
|
2
|
+
|
3
|
+
require 'jettywrapper'
|
4
|
+
JETTY_ZIP_BASENAME = 'master'
|
5
|
+
Jettywrapper.url = "https://github.com/projecthydra/hydra-jetty/archive/#{JETTY_ZIP_BASENAME}.zip"
|
6
|
+
|
7
|
+
namespace :cul_hydra do
|
8
|
+
require 'rspec/core/rake_task'
|
9
|
+
RSpec::Core::RakeTask.new(:rspec) do |spec|
|
10
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
11
|
+
spec.pattern += FileList['spec/*_spec.rb']
|
12
|
+
spec.rspec_opts = ['--backtrace'] if ENV['CI']
|
13
|
+
end
|
14
|
+
|
15
|
+
RSpec::Core::RakeTask.new(:rcov) do |spec|
|
16
|
+
spec.pattern = FileList['spec/**/*_spec.rb']
|
17
|
+
spec.pattern += FileList['spec/*_spec.rb']
|
18
|
+
spec.rcov = true
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "CI build"
|
22
|
+
task :ci do
|
23
|
+
ENV['environment'] = "test"
|
24
|
+
#Rake::Task["active_fedora:configure_jetty"].invoke
|
25
|
+
jetty_params = Jettywrapper.load_config
|
26
|
+
error = Jettywrapper.wrap(jetty_params) do
|
27
|
+
Rake::Task["cul_scv_hydra:cmodel:reload_all"].invoke
|
28
|
+
Rake::Task['cul_hydra:coverage'].invoke
|
29
|
+
end
|
30
|
+
raise "test failures: #{error}" if error
|
31
|
+
end
|
32
|
+
|
33
|
+
desc "Execute specs with coverage"
|
34
|
+
task :coverage do
|
35
|
+
# Put spec opts in a file named .rspec in root
|
36
|
+
ruby_engine = defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby"
|
37
|
+
ENV['COVERAGE'] = 'true' unless ruby_engine == 'jruby'
|
38
|
+
|
39
|
+
# Rake::Task["active_fedora:fixtures"].invoke
|
40
|
+
Rake::Task["cul_hydra:rspec"].invoke
|
41
|
+
end
|
42
|
+
|
43
|
+
end
|
data/lib/tasks/index.rake
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cul_scv_hydra
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.15.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Benjamin Armintor
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-06-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: blacklight
|
@@ -164,6 +164,20 @@ dependencies:
|
|
164
164
|
- - ~>
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: '2.10'
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: jettywrapper
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - ! '>='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 1.4.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - ! '>='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 1.4.0
|
167
181
|
- !ruby/object:Gem::Dependency
|
168
182
|
name: equivalent-xml
|
169
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -238,6 +252,7 @@ files:
|
|
238
252
|
- app/models/static_image_aggregator.rb
|
239
253
|
- bin/rails
|
240
254
|
- config/fedora.yml
|
255
|
+
- config/jetty.yml
|
241
256
|
- config/predicate_mappings.yml
|
242
257
|
- config/solr_mappings.yml
|
243
258
|
- config/solr_value_maps.yml
|
@@ -269,6 +284,7 @@ files:
|
|
269
284
|
- lib/cul_scv_hydra/indexer.rb
|
270
285
|
- lib/cul_scv_hydra/om.rb
|
271
286
|
- lib/cul_scv_hydra/om/standard_mods.rb
|
287
|
+
- lib/cul_scv_hydra/risearch_members.rb
|
272
288
|
- lib/cul_scv_hydra/solrizer.rb
|
273
289
|
- lib/cul_scv_hydra/solrizer/extractor.rb
|
274
290
|
- lib/cul_scv_hydra/solrizer/field_mapper.rb
|
@@ -277,6 +293,7 @@ files:
|
|
277
293
|
- lib/cul_scv_hydra/solrizer/value_mapper.rb
|
278
294
|
- lib/cul_scv_hydra/version.rb
|
279
295
|
- lib/tasks/cmodel.rake
|
296
|
+
- lib/tasks/cul_hydra_dev.rake
|
280
297
|
- lib/tasks/index.rake
|
281
298
|
homepage: https://github.com/cul/cul_scv_hydra
|
282
299
|
licenses: []
|