active-fedora 3.2.0 → 3.2.2

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- active-fedora (3.2.0)
4
+ active-fedora (3.2.2)
5
5
  activeresource (>= 3.0.0)
6
6
  activesupport (>= 3.0.0)
7
7
  equivalent-xml
@@ -13,7 +13,7 @@ PATH
13
13
  om (>= 1.4.4)
14
14
  rdf
15
15
  rdf-rdfxml
16
- rubydora (~> 0.3.0)
16
+ rubydora (~> 0.4.1)
17
17
  solr-ruby (>= 0.0.6)
18
18
  solrizer (> 1.0.0)
19
19
  xml-simple (>= 1.0.12)
@@ -43,7 +43,7 @@ GEM
43
43
  diff-lcs (1.1.3)
44
44
  equivalent-xml (0.2.8)
45
45
  nokogiri (>= 1.4.3)
46
- facets (2.9.2)
46
+ facets (2.9.3)
47
47
  fastercsv (1.5.4)
48
48
  ffi (1.0.11)
49
49
  gyoku (0.4.4)
@@ -74,7 +74,7 @@ GEM
74
74
  om (1.4.4)
75
75
  mediashelf-loggable
76
76
  nokogiri (>= 1.4.2)
77
- rack (1.3.5)
77
+ rack (1.4.0)
78
78
  rake (0.9.2.2)
79
79
  rbx-require-relative (0.0.5)
80
80
  rcov (0.9.11)
@@ -110,7 +110,7 @@ GEM
110
110
  ruby-debug-base19 (>= 0.11.19)
111
111
  ruby_core_source (0.1.5)
112
112
  archive-tar-minitar (>= 0.5.2)
113
- rubydora (0.3.0)
113
+ rubydora (0.4.1)
114
114
  activemodel
115
115
  activesupport
116
116
  fastercsv
@@ -1,3 +1,13 @@
1
+ 3.2.2
2
+ Rubydora 0.4.1
3
+ Fixed bugs where updating datastream properties would overwrite content.
4
+ HYDRA-661: Changed namespaces and names or rake tasks according to HYDRA-661 with the exception that harvest was renamed export
5
+
6
+ 3.2.1
7
+ Load rake tasks.
8
+ Rubydora 0.4.0
9
+ Added fixture exporter
10
+
1
11
  3.2.0
2
12
 
3
13
  Deprecate ContentModel.pid_from_ruby_class, use Model.to_class_uri instead
data/Rakefile CHANGED
@@ -2,11 +2,12 @@ require 'rake/clean'
2
2
  require 'rubygems'
3
3
  require 'bundler'
4
4
  require "bundler/setup"
5
+ require "active-fedora"
5
6
 
6
7
  Bundler::GemHelper.install_tasks
7
8
 
8
- # load rake tasks defined in lib/tasks
9
- Dir["lib/tasks/**/*.rake"].each { |ext| load ext } if defined?(Rake)
9
+ # load rake tasks defined in lib/tasks that are not loaded in lib/active_fedora.rb
10
+ load "lib/tasks/active_fedora_dev.rake" if defined?(Rake)
10
11
 
11
12
  CLEAN.include %w[**/.DS_Store tmp *.log *.orig *.tmp **/*~]
12
13
 
@@ -27,7 +27,7 @@ Gem::Specification.new do |s|
27
27
  s.add_dependency("mediashelf-loggable")
28
28
  s.add_dependency("equivalent-xml")
29
29
  s.add_dependency("facets")
30
- s.add_dependency("rubydora", '~>0.3.0')
30
+ s.add_dependency("rubydora", '~>0.4.1')
31
31
  s.add_dependency("rdf")
32
32
  s.add_dependency("rdf-rdfxml")
33
33
  s.add_development_dependency("yard")
@@ -1,5 +1,4 @@
1
1
  require "loggable"
2
- require 'active_fedora/railtie' if defined? Rails
3
2
  require 'active_support'
4
3
  require 'active_fedora/solr_service'
5
4
  require 'active_fedora/rubydora_connection'
@@ -40,6 +39,7 @@ module ActiveFedora #:nodoc:
40
39
  autoload :SemanticNode
41
40
  autoload :NestedAttributes
42
41
  autoload :FixtureLoader
42
+ autoload :FixtureExporter
43
43
  autoload :DatastreamCollections
44
44
  autoload :NamedRelationships
45
45
  autoload :Predicates
@@ -294,3 +294,6 @@ module ActiveFedora
294
294
 
295
295
  end
296
296
 
297
+ load File.join(File.dirname(__FILE__),"tasks/active_fedora.rake") if defined?(Rake)
298
+
299
+
@@ -22,13 +22,11 @@ module ActiveFedora
22
22
  # end
23
23
  # end
24
24
  #
25
- # The above example creates a FedoraObject with a metadata datastream named "properties", which is composed of a
25
+ # The above example creates a Fedora object with a metadata datastream named "properties", which is composed of a
26
26
  # narrator and bio field.
27
27
  #
28
28
  # Datastreams defined with +has_metadata+ are accessed via the +datastreams+ member hash.
29
29
  #
30
- # =Implementation
31
- # This class is really a facade for a basic Fedora::FedoraObject, which is stored internally.
32
30
  class Base
33
31
  include SemanticNode
34
32
 
@@ -75,34 +75,6 @@ module ActiveFedora
75
75
  tmpl
76
76
  end
77
77
 
78
- # # Callback. Override this to insert behaviors after the save method. By default, sets self.dirty = false
79
- # def after_save
80
- # self.dirty = false
81
- # end
82
-
83
- # returns a datetime in the standard W3C DateTime Format.
84
- # ie 2008-10-17T00:17:18.194Z
85
- # def last_modified_in_repository
86
- # # A hack to get around the fact that you can't call getDatastreamHistory
87
- # # or API-M getDatasreams on Fedora 3.0 REST API
88
- # # grabs the CREATED attribute off of the last foxml:datastreamVersion
89
- # # within the appropriate datastream node in the objectXML
90
- # if self.pid != nil
91
- # object_xml = Fedora::FedoraObject.object_xml(self.pid).gsub("\n ","")
92
- # datastream_xml = REXML::Document.new(object_xml).root.elements["foxml:datastream[@ID='#{self.dsid}']"]
93
- #
94
- # if datastream_xml.length > 3
95
- # datastream_xml.elements.each do |el|
96
- # logger.debug el.inspect
97
- # end
98
- # end
99
- #
100
- # datastream_xml.elements[datastream_xml.length - 2].attributes["CREATED"]
101
- # else
102
- # return nil
103
- # end
104
- # end
105
-
106
78
  def check_concurrency # :nodoc:
107
79
  return true
108
80
  end
@@ -204,7 +204,7 @@ module ActiveFedora
204
204
  ds.mimeType = opts[:mimeType]
205
205
  ds.controlGroup = opts[:controlGroup]
206
206
  ds.dsLabel = opts[:dsLabel]
207
- ds.dsLocation = opts[:dsLocation]
207
+ ds.dsLocation = opts[:dsLocation] if opts[:dsLocation]
208
208
  blob = opts[:blob]
209
209
  if blob
210
210
  if !ds.mimeType.present?
@@ -213,37 +213,13 @@ module ActiveFedora
213
213
  end
214
214
  if !ds.dsLabel.present? && blob.respond_to?(:path)
215
215
  ds.dsLabel = File.basename(blob.path)
216
- # ds.dsLabel = blob.original_filename
217
216
  end
218
217
  end
219
218
 
220
- # blob = blob.read if blob.respond_to? :read
221
219
  ds.content = blob || ""
222
220
  ds
223
221
  end
224
222
 
225
- # def configure_defined_datastreams
226
- # if self.class.ds_specs
227
- # self.class.ds_specs.each do |name,ds_config|
228
- # if self.datastreams.has_key?(name)
229
- # #attributes = self.datastreams[name].attributes
230
- # else
231
- # ds = ds_config[:type].new(inner_object, name)
232
- # ds.model = self if ds_config[:type] == RelsExtDatastream
233
- # ds.dsLabel = ds_config[:label] if ds_config[:label].present?
234
- # ds.controlGroup = ds_config[:control_group]
235
- # # If you called has_metadata with a block, pass the block into the Datastream class
236
- # if ds_config[:block].class == Proc
237
- # ds_config[:block].call(ds)
238
- # end
239
- # additional_attributes_for_external_and_redirect_control_groups(ds, ds_config)
240
- # self.add_datastream(ds)
241
- # end
242
- # end
243
- # end
244
- # end
245
-
246
-
247
223
  # This method provides validation of proper options for control_group 'E' and 'R' and builds an attribute hash to be merged back into ds.attributes prior to saving
248
224
  #
249
225
  # @param [Object] ds The datastream
@@ -31,11 +31,11 @@ module ActiveFedora
31
31
  def create_delegate_accessor(field, args)
32
32
  define_method field do
33
33
  ds = self.send(args[:to])
34
- val = if ds.kind_of? ActiveFedora::NokogiriDatastream
34
+ val = if ds.kind_of? ActiveFedora::MetadataDatastream
35
+ ds.send(:get_values, field)
36
+ else
35
37
  terminology = args[:at] || [field]
36
38
  ds.send(:term_values, *terminology)
37
- else
38
- ds.send(:get_values, field)
39
39
  end
40
40
  args[:unique] ? val.first : val
41
41
 
@@ -45,11 +45,11 @@ module ActiveFedora
45
45
  def create_delegate_setter(field, args)
46
46
  define_method "#{field}=".to_sym do |v|
47
47
  ds = self.send(args[:to])
48
- if ds.kind_of? ActiveFedora::NokogiriDatastream
48
+ if ds.kind_of? ActiveFedora::MetadataDatastream
49
+ ds.send(:set_value, field, v)
50
+ else
49
51
  terminology = args[:at] || [field]
50
52
  ds.send(:update_indexed_attributes, {terminology => v})
51
- else
52
- ds.send(:set_value, field, v)
53
53
  end
54
54
  end
55
55
  end
@@ -0,0 +1,33 @@
1
+ module ActiveFedora
2
+ module FixtureExporter
3
+
4
+ def self.export_to_path(pid, path, extra_params={})
5
+ foxml = export(pid, extra_params)
6
+ name = "#{pid.gsub(":","_")}.foxml.xml"
7
+ filename = File.join(path, name)
8
+ file = File.new(filename,"w")
9
+ file.syswrite(foxml)
10
+ filename
11
+ end
12
+
13
+ def self.export(pid, extra_params={})
14
+ extra_params = {:format=>:foxml, :context=>:archive}.merge!(extra_params)
15
+ if extra_params[:format].kind_of?(String)
16
+ format = extra_params[:format]
17
+ else
18
+ format = case extra_params[:format]
19
+ when :atom then "info:fedora/fedora-system:ATOM-1.1"
20
+ when :atom_zip then "info:fedora/fedora-system:ATOMZip-1.1"
21
+ when :mets then "info:fedora/fedora-system:METSFedoraExt-1.1"
22
+ when :foxml then "info:fedora/fedora-system:FOXML-1.1"
23
+ else "info:fedora/fedora-system:FOXML-1.1"
24
+ end
25
+ end
26
+
27
+ RubydoraConnection.instance.connection.export(:pid=>pid, :format=>format, :context=>extra_params[:context].to_s)
28
+ end
29
+
30
+
31
+ end
32
+ end
33
+
@@ -6,11 +6,56 @@ module ActiveFedora
6
6
  # <title>Foo</title>
7
7
  # <author>Bar</author>
8
8
  # </fields>
9
- class MetadataDatastream < Datastream
9
+ class MetadataDatastream < NokogiriDatastream
10
10
 
11
11
  # .to_solr (among other things) is provided by ActiveFedora::MetadataDatastreamHelper
12
12
  include ActiveFedora::MetadataDatastreamHelper
13
13
 
14
+ # def initialize(digital_object, dsid)
15
+ # ActiveSupport::Deprecation.warn("MetadataDatastream is deprecated and will be removed in a future release. Create a NokogiriDatastream to structure your data")
16
+ # super
17
+ # end
18
+ def to_solr(solr_doc = Hash.new) # :nodoc:
19
+ fields.each do |field_key, field_info|
20
+ if field_info.has_key?(:values) && !field_info[:values].nil?
21
+ field_symbol = ActiveFedora::SolrService.solr_name(field_key, field_info[:type])
22
+ values = field_info[:values]
23
+ values = [values] unless values.respond_to? :each
24
+ values.each do |val|
25
+ ::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val )
26
+ end
27
+ end
28
+ end
29
+
30
+ return solr_doc
31
+ end
32
+
33
+ # ** EXPERIMENTAL **
34
+ #
35
+ # This is utilized by ActiveFedora::Base.load_instance_from_solr to set
36
+ # metadata values in this object using the Solr document passed in.
37
+ # Any keys in the solr document that map to a metadata field key within a MetadataDatastream object
38
+ # are set to the corresponding value. Any others are ignored. ActiveFedora::SolrService.solr_name
39
+ # is used to map solr key to field key name.
40
+ #
41
+ # ====Warning
42
+ # Solr must be synchronized with data in Fedora.
43
+ def from_solr(solr_doc)
44
+ fields.each do |field_key, field_info|
45
+ field_symbol = ActiveFedora::SolrService.solr_name(field_key, field_info[:type])
46
+ value = (solr_doc[field_symbol].nil? ? solr_doc[field_symbol.to_s]: solr_doc[field_symbol])
47
+ unless value.nil?
48
+ if value.is_a? Array
49
+ update_attributes({field_key=>value})
50
+ else
51
+ update_indexed_attributes({field_key=>{0=>value}})
52
+ end
53
+ end
54
+ end
55
+ end
56
+
57
+
58
+
14
59
 
15
60
  def update_attributes(params={},opts={})
16
61
  result = params.dup
@@ -32,48 +32,9 @@ module ActiveFedora::MetadataDatastreamHelper
32
32
 
33
33
  def serialize! # :nodoc:
34
34
  if dirty?
35
+ return unless xml_loaded
35
36
  self.content = self.to_xml
36
37
  end
37
38
  end
38
39
 
39
- def to_solr(solr_doc = Hash.new) # :nodoc:
40
- fields.each do |field_key, field_info|
41
- if field_info.has_key?(:values) && !field_info[:values].nil?
42
- field_symbol = ActiveFedora::SolrService.solr_name(field_key, field_info[:type])
43
- values = field_info[:values]
44
- values = [values] unless values.respond_to? :each
45
- values.each do |val|
46
- ::Solrizer::Extractor.insert_solr_field_value(solr_doc, field_symbol, val )
47
- end
48
- end
49
- end
50
-
51
- return solr_doc
52
- end
53
-
54
- # ** EXPERIMENTAL **
55
- #
56
- # This is utilized by ActiveFedora::Base.load_instance_from_solr to set
57
- # metadata values in this object using the Solr document passed in.
58
- # Any keys in the solr document that map to a metadata field key within a MetadataDatastream object
59
- # are set to the corresponding value. Any others are ignored. ActiveFedora::SolrService.solr_name
60
- # is used to map solr key to field key name.
61
- #
62
- # ====Warning
63
- # Solr must be synchronized with data in Fedora.
64
- def from_solr(solr_doc)
65
- fields.each do |field_key, field_info|
66
- field_symbol = ActiveFedora::SolrService.solr_name(field_key, field_info[:type])
67
- value = (solr_doc[field_symbol].nil? ? solr_doc[field_symbol.to_s]: solr_doc[field_symbol])
68
- unless value.nil?
69
- if value.is_a? Array
70
- update_attributes({field_key=>value})
71
- else
72
- update_indexed_attributes({field_key=>{0=>value}})
73
- end
74
- end
75
- end
76
- end
77
-
78
-
79
40
  end
@@ -164,7 +164,7 @@ module ActiveFedora
164
164
  # Find all ActiveFedora objects for this model that match arguments
165
165
  # passed in by querying Solr. Like find_by_solr this returns a solr result.
166
166
  #
167
- # query_fields a hash of object field names and values to filter on
167
+ # query_fields a hash of object field names and values to filter on (query_fields must be the solr_field_name for non-MetadataDatastream derived datastreams)
168
168
  # opts specifies options for the solr query
169
169
  #
170
170
  # options may include:
@@ -35,6 +35,7 @@ module ActiveFedora
35
35
  return unless @connection.nil? or force
36
36
  allowable_options = [:url, :user, :password, :timeout, :open_timeout, :ssl_client_cert, :ssl_client_key]
37
37
  client_options = options.reject { |k,v| not allowable_options.include?(k) }
38
+ #puts "CLIENT OPTS #{client_options.inspect}"
38
39
  @connection = Rubydora.connect client_options
39
40
  end
40
41
 
@@ -1,3 +1,3 @@
1
1
  module ActiveFedora
2
- VERSION = "3.2.0"
2
+ VERSION = "3.2.2"
3
3
  end
@@ -1,21 +1,15 @@
1
1
  require "active-fedora"
2
2
  require "solrizer-fedora"
3
3
  require "active_support" # This is just to load ActiveSupport::CoreExtensions::String::Inflections
4
- namespace :af do
4
+ namespace :repo do
5
5
 
6
+ desc "Delete and re-import the object identified by pid"
7
+ task :refresh => [:delete,:load]
6
8
 
7
- desc "Delete and re-import the fixture identified by pid"
8
- task :refresh_fixture => [:delete,:import_fixture]
9
-
10
- desc "Delete the object identified by pid. Example: rake fedora:delete pid=demo:12"
9
+ desc "Delete the object identified by pid. Example: rake repo:delete pid=demo:12"
11
10
  task :delete => :init do
12
- # If a destination url has been provided, attampt to export from the fedora repository there.
13
- if ENV["destination"]
14
- Fedora::Repository.register(ENV["destination"])
15
- end
16
-
17
11
  if ENV["pid"].nil?
18
- puts "You must specify a valid pid. Example: rake fedora:delete pid=demo:12"
12
+ puts "You must specify a valid pid. Example: rake repo:delete pid=demo:12"
19
13
  else
20
14
  pid = ENV["pid"]
21
15
  begin
@@ -25,22 +19,19 @@ namespace :af do
25
19
  rescue Errno::ECONNREFUSED => e
26
20
  puts "Can't connect to Fedora! Are you sure jetty is running?"
27
21
  end
28
- logger.info "Deleted '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
22
+ puts "Deleted '#{pid}' from #{ActiveFedora.fedora_config[:url]}"
29
23
  end
30
24
  end
31
25
 
32
- desc "Delete a range of objects in a given namespace. ie 'rake fedora:purge_range[demo, 22, 50]' will delete demo:22 through demo:50"
33
- task :purge_range => :init do |t, args|
34
- # If Fedora Repository connection is not already initialized, initialize it using ActiveFedora defaults
35
- # ActiveFedora.init unless Thread.current[:repo]
36
-
26
+ desc "Delete a range of objects in a given namespace. ie 'rake repo:delete_range namespace=demo start=22 stop=50' will delete demo:22 through demo:50"
27
+ task :delete_range => :init do |t, args|
37
28
  namespace = ENV["namespace"]
38
29
  start_point = ENV["start"].to_i
39
30
  stop_point = ENV["stop"].to_i
40
- unless start_point < stop_point
31
+ unless start_point <= stop_point
41
32
  raise StandardError "start point must be less that end point."
42
33
  end
43
- puts "Deleting #{stop_point - start_point} objects from #{namespace}:#{start_point.to_s} to #{namespace}:#{stop_point.to_s}"
34
+ puts "Deleting #{stop_point - start_point + 1} objects from #{namespace}:#{start_point.to_s} to #{namespace}:#{stop_point.to_s}"
44
35
  i = start_point
45
36
  while i <= stop_point do
46
37
  pid = namespace + ":" + i.to_s
@@ -49,68 +40,52 @@ namespace :af do
49
40
  rescue ActiveFedora::ObjectNotFoundError
50
41
  # The object has already been deleted (or was never created). Do nothing.
51
42
  end
52
- puts "Deleted '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
43
+ puts "Deleted '#{pid}' from #{ActiveFedora.fedora_config[:url]}"
53
44
  i += 1
54
45
  end
55
46
  end
56
-
57
- desc "Export the object identified by pid into spec/fixtures. Example:rake fedora:harvest_fixture pid=druid:sb733gr4073 source=http://fedoraAdmin:fedoraAdmin@127.0.0.1:8080/fedora"
58
- task :harvest_fixture => :init do
59
-
60
- # If a source url has been provided, attampt to export from the fedora repository there.
61
- if ENV["source"]
62
- #FIXME
63
- raise "Not Implemented"
64
- #Fedora::Repository.register(ENV["source"])
65
- end
66
-
47
+
48
+ desc "Export the object identified by pid into spec/fixtures. Example:rake repo:export pid=demo:12"
49
+ task :export => :init do
67
50
  if ENV["pid"].nil?
68
- puts "You must specify a valid pid. Example: rake fedora:harvest_fixture pid=demo:12"
51
+ puts "You must specify a valid pid. Example: rake repo:export pid=demo:12"
69
52
  else
70
53
  pid = ENV["pid"]
71
- puts "Exporting '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
72
- #FIXME
73
- raise "Not Implemented"
74
- foxml = Fedora::Repository.instance.export(pid)
75
- filename = File.join("spec","fixtures","#{pid.gsub(":","_")}.foxml.xml")
76
- file = File.new(filename,"w")
77
- file.syswrite(foxml)
54
+ puts "Exporting '#{pid}' from #{ActiveFedora.fedora_config[:url]}"
55
+ if !ENV["path"].nil?
56
+ path = ENV["path"]
57
+ else
58
+ path = File.join('spec', 'fixtures')
59
+ end
60
+ filename = ActiveFedora::FixtureExporter.export_to_path(pid, path)
78
61
  puts "The object has been saved as #{filename}"
79
62
  end
80
63
  end
81
64
 
82
- desc "Import the fixture located at the provided path. Example: rake fedora:import_fixture fixture=spec/fixtures/demo_12.foxml.xml"
83
- task :import_fixture => [:init, :environment] do
84
-
85
- # If a destination url has been provided, attampt to export from the fedora repository there.
86
- if ENV["destination"]
87
- #FIXME
88
- raise "Not Implemented"
89
- Fedora::Repository.register(ENV["destination"])
90
- end
91
-
92
- if !ENV["fixture"].nil?
93
- filename = ENV["fixture"]
65
+ desc "Load the object located at the provided path or identified by pid. Example: rake repo:load path=spec/fixtures/demo_12.foxml.xml"
66
+ task :load => :init do
67
+ if !ENV["path"].nil?
68
+ filename = ENV["path"]
94
69
  elsif !ENV["pid"].nil?
95
70
  pid = ENV["pid"]
96
71
  filename = File.join("spec","fixtures","#{pid.gsub(":","_")}.foxml.xml")
97
72
  else
98
- puts "You must specify a path to the fixture or provide its pid. Example: rake fedora:import_fixture fixture=spec/fixtures/demo_12.foxml.xml"
73
+ puts "You must specify a path to the object or provide its pid. Example: rake repo:load path=spec/fixtures/demo_12.foxml.xml"
99
74
  end
100
75
 
101
76
  if !filename.nil?
102
- puts "Importing '#{filename}' to #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
77
+ puts "Loading '#{filename}' in #{ActiveFedora.fedora_config[:url]}"
103
78
  file = File.new(filename, "r")
104
- result = foxml = ActiveFedora::RubydoraConnection.instance.connection.ingest(:file=>file.read)
105
- # result = foxml = Fedora::Repository.instance.ingest(file.read)
79
+ result = ActiveFedora::RubydoraConnection.instance.connection.ingest(:file=>file.read)
106
80
  if result
107
- puts "The fixture has been ingested as #{result.body}"
108
- if !pid.nil?
109
- solrizer = Solrizer::Fedora::Solrizer.new
110
- solrizer.solrize(pid)
111
- end
81
+ puts "The object has been loaded as #{result.body}"
82
+ if pid.nil?
83
+ pid = result.body
84
+ end
85
+ solrizer = Solrizer::Fedora::Solrizer.new
86
+ solrizer.solrize(pid)
112
87
  else
113
- puts "Failed to ingest the fixture."
88
+ puts "Failed to load the object."
114
89
  end
115
90
  end
116
91
 
@@ -2,20 +2,6 @@ APP_ROOT = File.expand_path("#{File.dirname(__FILE__)}/../../")
2
2
 
3
3
  require 'jettywrapper'
4
4
 
5
- desc "Hudson build"
6
- task :hudson do
7
- ENV['environment'] = "test"
8
- Rake::Task["active_fedora:doc"].invoke
9
- Rake::Task["active_fedora:configure_jetty"].invoke
10
- jetty_params = Jettywrapper.load_config
11
- jetty_params[:startup_wait]= 30
12
- error = Jettywrapper.wrap(jetty_params) do
13
- Rake::Task["active_fedora:load_fixtures"].invoke
14
- Rake::Task["active_fedora:rspec"].invoke
15
- end
16
- raise "test failures: #{error}" if error
17
- end
18
-
19
5
  namespace :active_fedora do
20
6
  require 'active-fedora'
21
7
 
@@ -73,6 +59,20 @@ require 'rspec/core/rake_task'
73
59
  cp("#{f}", 'jetty/solr/test-core/conf/', :verbose => true)
74
60
  end
75
61
  end
62
+
63
+
64
+ desc "Hudson build"
65
+ task :hudson do
66
+ ENV['environment'] = "test"
67
+ Rake::Task["active_fedora:doc"].invoke
68
+ Rake::Task["active_fedora:configure_jetty"].invoke
69
+ jetty_params = Jettywrapper.load_config
70
+ jetty_params[:startup_wait]= 30
71
+ error = Jettywrapper.wrap(jetty_params) do
72
+ Rake::Task["active_fedora:load_fixtures"].invoke
73
+ Rake::Task["active_fedora:rspec"].invoke
74
+ end
75
+ raise "test failures: #{error}" if error
76
76
  end
77
77
 
78
78
  # Provides an :environment task for use while working within a working copy of active-fedora
@@ -83,3 +83,6 @@ task :environment do
83
83
  require "#{APP_ROOT}/spec/samples/models/hydrangea_article"
84
84
  require 'active_fedora/samples'
85
85
  end
86
+
87
+ end
88
+
@@ -3,8 +3,8 @@
3
3
  irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
4
4
  ENV["RUBYLIB"] = "lib"
5
5
  libs = " -r irb/completion"
6
+ libs << " -r rubygems"
6
7
  libs << " -r #{File.dirname(__FILE__) + '/../spec/spec_helper'}"
7
- #libs << " -r rubygems"
8
8
  # libs << " -r #{File.dirname(__FILE__) + '/../lib/active_fedora.rb'}"
9
9
 
10
10
  # Perhaps use a console_lib to store any extra methods I may want available in the cosole
@@ -1,4 +1,5 @@
1
1
  require 'spec_helper'
2
+ require "active_fedora/samples"
2
3
 
3
4
  class MockAFBaseQuerySolr < ActiveFedora::Base
4
5
  has_metadata :name => "properties", :type => ActiveFedora::MetadataDatastream do |m|
@@ -13,15 +14,45 @@ class MockAFBaseQuerySolr < ActiveFedora::Base
13
14
  m.field "geography", :string, :xml_node => "geography"
14
15
  m.field "title", :string, :xml_node => "title"
15
16
  end
17
+
18
+ has_metadata :name=>'ng_metadata', :type=> Hydra::ModsArticleDatastream
16
19
  end
17
20
 
18
21
  describe ActiveFedora::Base do
19
22
 
20
- before(:each) do
23
+ before(:all) do
21
24
  @test_object = ActiveFedora::Base.new
25
+ #get objects into fedora and solr
26
+ @test_object2 = MockAFBaseQuerySolr.new
27
+ attributes = {"holding_id"=>{0=>"Holding 1"},
28
+ "language"=>{0=>"Italian"},
29
+ "creator"=>{0=>"Linguist, A."},
30
+ "geography"=>{0=>"Italy"},
31
+ "title"=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
32
+ @test_object2.update_indexed_attributes(attributes)
33
+ @test_object2.save
34
+
35
+ @test_object3 = MockAFBaseQuerySolr.new
36
+ attributes = {"holding_id"=>{0=>"Holding 2"},
37
+ "language"=>{0=>"Spanish;Latin"},
38
+ "creator"=>{0=>"Linguist, A."},
39
+ "geography"=>{0=>"Spain"},
40
+ "title"=>{0=>"A study of the evolution of Spanish from Latin"}}
41
+ @test_object3.update_indexed_attributes(attributes)
42
+ @test_object3.save
43
+
44
+ @test_object4 = MockAFBaseQuerySolr.new
45
+ attributes = {"holding_id"=>{0=>"Holding 3"},
46
+ "language"=>{0=>"Spanish;Latin"},
47
+ "creator"=>{0=>"Linguist, A."},
48
+ "geography"=>{0=>"Spain"},
49
+ "title"=>{0=>"An obscure look into early nomadic tribes of Spain"}}
50
+ @test_object4.update_indexed_attributes(attributes)
51
+ @test_object4.save
52
+
22
53
  end
23
54
 
24
- after(:each) do
55
+ after(:all) do
25
56
  begin
26
57
  @test_object.delete
27
58
  rescue
@@ -38,42 +69,10 @@ describe ActiveFedora::Base do
38
69
  @test_object4.delete
39
70
  rescue
40
71
  end
41
- begin
42
- @test_object5.delete
43
- rescue
44
- end
45
72
  end
46
73
 
47
74
  describe '#find_by_fields_by_solr' do
48
- it 'should return fedora objects of the model of self that match the given solr query, queries the active_fedora solr instance' do
49
- #get objects into fedora and solr
50
- @test_object2 = MockAFBaseQuerySolr.new
51
- attributes = {"holding_id"=>{0=>"Holding 1"},
52
- "language"=>{0=>"Italian"},
53
- "creator"=>{0=>"Linguist, A."},
54
- "geography"=>{0=>"Italy"},
55
- "title"=>{0=>"Italian and Spanish: A Comparison of Common Phrases"}}
56
- @test_object2.update_indexed_attributes(attributes)
57
- @test_object2.save
58
-
59
- @test_object3 = MockAFBaseQuerySolr.new
60
- attributes = {"holding_id"=>{0=>"Holding 2"},
61
- "language"=>{0=>"Spanish;Latin"},
62
- "creator"=>{0=>"Linguist, A."},
63
- "geography"=>{0=>"Spain"},
64
- "title"=>{0=>"A study of the evolution of Spanish from Latin"}}
65
- @test_object3.update_indexed_attributes(attributes)
66
- @test_object3.save
67
-
68
- @test_object4 = MockAFBaseQuerySolr.new
69
- attributes = {"holding_id"=>{0=>"Holding 3"},
70
- "language"=>{0=>"Spanish;Latin"},
71
- "creator"=>{0=>"Linguist, A."},
72
- "geography"=>{0=>"Spain"},
73
- "title"=>{0=>"An obscure look into early nomadic tribes of Spain"}}
74
- @test_object4.update_indexed_attributes(attributes)
75
- @test_object4.save
76
-
75
+ it 'should return fedora objects of the correct class' do
77
76
  #query based on just model
78
77
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({})
79
78
  found_pids = []
@@ -82,7 +81,9 @@ describe ActiveFedora::Base do
82
81
  end
83
82
 
84
83
  found_pids.should == [@test_object2.pid,@test_object3.pid,@test_object4.pid]
84
+ end
85
85
 
86
+ it 'should match a query against multiple result fields' do
86
87
  #query on certain fields
87
88
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"language"=>"Latin"})
88
89
  found_pids = []
@@ -107,23 +108,10 @@ describe ActiveFedora::Base do
107
108
  end
108
109
 
109
110
  found_pids.should == [@test_object3.pid,@test_object4.pid]
111
+ end
110
112
 
113
+ it 'should query against many fields' do
111
114
  #assume spaces removed at index time so query by 'Linguist,A.' instead of 'Linguist, A.'
112
- results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A."})
113
- found_pids = []
114
- results.hits.each do |hit|
115
- found_pids.push(hit[SOLR_DOCUMENT_ID])
116
- end
117
-
118
- found_pids.should == [@test_object2.pid,@test_object3.pid,@test_object4.pid]
119
-
120
- results = MockAFBaseQuerySolr.find_by_fields_by_solr({"geography"=>"Italy"})
121
- found_pids = []
122
- results.hits.each do |hit|
123
- found_pids.push(hit[SOLR_DOCUMENT_ID])
124
- end
125
-
126
- found_pids.should == [@test_object2.pid]
127
115
 
128
116
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A.","title"=>"latin"})
129
117
  found_pids = []
@@ -132,6 +120,9 @@ describe ActiveFedora::Base do
132
120
  end
133
121
 
134
122
  found_pids.should == [@test_object3.pid]
123
+ end
124
+
125
+ it 'should query by id' do
135
126
 
136
127
  #query with value with embedded ':' (pid)
137
128
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"id"=>@test_object3.pid})
@@ -141,9 +132,10 @@ describe ActiveFedora::Base do
141
132
  end
142
133
 
143
134
  found_pids.should == [@test_object3.pid]
144
-
145
- #query with different options
146
- #sort defaults to system_create_date
135
+ end
136
+
137
+
138
+ it "should sort by default by system_create_date" do
147
139
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A.","language"=>"Spanish"})
148
140
  found_pids = []
149
141
  results.hits.each do |hit|
@@ -151,8 +143,9 @@ describe ActiveFedora::Base do
151
143
  end
152
144
 
153
145
  found_pids.should == [@test_object3.pid,@test_object4.pid]
154
-
155
- #change sort direction
146
+ end
147
+
148
+ it "should be able to change the sort direction" do
156
149
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A."},{:sort=>[{"system_create"=>"desc"}]})
157
150
  found_pids = []
158
151
  results.hits.each do |hit|
@@ -160,8 +153,9 @@ describe ActiveFedora::Base do
160
153
  end
161
154
 
162
155
  found_pids.should == [@test_object4.pid,@test_object3.pid,@test_object2.pid]
163
-
164
- #pass in sort without direction defined and make ascending by default
156
+ end
157
+
158
+ it "should default the sort direction to ascending" do
165
159
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A."},{:sort=>["system_create"]})
166
160
  found_pids = []
167
161
  results.hits.each do |hit|
@@ -169,8 +163,10 @@ describe ActiveFedora::Base do
169
163
  end
170
164
 
171
165
  found_pids.should == [@test_object2.pid,@test_object3.pid,@test_object4.pid]
166
+ end
172
167
 
173
- #sort on multiple fields
168
+
169
+ it "should sort by multiple fields" do
174
170
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A."},{:sort=>["geography",{"system_create"=>"desc"}]})
175
171
  found_pids = []
176
172
  results.hits.each do |hit|
@@ -178,7 +174,9 @@ describe ActiveFedora::Base do
178
174
  end
179
175
 
180
176
  found_pids.should == [@test_object2.pid,@test_object4.pid,@test_object3.pid]
177
+ end
181
178
 
179
+ it "should transform system_modified_date" do
182
180
  #check appropriate logic for system_modified_date field name transformation
183
181
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A."},{:sort=>["geography",{"system_mod"=>"desc"}]})
184
182
  found_pids = []
@@ -187,7 +185,9 @@ describe ActiveFedora::Base do
187
185
  end
188
186
 
189
187
  found_pids.should == [@test_object2.pid,@test_object4.pid,@test_object3.pid]
190
-
188
+ end
189
+
190
+ it "should accept rows as a parameter" do
191
191
  #check pass in rows values
192
192
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"creator"=>"Linguist,A."},{:rows=>2})
193
193
  found_pids = []
@@ -196,16 +196,26 @@ describe ActiveFedora::Base do
196
196
  end
197
197
 
198
198
  found_pids.should == [@test_object2.pid,@test_object3.pid]
199
+ end
199
200
 
201
+ it "should accept a solr field (geography_t) that is not an object field name(e.g. geography)" do
200
202
  #check query with field mapping to solr field and with solr field that is not a field in object
201
203
  #should be able to query by either active fedora model field name or solr key name
202
204
  results = MockAFBaseQuerySolr.find_by_fields_by_solr({"geography_t"=>"Italy"})
203
- found_pids = []
204
- results.hits.each do |hit|
205
- found_pids.push(hit[SOLR_DOCUMENT_ID])
206
- end
207
-
205
+ found_pids = results.hits.map{|h| h[SOLR_DOCUMENT_ID]}
208
206
  found_pids.should == [@test_object2.pid]
209
207
  end
208
+
209
+ describe "with Nokogiri based datastreams" do
210
+ before do
211
+ @test_object2.ng_metadata.journal_title = "foo"
212
+ @test_object2.save
213
+ end
214
+ it "should query Nokogiri based datastreams if you use the solr field names (doesn't do mapping)" do
215
+ results = MockAFBaseQuerySolr.find_by_fields_by_solr({"journal_title_t" => "foo"})
216
+ found_pids = results.hits.map{|h| h[SOLR_DOCUMENT_ID]}
217
+ found_pids.should == [@test_object2.pid]
218
+ end
219
+ end
210
220
  end
211
221
  end
@@ -15,7 +15,6 @@ describe ActiveFedora::DatastreamCollections do
15
15
  describe '#add_named_datastream' do
16
16
  it 'should add a datastream with the given name to the object in fedora' do
17
17
  @test_object2 = MockAFBaseDatastream.new
18
- # @test_object2.new_object = true
19
18
  f = File.open(File.join( File.dirname(__FILE__), "../fixtures/minivan.jpg"), 'rb')
20
19
  f2 = File.open(File.join( File.dirname(__FILE__), "../fixtures/dino.jpg" ), 'rb')
21
20
  f2.stubs(:original_filename).returns("dino.jpg")
@@ -0,0 +1,66 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveFedora::MetadataDatastream do
4
+
5
+ describe "changing the controlGroup of a datastream" do
6
+ before :all do
7
+ class Foo < ActiveFedora::Base
8
+ has_metadata :name => "stuff", :type => ActiveFedora::MetadataDatastream do |m|
9
+ m.field "alt_title", :string
10
+ end
11
+ end
12
+ obj = Foo.new()
13
+ obj.stuff.update_indexed_attributes({ [:alt_title] => {"0" => "Title"}} )
14
+ obj.save
15
+
16
+ #Update the object
17
+ obj2 = Foo.find(obj.pid)
18
+ obj2.stuff.controlGroup = 'M'
19
+ obj2.save
20
+
21
+ @obj = Foo.find(obj.pid)
22
+ end
23
+
24
+ after :all do
25
+ Object.send(:remove_const, :Foo)
26
+ end
27
+
28
+ it "should not change the datastream content" do
29
+ @obj.stuff.alt_title_values.should == ['Title']
30
+ end
31
+ end
32
+ describe "updating a datastream's content" do
33
+ before :all do
34
+ class Foo < ActiveFedora::Base
35
+ has_metadata :name => "properties", :type => ActiveFedora::MetadataDatastream do |m|
36
+ m.field "field1", :string
37
+ end
38
+ has_metadata :name => "stuff", :type => ActiveFedora::MetadataDatastream do |m|
39
+ m.field "alt_title", :string
40
+ end
41
+ end
42
+ obj = Foo.new()
43
+ obj.properties.update_indexed_attributes({ [:field1] => {"0" => "test value"}} )
44
+ obj.stuff.update_indexed_attributes({ [:alt_title] => {"0" => "Title"}} )
45
+ obj.save
46
+
47
+ #Update the object
48
+ obj2 = Foo.find(obj.pid)
49
+ obj2.stuff.update_indexed_attributes({ [:alt_title] => {"0" => "Moo Cow"}} )
50
+ obj2.save
51
+
52
+ @obj = Foo.find(obj.pid)
53
+ end
54
+
55
+ after :all do
56
+ Object.send(:remove_const, :Foo)
57
+ end
58
+
59
+ it "should have updated the one datastream" do
60
+ @obj.stuff.alt_title_values.should == ['Moo Cow']
61
+ end
62
+ it "should not have changed the other datastream" do
63
+ @obj.properties.field1_values.should == ['test value']
64
+ end
65
+ end
66
+ end
@@ -538,6 +538,11 @@ describe ActiveFedora::Base do
538
538
  ds.dsLabel.should == nil
539
539
  ds.mimeType.should == "application/octet-stream"
540
540
  end
541
+
542
+ it 'should not set dsLocation if dsLocation is nil' do
543
+ ActiveFedora::Datastream.any_instance.expects(:dsLocation=).never
544
+ ds = @test_object.create_datastream("ActiveFedora::Datastream", 'NAME', {:dsLocation=>nil})
545
+ end
541
546
  end
542
547
 
543
548
  describe ".add_file_datastream" do
@@ -87,7 +87,7 @@ describe ActiveFedora::Datastream do
87
87
  EOS
88
88
  @test_datastream.expects(:repository).returns(@mock_repo)
89
89
  @mock_repo.expects(:datastream).with(:dsid => 'abcd', :pid => @test_object.pid).returns(ds_profile)
90
- @test_datastream.size.should == "9999"
90
+ @test_datastream.size.should == 9999
91
91
  end
92
92
 
93
93
  it "should default to an empty string if ds has not been saved" do
@@ -21,6 +21,7 @@ describe ActiveFedora::MetadataDatastream do
21
21
  mock_inner = mock('inner object')
22
22
  @test_object = ActiveFedora::Base.new
23
23
  @mock_repo = mock('repository')
24
+ @mock_repo.stubs(:datastream)
24
25
  @mock_repo.stubs(:datastream_dissemination=>'My Content')
25
26
  mock_inner.stubs(:repository).returns(@mock_repo)
26
27
  mock_inner.stubs(:pid)
@@ -40,14 +41,17 @@ describe ActiveFedora::MetadataDatastream do
40
41
 
41
42
  describe '.save' do
42
43
  it "should persist the product of .to_xml in fedora" do
43
- @test_ds.expects(:new?).returns(true).twice
44
+ @test_ds.field('coverage', :string)
45
+ @test_ds.expects(:new?).returns(true).times(3)
44
46
  @mock_repo.expects(:datastream).with(:pid => nil, :dsid => 'mdDs')
45
- @mock_repo.expects(:add_datastream).with(:pid => nil, :dsid => 'mdDs', :checksumType => 'DISABLED', :versionable => true, :content => 'fake xml', :controlGroup => 'M', :dsState => 'A', :mimeType=>'text/xml')
46
- @test_ds.expects(:to_xml).returns("fake xml")
47
+ @mock_repo.expects(:add_datastream)
48
+ #@test_ds.expects(:to_xml).returns("fake xml")
47
49
  @test_ds.expects(:dirty?).returns(true)
50
+ @test_ds.update_attributes(:coverage=>"Hat")
48
51
  @test_ds.serialize!
49
52
  @test_ds.save
50
53
  @test_ds.mimeType.should == 'text/xml'
54
+ @test_ds.content.should == "<?xml version=\"1.0\"?>\n<fields>\n <coverage>Hat</coverage>\n</fields>\n"
51
55
  end
52
56
  end
53
57
 
@@ -1,10 +1,5 @@
1
1
  require 'spec_helper'
2
2
 
3
- require 'active_fedora'
4
- require 'xmlsimple'
5
- require 'nokogiri'
6
- require 'equivalent-xml'
7
-
8
3
  describe ActiveFedora::QualifiedDublinCoreDatastream do
9
4
 
10
5
  before(:all) do
@@ -128,6 +123,7 @@ describe ActiveFedora::QualifiedDublinCoreDatastream do
128
123
  describe 'serialize!' do
129
124
  it "should call .content= with to_dc_xml" do
130
125
  result = @test_ds.to_dc_xml
126
+ @test_ds.ensure_xml_loaded
131
127
  @test_ds.expects(:content=).with(result)
132
128
  @test_ds.expects(:dirty?).returns(true)
133
129
  @test_ds.serialize!
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active-fedora
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 2
9
- - 0
10
- version: 3.2.0
9
+ - 2
10
+ version: 3.2.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Matt Zumwalt
@@ -17,7 +17,7 @@ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
19
 
20
- date: 2012-01-09 00:00:00 -06:00
20
+ date: 2012-01-20 00:00:00 -06:00
21
21
  default_executable:
22
22
  dependencies:
23
23
  - !ruby/object:Gem::Dependency
@@ -212,12 +212,12 @@ dependencies:
212
212
  requirements:
213
213
  - - ~>
214
214
  - !ruby/object:Gem::Version
215
- hash: 19
215
+ hash: 13
216
216
  segments:
217
217
  - 0
218
- - 3
219
- - 0
220
- version: 0.3.0
218
+ - 4
219
+ - 1
220
+ version: 0.4.1
221
221
  requirement: *id013
222
222
  - !ruby/object:Gem::Dependency
223
223
  name: rdf
@@ -569,8 +569,8 @@ files:
569
569
  - lib/active_fedora/datastreams.rb
570
570
  - lib/active_fedora/delegating.rb
571
571
  - lib/active_fedora/digital_object.rb
572
- - lib/active_fedora/fedora_object.rb
573
572
  - lib/active_fedora/file_management.rb
573
+ - lib/active_fedora/fixture_exporter.rb
574
574
  - lib/active_fedora/fixture_loader.rb
575
575
  - lib/active_fedora/metadata_datastream.rb
576
576
  - lib/active_fedora/metadata_datastream_helper.rb
@@ -582,7 +582,6 @@ files:
582
582
  - lib/active_fedora/predicates.rb
583
583
  - lib/active_fedora/property.rb
584
584
  - lib/active_fedora/qualified_dublin_core_datastream.rb
585
- - lib/active_fedora/railtie.rb
586
585
  - lib/active_fedora/rdf_xml_writer.rb
587
586
  - lib/active_fedora/reflection.rb
588
587
  - lib/active_fedora/relationship.rb
@@ -639,6 +638,7 @@ files:
639
638
  - spec/integration/datastream_spec.rb
640
639
  - spec/integration/full_featured_model_spec.rb
641
640
  - spec/integration/metadata_datastream_helper_spec.rb
641
+ - spec/integration/metadata_datastream_spec.rb
642
642
  - spec/integration/model_spec.rb
643
643
  - spec/integration/mods_article_integration_spec.rb
644
644
  - spec/integration/nested_attribute_spec.rb
@@ -783,6 +783,7 @@ test_files:
783
783
  - spec/integration/datastream_spec.rb
784
784
  - spec/integration/full_featured_model_spec.rb
785
785
  - spec/integration/metadata_datastream_helper_spec.rb
786
+ - spec/integration/metadata_datastream_spec.rb
786
787
  - spec/integration/model_spec.rb
787
788
  - spec/integration/mods_article_integration_spec.rb
788
789
  - spec/integration/nested_attribute_spec.rb
@@ -1,78 +0,0 @@
1
- module ActiveFedora
2
-
3
- #
4
- # This is a module replacing the ActiveFedora::Base class.
5
- #
6
- module FedoraObject
7
- def initialize
8
- @inner_object = Fedora::FedoraObject.new
9
- Fedora::Repository.instance.save @inner_object
10
- end
11
-
12
- def save
13
- Fedora::Repository.instance.save(@inner_object)
14
- end
15
-
16
- def delete
17
- Fedora::Repository.instance.delete(@inner_object)
18
- end
19
-
20
- def datastreams
21
- datastreams = {}
22
- self.datastreams_xml['datastream'].each do |ds|
23
- ds.merge!({:pid => self.pid, :dsID => ds["dsid"]})
24
- datastreams.merge!({ds["dsid"] => ActiveFedora::Datastream.new(ds)})
25
- end
26
- return datastreams
27
- end
28
-
29
- def datastreams_xml
30
- datastreams_xml = XmlSimple.xml_in(Fedora::Repository.instance.fetch_custom(self.pid, :datastreams))
31
- end
32
-
33
- # Adds datastream to the object. Saves the datastream to fedora upon adding.
34
- def add_datastream(datastream)
35
- datastream.pid = self.pid
36
- datastream.save
37
- end
38
-
39
- # DC Datastream
40
- def dc
41
- #dc = REXML::Document.new(datastreams["DC"].content)
42
- return datastreams["DC"]
43
- end
44
-
45
- # RELS-EXT Datastream
46
- def rels_ext
47
- if !datastreams.has_key?("RELS-EXT")
48
- add(ActiveFedora::RelsExtDatastream.new)
49
- end
50
-
51
- return datastreams["RELS-EXT"]
52
- end
53
-
54
- def inner_object
55
- @inner_object
56
- end
57
-
58
- def pid
59
- @inner_object.pid
60
- end
61
-
62
- def state
63
- @inner_object.state
64
- end
65
-
66
- def owner_id
67
- @inner_object.owner_id
68
- end
69
-
70
- def errors
71
- @inner_object.errors
72
- end
73
-
74
- end
75
-
76
-
77
-
78
- end
@@ -1,10 +0,0 @@
1
- require 'active-fedora'
2
- require 'rails'
3
-
4
- module ActiveFedora
5
- # class Railtie < Rails::Railtie
6
- # initializer "active-fedora.configure_rails_initialization" do
7
- # ActiveFedora.init
8
- # end
9
- # end
10
- end