Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'rubygems'
- require 'active-fedora'
- require 'open-uri'
- require File.expand_path(File.dirname(__FILE__) + '/boot')
- class DeleteFedoraObjects
- attr_reader :repository
- attr_reader :workflow
- attr_reader :registration_robot
- attr_reader :druid_list
- # Given a repository, a workflow and the name of a robot that registers objects in fedora
- # we can generate a list of all the druids that were created by that robot
- def initialize(repository, workflow, registration_robot)
- @repository = repository
- @workflow = workflow
- @registration_robot = registration_robot
- @druid_list = self.get_druid_list
- end
- def get_druid_list
- begin
- druid_list = []
- url_string = "#{WORKFLOW_URI}/workflow_queue?repository=#{@repository}&workflow=#{@workflow}&completed=#{@registration_robot}"
- doc = Nokogiri::XML(open(url_string))
- doc.xpath("//objects/object/@id").each do |id|
- druid_list << id.to_s
- end
- return druid_list
- rescue Exception => e
- raise e, "Couldn't fetch druid list from #{url_string}"
- end
- end
- # Iterate through the druids in @druid_list and delete each of them from FEDORA
- def delete_druids
- connect_to_fedora
- @druid_list.each do |druid|
- obj = ActiveFedora::Base.load_instance(druid)
- puts obj.inspect
- end
- end
- def connect_to_fedora
- begin
- if @repository == "dor"
- repo_url = FEDORA_URI
- elsif @repository == "sdr"
- repo_url = SEDORA_URI
- else
- raise "I don't know how to connect to repository #{@repository}"
- end
- puts "connecting to #{repo_url}"
- Fedora::Repository.register(repo_url)
- rescue Errno::ECONNREFUSED => e
- raise e, "Can't connect to Fedora at url #{repo_url}"
- end
- end
- end
- dfo = DeleteFedoraObjects.new("dor","googleScannedBookWF", "register-object")
- dfo.delete_druids
Add Comment
Please, Sign In to add comment