active-fedora 10.0.0 → 10.1.0.rc1
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/lib/active_fedora/file.rb +0 -8
- data/lib/active_fedora/nom_datastream.rb +6 -0
- data/lib/active_fedora/om_datastream.rb +14 -22
- data/lib/active_fedora/rdf.rb +0 -1
- data/lib/active_fedora/rdf/datastream_indexing.rb +6 -0
- data/lib/active_fedora/rdf/ntriples_rdf_datastream.rb +4 -0
- data/lib/active_fedora/rdf/rdf_datastream.rb +9 -0
- data/lib/active_fedora/relation/finder_methods.rb +3 -3
- data/lib/active_fedora/scoping/named.rb +1 -0
- data/lib/active_fedora/solr_query_builder.rb +10 -3
- data/lib/active_fedora/version.rb +1 -1
- data/lib/tasks/active_fedora_dev.rake +0 -8
- data/spec/integration/scoped_query_spec.rb +1 -0
- data/spec/spec_helper.rb +6 -0
- data/spec/unit/finder_methods_spec.rb +2 -2
- data/spec/unit/om_datastream_spec.rb +0 -31
- data/spec/unit/query_spec.rb +10 -10
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0da32a629ca0c04a5d83095d550ff267d2f53167
|
4
|
+
data.tar.gz: 7a68b6ee0c5231ae10e9f1c93d3cac54427ff322
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b11aa699b0ac03ed5b4a33727e7544fc74f3e027a19487bb6774334e029814030a8099b67dc6f6bb1fdf4cd0af9690bf166ac883337f4503de9c05274877eef
|
7
|
+
data.tar.gz: abadc23ff5e3f8646c991e6f3b1ac8c1367f12d8b73fea9e66d0fc98c8d8d9a1ef3d6171c78beee1d887dc49f3956b76052bb2cee101763448031f374684f07f
|
data/lib/active_fedora/file.rb
CHANGED
@@ -160,14 +160,6 @@ module ActiveFedora
|
|
160
160
|
end
|
161
161
|
private_class_method :relation
|
162
162
|
|
163
|
-
protected
|
164
|
-
|
165
|
-
# The string to prefix all solr fields with. Override this method if you want
|
166
|
-
# a prefix other than the default
|
167
|
-
def prefix(path)
|
168
|
-
path ? "#{path.underscore}__" : ''
|
169
|
-
end
|
170
|
-
|
171
163
|
private
|
172
164
|
|
173
165
|
def create_or_update(*options)
|
@@ -3,12 +3,18 @@ require "nom"
|
|
3
3
|
module ActiveFedora
|
4
4
|
class NomDatastream < File
|
5
5
|
include Datastreams::NokogiriDatastreams
|
6
|
+
extend Deprecation
|
6
7
|
|
7
8
|
def self.set_terminology(options = {}, &block)
|
8
9
|
@terminology_options = options || {}
|
9
10
|
@terminology = block
|
10
11
|
end
|
11
12
|
|
13
|
+
def initialize(*args)
|
14
|
+
super
|
15
|
+
Deprecation.warn(NomDatastream, "NomDatastream is deprecated and will be removed in ActiveFedora 11")
|
16
|
+
end
|
17
|
+
|
12
18
|
class << self
|
13
19
|
attr_reader :terminology_options
|
14
20
|
end
|
@@ -12,10 +12,16 @@ module ActiveFedora
|
|
12
12
|
include OM::XML::Document
|
13
13
|
include OM::XML::TerminologyBasedSolrizer # this adds support for calling .to_solr
|
14
14
|
include Datastreams::NokogiriDatastreams
|
15
|
+
extend Deprecation
|
15
16
|
|
16
17
|
alias om_term_values term_values unless method_defined?(:om_term_values)
|
17
18
|
alias om_update_values update_values unless method_defined?(:om_update_values)
|
18
19
|
|
20
|
+
def initialize(*args)
|
21
|
+
super
|
22
|
+
Deprecation.warn(OmDatastream, "OmDatastream is deprecated and will be removed in ActiveFedora 11")
|
23
|
+
end
|
24
|
+
|
19
25
|
def default_mime_type
|
20
26
|
'text/xml'
|
21
27
|
end
|
@@ -33,28 +39,6 @@ module ActiveFedora
|
|
33
39
|
solr_doc.merge super({}).each_with_object({}) { |(key, value), new| new[[prefix, key].join] = value }
|
34
40
|
end
|
35
41
|
|
36
|
-
# ** Experimental **
|
37
|
-
# @return [Boolean] true if either the key for name exists in solr or if its string value exists
|
38
|
-
# @param [String] name Name of key to look for
|
39
|
-
# @param [Solr::Document] solr_doc Solr doc to query
|
40
|
-
def has_solr_name?(name, solr_doc = {})
|
41
|
-
!solr_doc[name].nil? || !solr_doc[name.to_s].nil?
|
42
|
-
end
|
43
|
-
|
44
|
-
# ** Experimental **
|
45
|
-
# @return true if the term_pointer contains an index
|
46
|
-
# ====Example:
|
47
|
-
# [:image, {:title_set=>1}, :title] return true
|
48
|
-
# [:image, :title_set, :title] return false
|
49
|
-
def is_hierarchical_term_pointer?(*term_pointer)
|
50
|
-
if term_pointer.length > 1
|
51
|
-
term_pointer.each do |pointer|
|
52
|
-
return true if pointer.is_a?(Hash)
|
53
|
-
end
|
54
|
-
end
|
55
|
-
false
|
56
|
-
end
|
57
|
-
|
58
42
|
# Update field values within the current datastream using {#update_values}, which is a wrapper for {http://rdoc.info/gems/om/1.2.4/OM/XML/TermValueOperators#update_values-instance_method OM::TermValueOperators#update_values}
|
59
43
|
# Ignores any fields from params that this datastream's Terminology doesn't recognize
|
60
44
|
#
|
@@ -122,5 +106,13 @@ module ActiveFedora
|
|
122
106
|
result = om_update_values(params)
|
123
107
|
result
|
124
108
|
end
|
109
|
+
|
110
|
+
protected
|
111
|
+
|
112
|
+
# The string to prefix all solr fields with. Override this method if you want
|
113
|
+
# a prefix other than the default
|
114
|
+
def prefix(path)
|
115
|
+
path ? "#{path.underscore}__" : ''
|
116
|
+
end
|
125
117
|
end
|
126
118
|
end
|
data/lib/active_fedora/rdf.rb
CHANGED
@@ -39,5 +39,11 @@ module ActiveFedora::RDF
|
|
39
39
|
def apply_prefix(name, file_path)
|
40
40
|
prefix(file_path) + name.to_s
|
41
41
|
end
|
42
|
+
|
43
|
+
# The string to prefix all solr fields with. Override this method if you want
|
44
|
+
# a prefix other than the default
|
45
|
+
def prefix(path)
|
46
|
+
path ? "#{path.underscore}__" : ''
|
47
|
+
end
|
42
48
|
end
|
43
49
|
end
|
@@ -4,8 +4,17 @@ module ActiveFedora
|
|
4
4
|
include RDF::DatastreamIndexing
|
5
5
|
include ActiveTriples::Properties
|
6
6
|
include ActiveTriples::Reflection
|
7
|
+
extend Deprecation
|
7
8
|
|
8
9
|
delegate :rdf_subject, :set_value, :get_values, :attributes=, to: :resource
|
10
|
+
def initialize(*args)
|
11
|
+
super
|
12
|
+
deprecation_warning
|
13
|
+
end
|
14
|
+
|
15
|
+
def deprecation_warning
|
16
|
+
Deprecation.warn(RDFDatastream, "RDFDatastream is deprecated and will be removed in ActiveFedora 11", caller(2))
|
17
|
+
end
|
9
18
|
|
10
19
|
class << self
|
11
20
|
def rdf_subject(&block)
|
@@ -255,13 +255,13 @@ module ActiveFedora
|
|
255
255
|
# @param [Hash<Symbol,String>] conditions
|
256
256
|
# @return [Array<String>]
|
257
257
|
def create_query_from_hash(conditions)
|
258
|
-
conditions.map { |key, value| condition_to_clauses(key, value) }.compact
|
258
|
+
conditions.map { |key, value| condition_to_clauses(key, value, ' OR ') }.compact
|
259
259
|
end
|
260
260
|
|
261
261
|
# @param [Symbol] key
|
262
262
|
# @param [String] value
|
263
|
-
def condition_to_clauses(key, value)
|
264
|
-
SolrQueryBuilder.construct_query([[field_name_for(key), value]])
|
263
|
+
def condition_to_clauses(key, value, join_with = SolrQueryBuilder.default_join_with)
|
264
|
+
SolrQueryBuilder.construct_query([[field_name_for(key), value]], join_with)
|
265
265
|
end
|
266
266
|
|
267
267
|
# If the key is a property name, turn it into a solr field
|
@@ -13,6 +13,7 @@ module ActiveFedora
|
|
13
13
|
#
|
14
14
|
# fruits = Fruit.all
|
15
15
|
# fruits = fruits.where(color: 'red') if options[:red_only]
|
16
|
+
# fruits = fruits.where(size: ['big', 'little']) # gets big or little fruit
|
16
17
|
# fruits = fruits.limit(10) if limited?
|
17
18
|
#
|
18
19
|
# You can define a scope that applies to all finders using
|
@@ -19,7 +19,7 @@ module ActiveFedora
|
|
19
19
|
# # => _query_:"{!field f=has_model_ssim}info:fedora/afmodel:ComplexCollection" OR _query_:"{!field f=has_model_ssim}info:fedora/afmodel:ActiveFedora_Base"
|
20
20
|
#
|
21
21
|
# construct_query_for_rel [[Book._reflect_on_association(:library), "foo/bar/baz"]]
|
22
|
-
def construct_query_for_rel(field_pairs, join_with =
|
22
|
+
def construct_query_for_rel(field_pairs, join_with = default_join_with)
|
23
23
|
field_pairs = field_pairs.to_a if field_pairs.is_a? Hash
|
24
24
|
construct_query(property_values_to_solr(field_pairs), join_with)
|
25
25
|
end
|
@@ -31,8 +31,15 @@ module ActiveFedora
|
|
31
31
|
# @example
|
32
32
|
# construct_query([['library_id_ssim', '123'], ['owner_ssim', 'Fred']])
|
33
33
|
# # => "_query_:\"{!field f=library_id_ssim}123\" AND _query_:\"{!field f=owner_ssim}Fred\""
|
34
|
-
def construct_query(field_pairs, join_with =
|
35
|
-
pairs_to_clauses(field_pairs)
|
34
|
+
def construct_query(field_pairs, join_with = default_join_with)
|
35
|
+
clauses = pairs_to_clauses(field_pairs)
|
36
|
+
return "" if clauses.count == 0
|
37
|
+
return clauses.first if clauses.count == 1
|
38
|
+
"(#{clauses.join(join_with)})"
|
39
|
+
end
|
40
|
+
|
41
|
+
def default_join_with
|
42
|
+
' AND '
|
36
43
|
end
|
37
44
|
|
38
45
|
private
|
@@ -41,14 +41,6 @@ namespace :active_fedora do
|
|
41
41
|
spec.rcov = true
|
42
42
|
end
|
43
43
|
|
44
|
-
desc "Copies the default SOLR config for the bundled Testing Server"
|
45
|
-
task :configure_jetty do
|
46
|
-
FileList['lib/generators/active_fedora/config/solr/templates/solr_conf/conf/*'].each do |f|
|
47
|
-
cp("#{f}", 'jetty/solr/development-core/conf/', :verbose => true)
|
48
|
-
cp("#{f}", 'jetty/solr/test-core/conf/', :verbose => true)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
44
|
desc "CI build"
|
53
45
|
task :ci do
|
54
46
|
ENV['environment'] = "test"
|
@@ -65,6 +65,7 @@ describe ActiveFedora::Querying do
|
|
65
65
|
field = ActiveFedora.index_field_mapper.solr_name('foo', type: :string)
|
66
66
|
expect(ModelIntegrationSpec::Basic.where(field => 'Beta')).to eq [test_instance1]
|
67
67
|
expect(ModelIntegrationSpec::Basic.where('foo' => 'Beta')).to eq [test_instance1]
|
68
|
+
expect(ModelIntegrationSpec::Basic.where('foo' => ['Beta', 'Alpha'])).to eq [test_instance1, test_instance2]
|
68
69
|
end
|
69
70
|
it "orders" do
|
70
71
|
expect(ModelIntegrationSpec::Basic.order(ActiveFedora.index_field_mapper.solr_name('foo', :sortable) + ' asc')).to eq [test_instance2, test_instance1, test_instance3]
|
data/spec/spec_helper.rb
CHANGED
@@ -37,6 +37,12 @@ restore_spec_configuration
|
|
37
37
|
|
38
38
|
require 'active_fedora/cleaner'
|
39
39
|
RSpec.configure do |config|
|
40
|
+
config.before(:suite) do
|
41
|
+
ActiveFedora::RDFDatastream.deprecation_behavior = :silence
|
42
|
+
ActiveFedora::NtriplesRDFDatastream.deprecation_behavior = :silence
|
43
|
+
ActiveFedora::OmDatastream.deprecation_behavior = :silence
|
44
|
+
ActiveFedora::NomDatastream.deprecation_behavior = :silence
|
45
|
+
end
|
40
46
|
# Stub out test stuff.
|
41
47
|
config.before(:each) do
|
42
48
|
begin
|
@@ -51,8 +51,8 @@ describe ActiveFedora::FinderMethods do
|
|
51
51
|
|
52
52
|
context "when value is an array" do
|
53
53
|
let(:value) { ['one', 'four'] }
|
54
|
-
it { is_expected.to eq "_query_:\"{!field f=library_id}one\" AND " \
|
55
|
-
"_query_:\"{!field f=library_id}four\"" }
|
54
|
+
it { is_expected.to eq "(_query_:\"{!field f=library_id}one\" AND " \
|
55
|
+
"_query_:\"{!field f=library_id}four\")" }
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
@@ -256,37 +256,6 @@ describe ActiveFedora::OmDatastream do
|
|
256
256
|
end
|
257
257
|
end
|
258
258
|
|
259
|
-
describe '.has_solr_name?' do
|
260
|
-
let(:name0_role0) { ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_0_role_0_roleTerm", type: :string) }
|
261
|
-
let(:name1_role1) { ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_1_role_1_roleTerm", type: :string) }
|
262
|
-
let(:solr_doc) do
|
263
|
-
{ "id" => "mods_article1",
|
264
|
-
ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_role_roleTerm", type: :string) => ["creator", "submitter", "teacher"],
|
265
|
-
ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_0_role", type: :string) => "\r\ncreator\r\nsubmitter\r\n",
|
266
|
-
ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_1_role", type: :string) => "\r\n teacher \r\n",
|
267
|
-
name0_role0 => "creator",
|
268
|
-
ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_0_role_1_roleTerm", type: :string) => "submitter",
|
269
|
-
ActiveFedora.index_field_mapper.solr_name("desc_metadata__name_1_role_0_roleTerm", type: :string) => ["teacher"] }
|
270
|
-
end
|
271
|
-
|
272
|
-
it "returns true if the given key exists in the solr document passed in" do
|
273
|
-
expect(subject).to have_solr_name(name0_role0, solr_doc)
|
274
|
-
expect(subject).to have_solr_name(name0_role0.to_sym, solr_doc)
|
275
|
-
expect(subject).to_not have_solr_name(name1_role1, solr_doc)
|
276
|
-
# if not doc passed in should be new empty solr doc and always return false
|
277
|
-
expect(subject).to_not have_solr_name(name0_role0)
|
278
|
-
end
|
279
|
-
end
|
280
|
-
|
281
|
-
describe '.is_hierarchical_term_pointer?' do
|
282
|
-
it "returns true only if the pointer passed in is an array that contains a hash" do
|
283
|
-
expect(subject.is_hierarchical_term_pointer?(*[:image, { tag1: 1 }, :tag2])).to be true
|
284
|
-
expect(subject.is_hierarchical_term_pointer?(*[:image, :tag1, { tag2: 1 }])).to be true
|
285
|
-
expect(subject.is_hierarchical_term_pointer?(*[:image, :tag1, :tag2])).to be false
|
286
|
-
expect(subject.is_hierarchical_term_pointer?(nil)).to be false
|
287
|
-
end
|
288
|
-
end
|
289
|
-
|
290
259
|
describe '.update_values' do
|
291
260
|
subject { described_class.new }
|
292
261
|
|
data/spec/unit/query_spec.rb
CHANGED
@@ -79,8 +79,8 @@ describe ActiveFedora::Base do
|
|
79
79
|
let(:solr) { ActiveFedora::SolrService.instance.conn }
|
80
80
|
let(:expected_query) { "#{model_query} AND " \
|
81
81
|
"_query_:\"{!field f=foo}bar\" AND " \
|
82
|
-
"_query_:\"{!field f=baz}quix\"
|
83
|
-
"_query_:\"{!field f=baz}quack\"" }
|
82
|
+
"(_query_:\"{!field f=baz}quix\" OR " \
|
83
|
+
"_query_:\"{!field f=baz}quack\")" }
|
84
84
|
let(:expected_params) { { params: { sort: [sort_query], fl: 'id', q: expected_query, qt: 'standard' } } }
|
85
85
|
let(:expected_sort_params) { { params: { sort: ["title_t desc"], fl: 'id', q: expected_query, qt: 'standard' } } }
|
86
86
|
let(:mock_docs) { [{ "id" => "changeme:30" }, { "id" => "changeme:22" }] }
|
@@ -138,8 +138,8 @@ describe ActiveFedora::Base do
|
|
138
138
|
let(:solr) { ActiveFedora::SolrService.instance.conn }
|
139
139
|
let(:expected_query) { "#{model_query} AND " \
|
140
140
|
"_query_:\"{!field f=foo}bar\" AND " \
|
141
|
-
"_query_:\"{!field f=baz}quix\"
|
142
|
-
"_query_:\"{!field f=baz}quack\"" }
|
141
|
+
"(_query_:\"{!field f=baz}quix\" OR " \
|
142
|
+
"_query_:\"{!field f=baz}quack\")" }
|
143
143
|
let(:expected_params) { { params: { sort: [sort_query], fl: 'id', q: expected_query, qt: 'standard' } } }
|
144
144
|
let(:mock_docs) { [{ "id" => "changeme-30" }, { "id" => "changeme-22" }] }
|
145
145
|
|
@@ -159,8 +159,8 @@ describe ActiveFedora::Base do
|
|
159
159
|
let(:solr) { ActiveFedora::SolrService.instance.conn }
|
160
160
|
let(:expected_query) { "#{model_query} AND " \
|
161
161
|
"_query_:\"{!field f=foo}bar\" AND " \
|
162
|
-
"_query_:\"{!field f=baz}quix\"
|
163
|
-
"_query_:\"{!field f=baz}quack\"" }
|
162
|
+
"(_query_:\"{!field f=baz}quix\" OR " \
|
163
|
+
"_query_:\"{!field f=baz}quack\")" }
|
164
164
|
let(:expected_params) { { params: { sort: [sort_query], fl: 'id', q: expected_query, qt: 'standard' } } }
|
165
165
|
let(:mock_docs) { double('docs') }
|
166
166
|
|
@@ -254,8 +254,8 @@ describe ActiveFedora::Base do
|
|
254
254
|
context "with a hash of conditions" do
|
255
255
|
let(:expected_query) { "#{model_query} AND " \
|
256
256
|
"_query_:\"{!field f=foo}bar\" AND " \
|
257
|
-
"_query_:\"{!field f=baz}quix\"
|
258
|
-
"_query_:\"{!field f=baz}quack\"" }
|
257
|
+
"(_query_:\"{!field f=baz}quix\" OR " \
|
258
|
+
"_query_:\"{!field f=baz}quack\")" }
|
259
259
|
let(:conditions) { { foo: 'bar', baz: ['quix', 'quack'] } }
|
260
260
|
|
261
261
|
it "makes a query to solr and returns the results" do
|
@@ -266,8 +266,8 @@ describe ActiveFedora::Base do
|
|
266
266
|
context "with quotes in the params" do
|
267
267
|
let(:expected_query) { "#{model_query} AND " \
|
268
268
|
"_query_:\"{!field f=foo}9\\\" Nails\" AND " \
|
269
|
-
"_query_:\"{!field f=baz}7\\\" version\"
|
270
|
-
"_query_:\"{!field f=baz}quack\"" }
|
269
|
+
"(_query_:\"{!field f=baz}7\\\" version\" OR " \
|
270
|
+
"_query_:\"{!field f=baz}quack\")" }
|
271
271
|
let(:conditions) { { foo: '9" Nails', baz: ['7" version', 'quack'] } }
|
272
272
|
|
273
273
|
it "escapes quotes" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active-fedora
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.0.
|
4
|
+
version: 10.1.0.rc1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matt Zumwalt
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-07-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rsolr
|
@@ -772,9 +772,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
772
772
|
version: '2.0'
|
773
773
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
774
774
|
requirements:
|
775
|
-
- - "
|
775
|
+
- - ">"
|
776
776
|
- !ruby/object:Gem::Version
|
777
|
-
version:
|
777
|
+
version: 1.3.1
|
778
778
|
requirements: []
|
779
779
|
rubyforge_project:
|
780
780
|
rubygems_version: 2.5.1
|