Skip to content
Snippets Groups Projects
Commit cf29aa94 authored by Mateus Rambo Strey's avatar Mateus Rambo Strey
Browse files

Merge branch 'fix-publisher-import' into 'master'

Adding institution importer



See merge request !203
parents aa4dddb0 1bfd12be
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