diff --git a/app/services/topics_importer.rb b/app/services/topics_importer.rb index 1acf80432b5c40bc85c4ab2b7efd91db22467fd2..0180f3e3182c545117aa15a1f628b3df453f8066 100644 --- a/app/services/topics_importer.rb +++ b/app/services/topics_importer.rb @@ -9,26 +9,33 @@ class TopicsImporter def import - relations = [] + learning_objects = [] @items.each do |learning_object| lo_topics = parse_topics ( learning_object.get_metadata_values_of "dc.subject.category" ) - lo_topics.each_with_index do |topic_name, i| + lo_topics.each do |topic_name| + topic = @@topics[topic_name] + + if !topic_exists? topic_name + topic = Topic.where(name: topic_name).new + elsif @@topics[topic_name].nil? + topic = Topic.find_by_name topic_name + end - next if topic_exists? topic_name - topic = Topic.where(name: topic_name).new - topic.learning_objects << learning_object - create_relations(lo_topics[i - 1], topic_name) unless i == 0 + create_relations(topic_name) + learning_object.topics << topic @@topics[topic_name] = topic end + learning_objects << learning_object separate_relations() end Topic.import @@topics.values + LearningObject.import learning_objects import_topics_relations() end @@ -36,9 +43,8 @@ class TopicsImporter private - def create_relations parent_name, child_name - @@topics_relations.push(parent_name) - @@topics_relations.push(child_name) + def create_relations topic_name + @@topics_relations << topic_name end def separate_relations @@ -53,7 +59,7 @@ class TopicsImporter unless relation.nil? || @@topics_relations[i - 1].nil? parent_id = Topic.find_by_name(@@topics_relations[i - 1]).id child_id = Topic.find_by_name(relation).id - unless TopicRelationship.exists?(parent_id: parent_id, child_id: child_id) || i == 0 + unless TopicRelationship.exists?(parent_id: parent_id, child_id: child_id) relations.push TopicRelationship.where(parent_id: parent_id, child_id: child_id ).new end end