lib/tasks/active_fedora.rake in active-fedora-3.2.0 vs lib/tasks/active_fedora.rake in active-fedora-3.2.2
- old
+ new
@@ -1,117 +1,92 @@
require "active-fedora"
require "solrizer-fedora"
require "active_support" # This is just to load ActiveSupport::CoreExtensions::String::Inflections
-namespace :af do
+namespace :repo do
+ desc "Delete and re-import the object identified by pid"
+ task :refresh => [:delete,:load]
- desc "Delete and re-import the fixture identified by pid"
- task :refresh_fixture => [:delete,:import_fixture]
-
- desc "Delete the object identified by pid. Example: rake fedora:delete pid=demo:12"
+ desc "Delete the object identified by pid. Example: rake repo:delete pid=demo:12"
task :delete => :init do
- # If a destination url has been provided, attampt to export from the fedora repository there.
- if ENV["destination"]
- Fedora::Repository.register(ENV["destination"])
- end
-
if ENV["pid"].nil?
- puts "You must specify a valid pid. Example: rake fedora:delete pid=demo:12"
+ puts "You must specify a valid pid. Example: rake repo:delete pid=demo:12"
else
pid = ENV["pid"]
begin
ActiveFedora::Base.load_instance(pid).delete
rescue ActiveFedora::ObjectNotFoundError
puts "The object #{pid} has already been deleted (or was never created)."
rescue Errno::ECONNREFUSED => e
puts "Can't connect to Fedora! Are you sure jetty is running?"
end
- logger.info "Deleted '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
+ puts "Deleted '#{pid}' from #{ActiveFedora.fedora_config[:url]}"
end
end
- 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"
- task :purge_range => :init do |t, args|
- # If Fedora Repository connection is not already initialized, initialize it using ActiveFedora defaults
- # ActiveFedora.init unless Thread.current[:repo]
-
+ 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"
+ task :delete_range => :init do |t, args|
namespace = ENV["namespace"]
start_point = ENV["start"].to_i
stop_point = ENV["stop"].to_i
- unless start_point < stop_point
+ unless start_point <= stop_point
raise StandardError "start point must be less that end point."
end
- puts "Deleting #{stop_point - start_point} objects from #{namespace}:#{start_point.to_s} to #{namespace}:#{stop_point.to_s}"
+ puts "Deleting #{stop_point - start_point + 1} objects from #{namespace}:#{start_point.to_s} to #{namespace}:#{stop_point.to_s}"
i = start_point
while i <= stop_point do
pid = namespace + ":" + i.to_s
begin
ActiveFedora::Base.load_instance(pid).delete
rescue ActiveFedora::ObjectNotFoundError
# The object has already been deleted (or was never created). Do nothing.
end
- puts "Deleted '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
+ puts "Deleted '#{pid}' from #{ActiveFedora.fedora_config[:url]}"
i += 1
end
end
-
- 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"
- task :harvest_fixture => :init do
-
- # If a source url has been provided, attampt to export from the fedora repository there.
- if ENV["source"]
- #FIXME
- raise "Not Implemented"
- #Fedora::Repository.register(ENV["source"])
- end
-
+
+ desc "Export the object identified by pid into spec/fixtures. Example:rake repo:export pid=demo:12"
+ task :export => :init do
if ENV["pid"].nil?
- puts "You must specify a valid pid. Example: rake fedora:harvest_fixture pid=demo:12"
+ puts "You must specify a valid pid. Example: rake repo:export pid=demo:12"
else
pid = ENV["pid"]
- puts "Exporting '#{pid}' from #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
- #FIXME
- raise "Not Implemented"
- foxml = Fedora::Repository.instance.export(pid)
- filename = File.join("spec","fixtures","#{pid.gsub(":","_")}.foxml.xml")
- file = File.new(filename,"w")
- file.syswrite(foxml)
+ puts "Exporting '#{pid}' from #{ActiveFedora.fedora_config[:url]}"
+ if !ENV["path"].nil?
+ path = ENV["path"]
+ else
+ path = File.join('spec', 'fixtures')
+ end
+ filename = ActiveFedora::FixtureExporter.export_to_path(pid, path)
puts "The object has been saved as #{filename}"
end
end
- desc "Import the fixture located at the provided path. Example: rake fedora:import_fixture fixture=spec/fixtures/demo_12.foxml.xml"
- task :import_fixture => [:init, :environment] do
-
- # If a destination url has been provided, attampt to export from the fedora repository there.
- if ENV["destination"]
- #FIXME
- raise "Not Implemented"
- Fedora::Repository.register(ENV["destination"])
- end
-
- if !ENV["fixture"].nil?
- filename = ENV["fixture"]
+ desc "Load the object located at the provided path or identified by pid. Example: rake repo:load path=spec/fixtures/demo_12.foxml.xml"
+ task :load => :init do
+ if !ENV["path"].nil?
+ filename = ENV["path"]
elsif !ENV["pid"].nil?
pid = ENV["pid"]
filename = File.join("spec","fixtures","#{pid.gsub(":","_")}.foxml.xml")
else
- 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"
+ puts "You must specify a path to the object or provide its pid. Example: rake repo:load path=spec/fixtures/demo_12.foxml.xml"
end
if !filename.nil?
- puts "Importing '#{filename}' to #{ActiveFedora::RubydoraConnection.instance.options[:url]}"
+ puts "Loading '#{filename}' in #{ActiveFedora.fedora_config[:url]}"
file = File.new(filename, "r")
- result = foxml = ActiveFedora::RubydoraConnection.instance.connection.ingest(:file=>file.read)
-# result = foxml = Fedora::Repository.instance.ingest(file.read)
+ result = ActiveFedora::RubydoraConnection.instance.connection.ingest(:file=>file.read)
if result
- puts "The fixture has been ingested as #{result.body}"
- if !pid.nil?
- solrizer = Solrizer::Fedora::Solrizer.new
- solrizer.solrize(pid)
- end
+ puts "The object has been loaded as #{result.body}"
+ if pid.nil?
+ pid = result.body
+ end
+ solrizer = Solrizer::Fedora::Solrizer.new
+ solrizer.solrize(pid)
else
- puts "Failed to ingest the fixture."
+ puts "Failed to load the object."
end
end
end