active-fedora 4.1.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -3,7 +3,7 @@
3
3
  # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
4
  # development environment upon cd'ing into the directory
5
5
 
6
- ruby_string="1.9.3-p125"
6
+ ruby_string="1.9.3-p194"
7
7
  gemset_name="active_fedora_4.0"
8
8
 
9
9
  # Install rubies when used instead of only displaying a warning and exiting
data/Gemfile CHANGED
@@ -4,5 +4,13 @@ source "http://rubygems.org"
4
4
 
5
5
  gemspec
6
6
 
7
- # gem 'ruby-debug', :platform => :ruby_18
8
- # gem 'debugger' # for ruby 1.9.3
7
+ group :development, :test do
8
+ gem 'ruby-debug', :platform => :ruby_18
9
+ # gem 'debugger', :platform => :ruby_19
10
+
11
+ gem 'rcov', :platform => :mri_18
12
+ gem 'simplecov', :platform => :mri_19
13
+ gem 'simplecov-rcov', :platform => :mri_19
14
+ end
15
+
16
+ gem 'jruby-openssl', :platform=> :jruby
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active-fedora (4.1.0)
4
+ active-fedora (4.2.0)
5
5
  activeresource (>= 3.0.0)
6
6
  activesupport (>= 3.0.0)
7
7
  equivalent-xml
@@ -11,9 +11,9 @@ PATH
11
11
  nokogiri
12
12
  om (~> 1.6.0)
13
13
  rdf
14
- rdf-rdfxml (= 0.3.5)
14
+ rdf-rdfxml (~> 0.3.8)
15
15
  rsolr
16
- rubydora (~> 0.5.8)
16
+ rubydora (~> 0.5.9)
17
17
  solrizer (~> 1.2.0)
18
18
  xml-simple (>= 1.0.12)
19
19
 
@@ -21,28 +21,30 @@ GEM
21
21
  remote: http://rubygems.org/
22
22
  specs:
23
23
  RedCloth (4.2.9)
24
- activemodel (3.2.2)
25
- activesupport (= 3.2.2)
24
+ activemodel (3.2.3)
25
+ activesupport (= 3.2.3)
26
26
  builder (~> 3.0.0)
27
- activeresource (3.2.2)
28
- activemodel (= 3.2.2)
29
- activesupport (= 3.2.2)
30
- activesupport (3.2.2)
27
+ activeresource (3.2.3)
28
+ activemodel (= 3.2.3)
29
+ activesupport (= 3.2.3)
30
+ activesupport (3.2.3)
31
31
  i18n (~> 0.6)
32
32
  multi_json (~> 1.0)
33
33
  addressable (2.2.8)
34
34
  akami (1.0.0)
35
35
  gyoku (>= 0.4.0)
36
+ backports (2.5.3)
36
37
  builder (3.0.0)
37
- childprocess (0.3.1)
38
+ childprocess (0.3.2)
38
39
  ffi (~> 1.0.6)
40
+ columnize (0.3.6)
39
41
  daemons (1.1.8)
40
42
  diff-lcs (1.1.3)
41
43
  equivalent-xml (0.2.9)
42
44
  nokogiri (>= 1.4.3)
43
- fastercsv (1.5.4)
45
+ fastercsv (1.5.5)
44
46
  ffi (1.0.11)
45
- gyoku (0.4.4)
47
+ gyoku (0.4.5)
46
48
  builder (>= 2.1.2)
47
49
  httpi (0.9.7)
48
50
  rack
@@ -53,13 +55,15 @@ GEM
53
55
  i18n
54
56
  logger
55
57
  mediashelf-loggable
58
+ linecache (0.46)
59
+ rbx-require-relative (> 0.0.4)
56
60
  logger (1.2.8)
57
61
  mediashelf-loggable (0.4.9)
58
62
  metaclass (0.0.1)
59
63
  mime-types (1.18)
60
64
  mocha (0.10.5)
61
65
  metaclass (~> 0.0.1)
62
- multi_json (1.1.0)
66
+ multi_json (1.3.5)
63
67
  multipart-post (1.1.2)
64
68
  nokogiri (1.5.2)
65
69
  nori (1.1.0)
@@ -68,24 +72,35 @@ GEM
68
72
  nokogiri (>= 1.4.2)
69
73
  rack (1.4.1)
70
74
  rake (0.9.2.2)
75
+ rbx-require-relative (0.0.9)
76
+ rcov (1.0.0)
71
77
  rdf (0.3.5.2)
72
78
  addressable (>= 2.2.6)
73
- rdf-rdfxml (0.3.5)
74
- nokogiri (>= 1.4.4)
79
+ rdf-rdfxml (0.3.8)
80
+ rdf (>= 0.3.4)
81
+ rdf-xsd (>= 0.3.5)
82
+ rdf-xsd (0.3.7)
83
+ backports
84
+ nokogiri (>= 1.5.0)
75
85
  rdf (>= 0.3.4)
76
86
  rest-client (1.6.7)
77
87
  mime-types (>= 1.16)
78
88
  rsolr (1.0.8)
79
89
  builder (>= 2.1.2)
80
- rspec (2.9.0)
81
- rspec-core (~> 2.9.0)
82
- rspec-expectations (~> 2.9.0)
83
- rspec-mocks (~> 2.9.0)
84
- rspec-core (2.9.0)
85
- rspec-expectations (2.9.0)
90
+ rspec (2.10.0)
91
+ rspec-core (~> 2.10.0)
92
+ rspec-expectations (~> 2.10.0)
93
+ rspec-mocks (~> 2.10.0)
94
+ rspec-core (2.10.1)
95
+ rspec-expectations (2.10.0)
86
96
  diff-lcs (~> 1.1.3)
87
- rspec-mocks (2.9.0)
88
- rubydora (0.5.8)
97
+ rspec-mocks (2.10.1)
98
+ ruby-debug (0.10.4)
99
+ columnize (>= 0.1)
100
+ ruby-debug-base (~> 0.10.4.0)
101
+ ruby-debug-base (0.10.4)
102
+ linecache (>= 0.3)
103
+ rubydora (0.5.9)
89
104
  activemodel
90
105
  activesupport
91
106
  fastercsv
@@ -101,7 +116,13 @@ GEM
101
116
  nokogiri (>= 1.4.0)
102
117
  nori (~> 1.1)
103
118
  wasabi (~> 2.1)
104
- solrizer (1.2.0)
119
+ simplecov (0.6.4)
120
+ multi_json (~> 1.0)
121
+ simplecov-html (~> 0.5.3)
122
+ simplecov-html (0.5.3)
123
+ simplecov-rcov (0.2.3)
124
+ simplecov (>= 0.4.1)
125
+ solrizer (1.2.1)
105
126
  daemons
106
127
  mediashelf-loggable (~> 0.4.7)
107
128
  nokogiri
@@ -109,10 +130,10 @@ GEM
109
130
  stomp
110
131
  xml-simple
111
132
  stomp (1.2.2)
112
- wasabi (2.1.0)
133
+ wasabi (2.1.1)
113
134
  nokogiri (>= 1.4.0)
114
135
  xml-simple (1.1.1)
115
- yard (0.7.5)
136
+ yard (0.8.1)
116
137
 
117
138
  PLATFORMS
118
139
  ruby
@@ -121,7 +142,12 @@ DEPENDENCIES
121
142
  RedCloth
122
143
  active-fedora!
123
144
  jettywrapper (>= 1.2.0)
124
- mocha (>= 0.9.8)
145
+ jruby-openssl
146
+ mocha (= 0.10.5)
125
147
  rake
148
+ rcov
126
149
  rspec (>= 2.9.0)
150
+ ruby-debug
151
+ simplecov
152
+ simplecov-rcov
127
153
  yard
data/History.txt CHANGED
@@ -1,4 +1,25 @@
1
- 4.0.0.rc20
1
+ 4.2.0
2
+ Added Base.find_each which allows yielding of each result
3
+ Added Base.find_in_batches which allows yielding of a chunk of solr results
4
+ Added ActiveFedora::NtriplesRDFDatastream
5
+ Rubydora to 0.5.9
6
+ HYDRA-726 integration tests verify versionable attribute of datastreams
7
+ HYDRA-811 allow setting a pid after object is initialized, but before it is saved
8
+ find(:all) must use solr paramater qt=standard
9
+ HYDRA-812 belongs_to should replace assertions, even if the asserted object is not found.
10
+ HYDRA-814 add clone()
11
+ HYDRA-815 give :type a default value (ActiveFedora::Datastream) for has_file_datastream
12
+ HYDRA-816 Sharding works automatically if multiple connections are specified in fedora.yml
13
+ HYDRA-818 Assign_pid should work correctly when the config is not sharded.
14
+
15
+ 4.1.0
16
+ ActiveFedora::Base.find() now supports filtering by solr fields (boolean AND).
17
+ * example: ModsAsset.find('title_t' => 'Song of Fire and Ice','author_t'=>['Agatha Christie', 'Dr. Seuss']
18
+ ActiveFedora::Base.find_with_conditions which is the replacement for ActiveFedora::Base.find_by_fields_by_solr (previously deprecated)
19
+ YAML configurations are loaded through ERB, allowing reference to evaluated Ruby or environment variables
20
+ When setting ng_xml= with a Nokogiri node, cast it to a new Nokogiri document
21
+
22
+ 4.0.0
2
23
  Removed deprecations
3
24
  * allowing :fedora level in fedora.yml
4
25
  * automatic includes of Relationships and FileMethods is removed
data/README.textile CHANGED
@@ -51,14 +51,14 @@ Then open a new terminal, go to your ActiveFedora source directory, and import f
51
51
 
52
52
  <pre>
53
53
  export FEDORA_HOME=/path/to/hydra/jetty/fedora/default
54
- rake active_fedora:load_fixtures RAILS_ENV=test
54
+ rake active_fedora:load_fixtures environment=test
55
55
  </pre>
56
56
 
57
57
  This does the equivalent of:
58
58
 
59
59
  <pre>
60
60
  $FEDORA_HOME/client/bin/fedora-ingest-demos.sh localhost 8983 fedoraAdmin fedoraAdmin http
61
- rake af:import_fixture pid=hydrangea:fixture_mods_article1 RAILS_ENV=test
61
+ rake af:import_fixture pid=hydrangea:fixture_mods_article1 environment=test
62
62
  </pre>
63
63
 
64
64
  Now you're ready to run the tests. In the directory where active_fedora is installed, run
@@ -26,15 +26,15 @@ Gem::Specification.new do |s|
26
26
  s.add_dependency("activesupport", '>= 3.0.0')
27
27
  s.add_dependency("mediashelf-loggable")
28
28
  s.add_dependency("equivalent-xml")
29
- s.add_dependency("rubydora", '~>0.5.8')
29
+ s.add_dependency("rubydora", '~>0.5.9')
30
30
  s.add_dependency("rdf")
31
- s.add_dependency("rdf-rdfxml", '0.3.5') # 0.3.6 is broken
31
+ s.add_dependency("rdf-rdfxml", '~>0.3.8')
32
32
  s.add_development_dependency("yard")
33
33
  s.add_development_dependency("RedCloth") # for RDoc formatting
34
34
  s.add_development_dependency("rake")
35
35
  s.add_development_dependency("jettywrapper", ">=1.2.0")
36
36
  s.add_development_dependency("rspec", ">= 2.9.0")
37
- s.add_development_dependency("mocha", ">= 0.9.8")
37
+ s.add_development_dependency("mocha", "0.10.5")
38
38
 
39
39
  s.files = `git ls-files`.split("\n")
40
40
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -47,3 +47,5 @@
47
47
  :has_model: hasModel
48
48
  http://www.openarchives.org/OAI/2.0/:
49
49
  :oai_item_id: itemID
50
+ http://projecthydra.org/ns/relations#:
51
+ :is_governed_by: isGovernedBy
@@ -4,15 +4,11 @@ module ActiveFedora
4
4
 
5
5
  def replace(record)
6
6
  if record.nil?
7
- ### TODO a more efficient way of doing this would be to write a clear_relationship method
8
- old_record = find_target
9
- @owner.remove_relationship(@reflection.options[:property], old_record) unless old_record.nil?
7
+ @owner.clear_relationship(@reflection.options[:property])
10
8
  else
11
9
  raise_on_type_mismatch(record)
12
10
 
13
- ### TODO a more efficient way of doing this would be to write a clear_relationship method
14
- old_record = find_target
15
- @owner.remove_relationship(@reflection.options[:property], old_record) unless old_record.nil?
11
+ @owner.clear_relationship(@reflection.options[:property])
16
12
 
17
13
  @target = (AssociationProxy === record ? record.target : record)
18
14
  @owner.add_relationship(@reflection.options[:property], record) unless record.new_record?
@@ -1,5 +1,6 @@
1
1
  SOLR_DOCUMENT_ID = "id" unless (defined?(SOLR_DOCUMENT_ID) && !SOLR_DOCUMENT_ID.nil?)
2
2
  ENABLE_SOLR_UPDATES = true unless defined?(ENABLE_SOLR_UPDATES)
3
+ require "digest"
3
4
 
4
5
  module ActiveFedora
5
6
 
@@ -132,10 +133,19 @@ module ActiveFedora
132
133
  fedora_connection[idx].connection
133
134
  end
134
135
 
135
- #If you want to use sharding override this method with your strategy
136
+ # This is where your sharding strategy is implemented -- it's how we figure out which shard an object will be (or was) written to.
137
+ # Given a pid, it decides which shard that pid will be written to (and thus retrieved from).
138
+ # For a given pid, as long as your shard configuration remains the same it will always return the same value.
139
+ # If you're not using sharding, this will always return 0, meaning use the first/only Fedora Repository in your configuration.
140
+ # Default strategy runs a modulo of the md5 of the pid against the number of shards.
141
+ # If you want to use a different sharding strategy, override this method. Make sure that it will always return the same value for a given pid and shard configuration.
136
142
  #@return [Integer] the index of the shard this object is stored in
137
143
  def self.shard_index(pid)
138
- 0
144
+ if ActiveFedora.config.sharded?
145
+ Digest::MD5.hexdigest(pid).hex % ActiveFedora.config.credentials.length
146
+ else
147
+ 0
148
+ end
139
149
  end
140
150
 
141
151
 
@@ -149,15 +159,42 @@ module ActiveFedora
149
159
  obj
150
160
  end
151
161
 
162
+ def clone
163
+ new_object = self.class.create
164
+ clone_into(new_object)
165
+ end
166
+
167
+ # Clone the datastreams from this object into the provided object, while preserving the pid of the provided object
168
+ # @param [Base] new_object clone into this object
169
+ def clone_into(new_object)
170
+ rels = Nokogiri::XML( rels_ext.content)
171
+ rels.xpath("//rdf:Description/@rdf:about").first.value = new_object.internal_uri
172
+ new_object.rels_ext.content = rels.to_xml
173
+ new_object.rels_ext.dirty = false
174
+
175
+ datastreams.each do |k, v|
176
+ next if k == 'RELS-EXT'
177
+ new_object.datastreams[k].content = v.content
178
+ end
179
+ new_object if new_object.save
180
+ end
152
181
 
153
182
  ### if you are doing sharding, override this method to do something other than use a sequence
154
183
  # @return [String] the unique pid for a new object
155
184
  def self.assign_pid(obj)
156
- args = {}
157
- args[:namespace] = obj.namespace if obj.namespace
158
- raise RuntimeError, "When using shards, you must override #{self}.assign_pid()" if ActiveFedora.config.sharded?
159
- d = REXML::Document.new(connection_for_pid('0').next_pid(args))
160
- d.elements['//pid'].text
185
+ args = {}
186
+ args[:namespace] = obj.namespace if obj.namespace
187
+ # TODO: This juggling of Fedora credentials & establishing connections should be handled by
188
+ # an establish_fedora_connection method,possibly wrap it all into a fedora_connection method - MZ 06-05-2012
189
+ if ActiveFedora.config.sharded?
190
+ credentials = ActiveFedora.config.credentials[0]
191
+ else
192
+ credentials = ActiveFedora.config.credentials
193
+ end
194
+ fedora_connection[0] ||= ActiveFedora::RubydoraConnection.new(credentials)
195
+ d = REXML::Document.new( fedora_connection[0].connection.next_pid(args))
196
+ pid =d.elements['//pid'].text
197
+ pid
161
198
  end
162
199
 
163
200
  def inner_object # :nodoc
@@ -21,8 +21,10 @@ module ActiveFedora
21
21
 
22
22
  def serialize_datastreams
23
23
  datastreams.each {|k, ds| ds.serialize! }
24
- self.metadata_is_dirty = datastreams.any? {|k,ds| ds.changed? && (ds.class.included_modules.include?(ActiveFedora::MetadataDatastreamHelper) || ds.instance_of?(ActiveFedora::RelsExtDatastream))}
25
- true
24
+ self.metadata_is_dirty = datastreams.any? do |k,ds|
25
+ ds.changed? && (ds.class.included_modules.include?(ActiveFedora::MetadataDatastreamHelper) || ds.instance_of?(ActiveFedora::RelsExtDatastream) || ds.kind_of?(ActiveFedora::RDFDatastream))
26
+ end
27
+ true
26
28
  end
27
29
 
28
30
  # Adds the disseminator location to the datastream after the pid has been established
@@ -259,17 +261,17 @@ module ActiveFedora
259
261
 
260
262
  # Specify the attributes of a file bearing datastream
261
263
  #
262
- # === Options
263
- # [:name]
264
- # The dsid of the datastream
265
- # [:type]
266
- # The class the datastream should have
267
- # [:label]
268
- # The default value to put in the dsLabel field
269
- # [:control_group]
270
- # The type of controlGroup to store the datastream as. Defaults to M
271
- def has_file_datastream(args)
272
- ds_specs[args.fetch(:name, "content")]= {:type => args[:type], :label => args.fetch(:label,"File Datastream"), :control_group => args.fetch(:control_group,"M")}
264
+ # @param [Hash] args
265
+ # @option args :name ("content") The dsid of the datastream
266
+ # @option args :type (ActiveFedora::Datastream) The class the datastream should have
267
+ # @option args :label ("File Datastream") The default value to put in the dsLabel field
268
+ # @option args :control_group ("M") The type of controlGroup to store the datastream as. Defaults to M
269
+ def has_file_datastream(args = {})
270
+ ds_specs[args.fetch(:name, "content")]= {
271
+ :type => args.fetch(:type,ActiveFedora::Datastream),
272
+ :label => args.fetch(:label,"File Datastream"),
273
+ :control_group => args.fetch(:control_group,"M")
274
+ }
273
275
  end
274
276
  end
275
277
 
@@ -102,23 +102,60 @@ module ActiveFedora
102
102
  # @option opts [Integer] :rows when :all is passed, the maximum number of rows to load from solr
103
103
  # @option opts [Boolean] :cast when true, examine the model and cast it to the first known cModel
104
104
  def find(args, opts={})
105
- opts = {:rows=>25}.merge(opts)
106
- if args == :all
107
- escaped_class_uri = SolrService.escape_uri_for_query(self.to_class_uri)
108
- q = "#{ActiveFedora::SolrService.solr_name(:has_model, :symbol)}:#{escaped_class_uri}"
109
- hits = SolrService.query(q, :rows=>opts[:rows])
110
- return hits.map do |hit|
111
- pid = hit[SOLR_DOCUMENT_ID]
112
- find_one(pid, opts[:cast])
113
- end
114
- elsif args.class == Hash
115
- hits = find_with_conditions(args, opts)
116
- return hits.map do |hit|
117
- pid = hit[SOLR_DOCUMENT_ID]
118
- find_one(pid, opts[:cast])
105
+ return find_one(args, opts[:cast]) if args.class == String
106
+ args = {} if args == :all
107
+ results = []
108
+ find_each(args, opts) do |obj|
109
+ results << obj
110
+ end
111
+ results
112
+ end
113
+
114
+
115
+ # Yields each batch of solr records that was found by the find +options+ as
116
+ # an array. The size of each batch is set by the <tt>:batch_size</tt>
117
+ # option; the default is 1000.
118
+ #
119
+ # Returns a solr result matching the supplied conditions
120
+ # @param[Hash] conditions solr conditions to match
121
+ # @param[Hash] options
122
+ # @option opts [Array] :sort a list of fields to sort by
123
+ # @option opts [Array] :rows number of rows to return
124
+ #
125
+ # @example
126
+ # Person.find_in_batches('age_t'=>'21', {:batch_size=>50}) do |group|
127
+ # group.each { |person| puts person['name_t'] }
128
+ # end
129
+
130
+ def find_in_batches conditions, opts={}
131
+ opts[:q] = create_query(conditions)
132
+ opts[:qt] = 'standard'
133
+ #set default sort to created date ascending
134
+ unless opts.include?(:sort)
135
+ opts[:sort]=[ActiveFedora::SolrService.solr_name(:system_create,:date)+' asc']
136
+ end
137
+
138
+ batch_size = opts.delete(:batch_size) || 1000
139
+
140
+ counter = 0
141
+ begin
142
+ counter += 1
143
+ response = ActiveFedora::SolrService.instance.conn.paginate counter, batch_size, "select", :params => opts
144
+ docs = response["response"]["docs"]
145
+ yield docs
146
+ end while docs.has_next?
147
+ end
148
+
149
+ # Yields the found ActiveFedora::Base object to the passed block
150
+ #
151
+ # @param [Hash] conditions the conditions for the solr search to match
152
+ # @param [Hash] opts
153
+ # @option opts [Boolean] :cast when true, examine the model and cast it to the first known cModel
154
+ def find_each( conditions={}, opts={})
155
+ find_in_batches(conditions, opts.merge({:fl=>SOLR_DOCUMENT_ID})) do |group|
156
+ group.each do |hit|
157
+ yield(find_one(hit[SOLR_DOCUMENT_ID], opts[:cast]))
119
158
  end
120
- elsif args.class == String
121
- return find_one(args, opts[:cast])
122
159
  end
123
160
  end
124
161
 
@@ -131,6 +168,7 @@ module ActiveFedora
131
168
  !inner.new?
132
169
  end
133
170
 
171
+ #@deprecated
134
172
  def find_model(pid)
135
173
  ActiveSupport::Deprecation.warn("find_model is deprecated. Use find instead")
136
174
  find(pid)
@@ -146,8 +184,10 @@ module ActiveFedora
146
184
  SolrService.query(q, :raw=>true, :rows=>0)['response']['numFound']
147
185
  end
148
186
 
187
+ #@deprecated
149
188
  #Sends a query directly to SolrService
150
189
  def solr_search(query, args={})
190
+ ActiveSupport::Deprecation.warn("solr_search is deprecated and will be removed in the next release. Use SolrService.query instead")
151
191
  SolrService.instance.conn.query(query, args)
152
192
  end
153
193
 
@@ -172,6 +212,7 @@ module ActiveFedora
172
212
  end
173
213
  end
174
214
 
215
+ # @deprecated
175
216
  # Find all ActiveFedora objects for this model that match arguments
176
217
  # passed in by querying Solr. Like find_by_solr this returns a solr result.
177
218
  #
@@ -258,8 +299,24 @@ module ActiveFedora
258
299
  SolrService.query(query, query_opts)
259
300
  end
260
301
 
261
- # @param[Hash] conditions
302
+ # Returns a solr result matching the supplied conditions
303
+ # @param[Hash] conditions solr conditions to match
304
+ # @param[Hash] options
305
+ # @option opts [Array] :sort a list of fields to sort by
306
+ # @option opts [Array] :rows number of rows to return
262
307
  def find_with_conditions(conditions, opts={})
308
+ query = create_query(conditions)
309
+ #set default sort to created date ascending
310
+ unless opts.include?(:sort)
311
+ opts[:sort]=[ActiveFedora::SolrService.solr_name(:system_create,:date)+' asc']
312
+ end
313
+ SolrService.query(query, opts)
314
+ end
315
+
316
+
317
+ # Returns a solr query for the supplied conditions
318
+ # @param[Hash] conditions solr conditions to match
319
+ def create_query(conditions)
263
320
  escaped_class_uri = SolrService.escape_uri_for_query(self.to_class_uri)
264
321
  clauses = ["#{ActiveFedora::SolrService.solr_name(:has_model, :symbol)}:#{escaped_class_uri}"]
265
322
  conditions.each_pair do |key,value|
@@ -276,13 +333,7 @@ module ActiveFedora
276
333
  end
277
334
  end
278
335
 
279
- query = clauses.join(" AND ")
280
-
281
- #set default sort to created date ascending
282
- unless opts.include?(:sort)
283
- opts[:sort]=[ActiveFedora::SolrService.solr_name(:system_create,:date)+' asc']
284
- end
285
- SolrService.query(query, opts)
336
+ clauses.join(" AND ")
286
337
  end
287
338
 
288
339
  def quote_for_solr(value)
@@ -299,18 +350,8 @@ module ActiveFedora
299
350
  return fields
300
351
  end
301
352
 
302
- #wrapper around instance_variable_set, sets @name to value
303
- def attribute_set(name, value)
304
- instance_variable_set("@#{name}", value)
305
- end
306
-
307
- #wrapper around instance_variable_get, returns current value of @name
308
- def attribute_get(name)
309
- instance_variable_get("@#{name}")
310
- end
311
-
312
353
  private
313
- # Retrieve the Fedora object with te given pid, explore the returned object, determine its model
354
+ # Retrieve the Fedora object with the given pid, explore the returned object, determine its model
314
355
  # using #{ActiveFedora::ContentModel.known_models_for} and cast to that class.
315
356
  # Raises a ObjectNotFoundError if the object is not found.
316
357
  # @param [String] pid of the object to load
@@ -326,22 +367,6 @@ module ActiveFedora
326
367
  end
327
368
 
328
369
  end
329
- def create_property_getter(property) # :nodoc:
330
-
331
- class_eval <<-END, __FILE__, __LINE__
332
- def #{property.name}
333
- attribute_get("#{property.name}")
334
- end
335
- END
336
- end
337
-
338
- def create_property_setter(property)# :nodoc:
339
- class_eval <<-END, __FILE__, __LINE__
340
- def #{property.name}=(value)
341
- attribute_set("#{property.name}", value)
342
- end
343
- END
344
- end
345
370
 
346
371
  private
347
372