aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlban Peignier2012-06-04 16:24:49 +0200
committerAlban Peignier2012-06-04 16:24:49 +0200
commit5eb971da6c9808cc2ff8f1ab1bcc7ffecc53442d (patch)
treeee027c50b87051ce4497b60cdb85d1129266e84f
parent6163c10aa33d62e735d63aae7df796f0152ad3cc (diff)
downloadchouette-core-5eb971da6c9808cc2ff8f1ab1bcc7ffecc53442d.tar.bz2
Add several import types support
-rw-r--r--Gemfile.lock2
-rw-r--r--app/models/import.rb14
-rw-r--r--app/models/neptune_import.rb7
-rw-r--r--db/migrate/20120531070108_add_type_and_options_to_import.rb8
-rw-r--r--db/schema.rb2
-rw-r--r--spec/models/import_spec.rb8
6 files changed, 39 insertions, 2 deletions
diff --git a/Gemfile.lock b/Gemfile.lock
index 4e2d8e900..854660c94 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -1,6 +1,6 @@
GIT
remote: git://chouette.dryade.priv/ninoxe
- revision: 79d9dec838bf0c6e199fac649507abb060de1e0e
+ revision: 1b68352e83c2ef898fdab7cd4c4eeddba6a977d5
specs:
ninoxe (0.0.8)
GeoRuby
diff --git a/app/models/import.rb b/app/models/import.rb
index 64b5b5624..b08f8e8f3 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -11,6 +11,14 @@ class Import < ActiveRecord::Base
has_many :log_messages, :class_name => "ImportLogMessage", :order => :position, :dependent => :destroy
+ serialize :options
+
+ after_initialize :define_options
+
+ def define_options
+ self.options = {}
+ end
+
def loader
@loader ||= ::Chouette::Loader.new(referential.slug)
end
@@ -55,6 +63,10 @@ class Import < ActiveRecord::Base
"#{Import.model_name.humanize} #{id}"
end
+ def import_options
+ {}
+ end
+
def import
begin
log_messages.create :key => :started
@@ -64,7 +76,7 @@ class Import < ActiveRecord::Base
loader.import file
end
else
- loader.import saved_resources
+ loader.import saved_resources, import_options
end
update_attribute :status, "completed"
rescue => e
diff --git a/app/models/neptune_import.rb b/app/models/neptune_import.rb
new file mode 100644
index 000000000..f00947129
--- /dev/null
+++ b/app/models/neptune_import.rb
@@ -0,0 +1,7 @@
+class NeptuneImport < Import
+
+ def import_options
+ { :format => :neptune }
+ end
+
+end
diff --git a/db/migrate/20120531070108_add_type_and_options_to_import.rb b/db/migrate/20120531070108_add_type_and_options_to_import.rb
new file mode 100644
index 000000000..490427c8a
--- /dev/null
+++ b/db/migrate/20120531070108_add_type_and_options_to_import.rb
@@ -0,0 +1,8 @@
+class AddTypeAndOptionsToImport < ActiveRecord::Migration
+ def change
+ change_table :imports do |t|
+ t.string :type, :options
+ end
+ Import.update_all :type => "NeptuneImport"
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index d8532b785..5e65e41e4 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -184,6 +184,8 @@ ActiveRecord::Schema.define(:version => 20120531091529) do
t.string "status"
t.datetime "created_at"
t.datetime "updated_at"
+ t.string "type"
+ t.string "options"
end
add_index "imports", ["referential_id"], :name => "index_imports_on_referential_id"
diff --git a/spec/models/import_spec.rb b/spec/models/import_spec.rb
index f307b59db..f0b76c15e 100644
--- a/spec/models/import_spec.rb
+++ b/spec/models/import_spec.rb
@@ -34,4 +34,12 @@ describe Import do
end
+ describe "#options" do
+
+ it "should be empty by default" do
+ subject.options.should be_empty
+ end
+
+ end
+
end