Skip to content
Snippets Groups Projects
Commit 1bfd12be authored by Giovanne Marcelo's avatar Giovanne Marcelo
Browse files

Adding institution importer

parent c22a4d30
No related branches found
No related tags found
No related merge requests found
class InstitutionImporter
attr_accessor :items
def initialize
@names = []
@learning_objects = []
end
def import
@items.each do |learning_object|
publisher = learning_object.get_metadata_value_of 'dc.creator'
if publisher.nil?
institution = Institution.where(name: "Banco Internacional de Objetos Educacionais").first_or_create
elsif !institution_exists?(publisher)
institution = Institution.new(name: publisher)
institution.save
@names << publisher
end
learning_object.publisher = institution
learning_object.save
end
end
private
def institution_exists?(publisher)
exists = @names.include? publisher
unless exists
exists = Institution.exists?(name: publisher)
@names << publisher if exists
end
exists
end
end
......@@ -45,6 +45,49 @@ namespace :import do
logger.close
end
task :institution, [:log] => [:environment] do |t, args|
desc "Create Publisher relations based on its metadata"
include Log::Logging
args.with_defaults(:log => STDOUT)
Log::Logging.logger = Log::DatabaseLogger.new(args.log)
logger.level = Log::DatabaseLogger::CREATE
# Quantity of items fetched on each iteration
limit = 500
# Start point from where items will be fetched
offset = 0
importer = InstitutionImporter.new
loop do
logger.info " --> Creating Publisher relations from #{offset} to #{offset+limit}"
begin
# Get learning_objects (from offset to offset+limit)
learning_objects = LearningObject.limit(limit).offset(offset)
rescue => e
logger.warn "Database error, going to sleep"
logger.error e
# Sleeps for a while to wait database's recovery
sleep(10.seconds)
# Goes to next iteration to retry
next
else
# Terminate loop if there are no more learning_objects to import
break if learning_objects.empty?
importer.items = learning_objects
importer.import
end
offset += limit
end
logger.close
end
task :learning_objects, [:log] => [:environment] do |t, args|
desc "Importing Learning Objects from Dspace items"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment