aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Florisson2013-07-12 16:45:53 +0200
committerMarc Florisson2013-07-12 16:45:53 +0200
commit68ec1a20450166a362d53b9781cc86697d3c49a1 (patch)
tree0b41ab4c80874315429cc016277c07fc7fb52bc1
parente6f0ecb679e84f19349d339879bef331e2e30a82 (diff)
parent2bccbc4d0c4e732a2af744d975f35c9d8f7bfd28 (diff)
downloadchouette-core-68ec1a20450166a362d53b9781cc86697d3c49a1.tar.bz2
merge export kml branch
-rw-r--r--Gemfile7
-rw-r--r--Gemfile.lock22
-rw-r--r--app/assets/images/download-small.pngbin343 -> 298 bytes
-rw-r--r--app/assets/javascripts/exports.js.coffee5
-rw-r--r--app/exporters/chouette/kml/access_link_exporter.rb35
-rw-r--r--app/exporters/chouette/kml/access_point_exporter.rb36
-rw-r--r--app/exporters/chouette/kml/connection_link_exporter.rb35
-rw-r--r--app/exporters/chouette/kml/exporter.rb91
-rw-r--r--app/exporters/chouette/kml/itl_exporter.rb28
-rw-r--r--app/exporters/chouette/kml/journey_pattern_exporter.rb33
-rw-r--r--app/exporters/chouette/kml/line_exporter.rb34
-rw-r--r--app/exporters/chouette/kml/route_exporter.rb35
-rw-r--r--app/exporters/chouette/kml/stop_area_exporter.rb29
-rw-r--r--app/models/export.rb23
-rw-r--r--app/models/import.rb2
-rw-r--r--app/models/kml_export.rb11
-rw-r--r--app/views/api/kml/access_links/index.kml.erb26
-rw-r--r--app/views/api/kml/access_points/index.kml.erb23
-rw-r--r--app/views/api/kml/connection_links/index.kml.erb26
-rw-r--r--app/views/api/kml/journey_patterns/show.kml.erb42
-rw-r--r--app/views/api/kml/lines/index.kml.erb27
-rw-r--r--app/views/api/kml/lines/show.kml.erb35
-rw-r--r--app/views/api/kml/routes/index.kml.erb25
-rw-r--r--app/views/api/kml/routes/show.kml.erb29
-rw-r--r--app/views/api/kml/stop_areas/_stop_area.kml.erb21
-rw-r--r--app/views/api/kml/stop_areas/index.kml.erb25
-rw-r--r--app/views/exports/new.html.erb2
-rw-r--r--config/locales/exports.yml24
-rw-r--r--db/schema.rb18
-rw-r--r--spec/exporters/chouette/kml/exporter_spec.rb55
-rw-r--r--spec/factories.rb4
-rw-r--r--spec/models/export_spec.rb2
32 files changed, 661 insertions, 149 deletions
diff --git a/Gemfile b/Gemfile
index 7bf8dd7ab..f145cfdf8 100644
--- a/Gemfile
+++ b/Gemfile
@@ -27,7 +27,7 @@ gem "georuby-ext", :git => 'git://github.com/dryade/georuby-ext.git'
#gem "georuby-ext", "0.0.2"
# User interface
-gem 'user_interface', "0.0.3"
+gem 'user_interface', "0.0.4"
gem 'gravatar_image_tag'
gem 'calendar_helper', "0.2.5"
gem 'cocoon', "1.1.2"
@@ -38,6 +38,7 @@ gem "modernizr-rails", "~> 2.0.6"
# Format Output
gem 'json'
+gem 'rubyzip', :require => 'zip/zip'
# Controller
gem 'inherited_resources'
@@ -46,8 +47,8 @@ gem 'inherited_resources'
gem 'will_paginate', '~> 3.0'
gem 'ransack'
gem 'squeel'
-gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git'
-#gem 'ninoxe', '0.1.2'
+#gem 'ninoxe', :git => 'git://github.com/dryade/ninoxe.git'
+gem 'ninoxe', '0.1.3'
gem 'acts_as_list', '0.1.6'
gem "acts_as_tree-1.8", '1.1.0', :require => "acts_as_tree"
diff --git a/Gemfile.lock b/Gemfile.lock
index 872e18f6e..889847519 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -13,16 +13,6 @@ GIT
nokogiri (= 1.5.10)
rgeo (= 0.3.20)
-GIT
- remote: git://github.com/dryade/ninoxe.git
- revision: ae8291fe90073bf5f00fe26526c3aa0abc0b602b
- specs:
- ninoxe (0.1.2)
- activerecord (~> 3.1)
- acts_as_list (~> 0.1.6)
- foreigner (= 1.4.0)
- georuby-ext (= 0.0.2)
-
GEM
remote: http://rubygems.org/
specs:
@@ -196,6 +186,11 @@ GEM
net-ssh (2.6.2)
net-ssh-gateway (1.1.0)
net-ssh (>= 1.99.1)
+ ninoxe (0.1.3)
+ activerecord (~> 3.1)
+ acts_as_list (~> 0.1.6)
+ foreigner (= 1.4.0)
+ georuby-ext (= 0.0.2)
nokogiri (1.5.10)
nokogiri (1.5.10-java)
open4 (1.3.0)
@@ -311,7 +306,7 @@ GEM
uglifier (1.2.7)
execjs (>= 0.3.0)
multi_json (~> 1.3)
- user_interface (0.0.3)
+ user_interface (0.0.4)
rails (> 3.1.0)
warbler (1.3.6)
jruby-jars (>= 1.4.0)
@@ -360,7 +355,7 @@ DEPENDENCIES
launchy
map_layers (= 0.0.4)
modernizr-rails (~> 2.0.6)
- ninoxe!
+ ninoxe (= 0.1.3)
pg (~> 0.11.0)
rabl
rails (= 3.2.6)
@@ -371,6 +366,7 @@ DEPENDENCIES
remarkable (~> 4.0.0.alpha4)
remarkable_activerecord (~> 4.0.0.alpha4)
rspec-rails (~> 2.0)
+ rubyzip
sass-rails (~> 3.2.3)
shoulda-matchers
sqlite3
@@ -378,6 +374,6 @@ DEPENDENCIES
therubyracer (~> 0.10.2)
therubyrhino
uglifier (>= 1.0.3)
- user_interface (= 0.0.3)
+ user_interface (= 0.0.4)
warbler
will_paginate (~> 3.0)
diff --git a/app/assets/images/download-small.png b/app/assets/images/download-small.png
index 6ffb8e642..3def4e391 100644
--- a/app/assets/images/download-small.png
+++ b/app/assets/images/download-small.png
Binary files differ
diff --git a/app/assets/javascripts/exports.js.coffee b/app/assets/javascripts/exports.js.coffee
index 6430c38ba..71b565e91 100644
--- a/app/assets/javascripts/exports.js.coffee
+++ b/app/assets/javascripts/exports.js.coffee
@@ -3,7 +3,6 @@ jQuery ->
references_type = $(event.target).val()
toggle_input = (li) ->
- console.log(li)
enabled = (li.data("type") == references_type)
# Hide li block
li.toggle(enabled)
@@ -17,7 +16,7 @@ jQuery ->
$('#export_type_submit').hide()
export_type_change = (event) ->
- export_type = $("select option:selected").attr("value")
+ export_type = $("input:radio:checked").attr("value")
$(form).toggle($(form).is("#" + export_type + "_new")) for form in $('form.export[method = "post"]')
- $('#export_type').change(export_type_change)
+ $("#export_type_input :radio[name='export[type]']").change(export_type_change)
diff --git a/app/exporters/chouette/kml/access_link_exporter.rb b/app/exporters/chouette/kml/access_link_exporter.rb
new file mode 100644
index 000000000..1cd9b5bbd
--- /dev/null
+++ b/app/exporters/chouette/kml/access_link_exporter.rb
@@ -0,0 +1,35 @@
+class Chouette::Kml::AccessLinkExporter
+ include ERB::Util
+ attr_accessor :access_links, :directory, :template
+
+ def initialize(access_links,directory)
+ @access_links = access_links
+ @directory = directory
+ @template = File.open('app/views/api/kml/access_links/index.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "access_links"
+ end
+
+ def file_extension
+ ".kml"
+ end
+
+ def self.save( models, directory, kml_export)
+ self.new( models, directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|ACCES_LINK_COUNT", :arguments => {"0" => models.size})
+ end
+
+ def save( name = nil)
+ File.open(directory + "/" + (name || kml_name) + file_extension, "w+") do |f|
+ f.write(render)
+ end if access_links.present?
+ end
+end
diff --git a/app/exporters/chouette/kml/access_point_exporter.rb b/app/exporters/chouette/kml/access_point_exporter.rb
new file mode 100644
index 000000000..cc761f250
--- /dev/null
+++ b/app/exporters/chouette/kml/access_point_exporter.rb
@@ -0,0 +1,36 @@
+class Chouette::Kml::AccessPointExporter
+ include ERB::Util
+ attr_accessor :access_points, :directory, :template
+
+ def initialize(access_points,directory)
+ @access_points = access_points
+ @directory = directory
+ @template = File.open('app/views/api/kml/access_points/index.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "access_points"
+ end
+
+ def file_extension
+ ".kml"
+ end
+
+ def self.save( models, directory, kml_export)
+ self.new( models, directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|ACCES_POINT_COUNT", :arguments => {"0" => models.size})
+ end
+
+ def save( name = nil)
+ File.open(directory + "/" + (name || kml_name) + file_extension, "w+") do |f|
+ f.write(render)
+ end if access_points.present?
+ end
+end
+
diff --git a/app/exporters/chouette/kml/connection_link_exporter.rb b/app/exporters/chouette/kml/connection_link_exporter.rb
new file mode 100644
index 000000000..16a93e5e3
--- /dev/null
+++ b/app/exporters/chouette/kml/connection_link_exporter.rb
@@ -0,0 +1,35 @@
+class Chouette::Kml::ConnectionLinkExporter
+ include ERB::Util
+ attr_accessor :connection_links, :directory, :template
+
+ def initialize(connection_links,directory)
+ @connection_links = connection_links
+ @directory = directory
+ @template = File.open('app/views/api/kml/connection_links/index.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "connection_links"
+ end
+
+ def file_extension
+ ".kml"
+ end
+
+ def self.save( models, directory, kml_export)
+ self.new( models, directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|CONNECTION_LINK_COUNT", :arguments => {"0" => models.size})
+ end
+
+ def save( name = nil)
+ File.open(directory + "/" + (name || kml_name) + file_extension, "w+") do |f|
+ f.write(render)
+ end if connection_links.present?
+ end
+end
diff --git a/app/exporters/chouette/kml/exporter.rb b/app/exporters/chouette/kml/exporter.rb
new file mode 100644
index 000000000..5c488883c
--- /dev/null
+++ b/app/exporters/chouette/kml/exporter.rb
@@ -0,0 +1,91 @@
+class Chouette::Kml::Exporter
+
+ attr_reader :referential
+ attr_reader :kml_export
+
+ def initialize(referential, kml_export)
+ @referential = referential
+ @kml_export = kml_export
+ end
+
+ def lines(object, ids)
+ if object == "network"
+ ids.present? ? referential.networks.find( ids.split(",") ).collect(&:lines).flatten : referential.networks.collect(&:lines).flatten
+ elsif object == "company"
+ ids.present? ? referential.companies.find( ids.split(",") ).collect(&:lines).flatten : referential.companies.collect(&:lines).flatten
+ elsif object == "line"
+ ids.present? ? referential.lines.find( ids.split(",") ): referential.lines
+ else
+ referential.lines
+ end
+ end
+
+ def export(zip_file_path, options = {})
+ begin
+ referential.switch
+
+ FileUtils.rm(zip_file_path) if File.exists? zip_file_path
+
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT", :arguments => {"0" => "KML"})
+
+ Dir.mktmpdir(nil, "/tmp"){ |temp_dir|
+
+ lines_collected = lines( options[:o], options[:id] )
+ Chouette::Kml::LineExporter.save( lines_collected, temp_dir, kml_export)
+
+ routes = lines_collected.collect(&:routes).flatten.uniq
+ Chouette::Kml::RouteExporter.save( routes, temp_dir, kml_export)
+
+ journey_patterns = routes.map { |r| r.journey_patterns}.flatten
+ Chouette::Kml::JourneyPatternExporter.save( journey_patterns, temp_dir, kml_export)
+
+ stop_areas = lines_collected.collect(&:stop_areas).flatten.uniq
+ Chouette::Kml::StopAreaExporter.new( stop_areas, temp_dir ).tap do |stop_area_exporter|
+ stop_area_exporter.save( "stop_areas")
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|QUAY_AND_BOARDING_POSITION_COUNT", :arguments => {"0" => stop_areas.size})
+
+ commercial_stop_areas = lines_collected.collect(&:commercial_stop_areas).flatten.uniq
+ Chouette::Kml::StopAreaExporter.new( commercial_stop_areas, temp_dir ).tap do |stop_area_exporter|
+ stop_area_exporter.save( "commercial_stop_areas")
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|COMMERCIAL_COUNT", :arguments => {"0" => commercial_stop_areas.size})
+
+ if(options[:o].present?) # Add all objects
+ stop_places = referential.stop_areas.stop_place
+ Chouette::Kml::StopAreaExporter.new( stop_places, temp_dir ).tap do |stop_area_exporter|
+ stop_area_exporter.save( "stop_places")
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|STOP_PLACE_COUNT", :arguments => {"0" => stop_places.size})
+
+ itls = referential.stop_areas.itl
+ Chouette::Kml::StopAreaExporter.new( itls, temp_dir ).tap do |stop_area_exporter|
+ stop_area_exporter.save( "itls")
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|ITL_COUNT", :arguments => {"0" => itls.size})
+
+ connection_links = referential.connection_links
+ Chouette::Kml::ConnectionLinkExporter.save( connection_links, temp_dir, kml_export)
+
+ access_links = referential.access_links
+ Chouette::Kml::AccessLinkExporter.save(access_links, temp_dir, kml_export)
+
+ access_points = referential.access_points
+ Chouette::Kml::AccessPointExporter.save(access_points, temp_dir, kml_export)
+
+ end
+
+ ::Zip::ZipFile.open(zip_file_path, ::Zip::ZipFile::CREATE) do |zipfile|
+ Dir[File.join(temp_dir, '*.kml')].each do |f|
+ zipfile.add(File.basename(f), f)
+ end
+ end
+ }
+ ensure
+ # Always cleanup files
+ #FileUtils.remove_entry(temp_directory)
+ end
+ end
+
+end
+
diff --git a/app/exporters/chouette/kml/itl_exporter.rb b/app/exporters/chouette/kml/itl_exporter.rb
new file mode 100644
index 000000000..12b61bec8
--- /dev/null
+++ b/app/exporters/chouette/kml/itl_exporter.rb
@@ -0,0 +1,28 @@
+class Chouette::Kml::ItlExporter
+ include ERB::Util
+ attr_accessor :itls, :template
+
+ def initialize(itls)
+ @itls = itls
+ @template = File.open('app/views/api/kml/itls/index.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "itls"
+ end
+
+ def file_extension
+ ".kml"
+ end
+
+ def save(directory, name = nil)
+ File.open(directory + "/" + (name || kml_name) + file_extension, "w+") do |f|
+ f.write(render)
+ end if itls.present?
+ end
+end
+
diff --git a/app/exporters/chouette/kml/journey_pattern_exporter.rb b/app/exporters/chouette/kml/journey_pattern_exporter.rb
new file mode 100644
index 000000000..f5addc4bc
--- /dev/null
+++ b/app/exporters/chouette/kml/journey_pattern_exporter.rb
@@ -0,0 +1,33 @@
+class Chouette::Kml::JourneyPatternExporter
+ include ERB::Util
+ attr_accessor :journey_pattern, :template
+
+ def initialize(journey_pattern)
+ @journey_pattern = journey_pattern
+ @template = File.open('app/views/api/kml/journey_patterns/show.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "/line_#{journey_pattern.route.line_id}_route_#{journey_pattern.route.id}_journey_attern_#{journey_pattern.id}.kml"
+ end
+
+ def self.save( journey_patterns, directory, kml_export)
+ journey_patterns.each do |journey_pattern|
+ self.new( journey_pattern ).tap do |specific_exporter|
+ specific_exporter.save(directory)
+ end
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|JOURNEY_PATTERN_COUNT", :arguments => {"0" => journey_patterns.size})
+ end
+
+ def save(directory)
+ File.open(directory + kml_name , "w+") do |f|
+ f.write(render)
+ end if journey_pattern.present?
+ end
+end
+
diff --git a/app/exporters/chouette/kml/line_exporter.rb b/app/exporters/chouette/kml/line_exporter.rb
new file mode 100644
index 000000000..2e4eb5e47
--- /dev/null
+++ b/app/exporters/chouette/kml/line_exporter.rb
@@ -0,0 +1,34 @@
+class Chouette::Kml::LineExporter
+ include ERB::Util
+ attr_accessor :line, :directory, :template
+
+ def initialize(line,directory)
+ @line = line
+ @directory = directory
+ @template = File.open('app/views/api/kml/lines/show.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "/line_#{line.id}.kml"
+ end
+
+ def self.save( lines, directory, kml_export)
+ lines.each do |line|
+ self.new( line, directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|LINE_COUNT", :arguments => {"0" => lines.size})
+ end
+
+ def save
+ File.open(directory + kml_name , "w+") do |f|
+ f.write(render)
+ end if line.present?
+ end
+end
+
diff --git a/app/exporters/chouette/kml/route_exporter.rb b/app/exporters/chouette/kml/route_exporter.rb
new file mode 100644
index 000000000..b1a74da5a
--- /dev/null
+++ b/app/exporters/chouette/kml/route_exporter.rb
@@ -0,0 +1,35 @@
+class Chouette::Kml::RouteExporter
+ include ERB::Util
+ attr_accessor :route, :directory, :template
+
+ def initialize(route,directory)
+ @route = route
+ @directory = directory
+ @template = File.open('app/views/api/kml/routes/show.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "/line_#{route.line_id}_route_#{route.id}.kml"
+ end
+
+ def self.save( routes, directory, kml_export)
+ routes.each do |route|
+ self.new( route, directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ end
+ kml_export.log_messages.create( :severity => "ok", :key => "EXPORT|ROUTE_COUNT", :arguments => {"0" => routes.size})
+ end
+
+ def save
+ File.open(directory + kml_name , "w+") do |f|
+ f.write(render)
+ end if route.present?
+ end
+end
+
+
diff --git a/app/exporters/chouette/kml/stop_area_exporter.rb b/app/exporters/chouette/kml/stop_area_exporter.rb
new file mode 100644
index 000000000..246fc114c
--- /dev/null
+++ b/app/exporters/chouette/kml/stop_area_exporter.rb
@@ -0,0 +1,29 @@
+class Chouette::Kml::StopAreaExporter
+ include ERB::Util
+ attr_accessor :stop_areas, :directory, :template
+
+ def initialize(stop_areas,directory)
+ @stop_areas = stop_areas
+ @directory = directory
+ @template = File.open('app/views/api/kml/stop_areas/index.kml.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def kml_name
+ "stop_areas"
+ end
+
+ def file_extension
+ ".kml"
+ end
+
+ def save( name = nil)
+ File.open(directory + "/" + (name || kml_name) + file_extension, "w+") do |f|
+ f.write(render)
+ end if stop_areas.present?
+ end
+end
+
diff --git a/app/models/export.rb b/app/models/export.rb
index 413f0d51a..342e55738 100644
--- a/app/models/export.rb
+++ b/app/models/export.rb
@@ -5,7 +5,7 @@ class Export < ActiveRecord::Base
validates_inclusion_of :status, :in => %w{ pending completed failed }
- has_many :log_messages, :class_name => "ExportLogMessage", :order => :position, :dependent => :destroy
+ has_many :log_messages, :class_name => "ExportLogMessage", :order => :position, :dependent => :delete_all
serialize :options
@@ -69,10 +69,13 @@ class Export < ActiveRecord::Base
end
def export
+ result_severity = "ok"
FileUtils.mkdir_p root
begin
- log_messages.create :key => :started
+ # delayed job may repeat call
+ ExportLogMessage.where(:export_id => self.id).delete_all
+ log_messages.create :severity => "ok", :key => :started
exporter.export file, export_options
@@ -80,9 +83,10 @@ class Export < ActiveRecord::Base
rescue => e
Rails.logger.error "Export #{id} failed : #{e}, #{e.backtrace}"
update_attribute :status, "failed"
+ result_severity = "error"
end
- log_messages.create :key => status
+ log_messages.create :severity => result_severity, :key => status
end
@@references_types = [ Chouette::Line, Chouette::Network, Chouette::Company ]
@@ -137,10 +141,13 @@ class Export < ActiveRecord::Base
end
def self.format_name(format)
- name_by_format = { "NeptuneExport" => "Neptune",
- "CsvExport" => "CSV",
- "GtfsExport" => "GTFS",
- "NetexExport" => "NeTEx"}
+ name_by_format = {
+ "NeptuneExport" => "Neptune",
+ "CsvExport" => "CSV",
+ "GtfsExport" => "GTFS",
+ "NetexExport" => "NeTEx",
+ "KmlExport" => "KML"
+ }
name_by_format[format]
end
@@ -149,7 +156,7 @@ class Export < ActiveRecord::Base
subclasses.map(&:to_s)
else
# FIXME
- %w{NeptuneExport CsvExport GtfsExport NetexExport}
+ %w{NeptuneExport CsvExport GtfsExport NetexExport KmlExport}
end
end
diff --git a/app/models/import.rb b/app/models/import.rb
index bd795d6ce..34736eb90 100644
--- a/app/models/import.rb
+++ b/app/models/import.rb
@@ -9,7 +9,7 @@ class Import < ActiveRecord::Base
attr_accessor :resources
attr_accessor :loader
- has_many :log_messages, :class_name => "ImportLogMessage", :order => :position, :dependent => :destroy
+ has_many :log_messages, :class_name => "ImportLogMessage", :order => :position, :dependent => :delete_all
serialize :options
diff --git a/app/models/kml_export.rb b/app/models/kml_export.rb
new file mode 100644
index 000000000..c450bd297
--- /dev/null
+++ b/app/models/kml_export.rb
@@ -0,0 +1,11 @@
+class KmlExport < Export
+
+ def export_options
+ super.merge(:format => :kml)
+ end
+
+ def exporter
+ exporter ||= ::Chouette::Kml::Exporter.new(referential, self)
+ end
+
+end
diff --git a/app/views/api/kml/access_links/index.kml.erb b/app/views/api/kml/access_links/index.kml.erb
new file mode 100644
index 000000000..5de679beb
--- /dev/null
+++ b/app/views/api/kml/access_links/index.kml.erb
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <name>liens acces arrets</name>
+ <% @access_links.each do |access_link| %>
+ <Placemark id="<%= access_link.objectid %>" >
+ <name><%= h(access_link.name) %></name>
+ <ExtendedData>
+ <% [ :access_link_type, :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :link_distance, :link_type, :default_duration, :frequent_traveller_duration, :occasional_traveller_duration, :mobility_restricted_traveller_duration, :mobility_restricted_suitability, :stairs_availability, :lift_availability, :int_user_needs, :link_orientation].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(access_link.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <Data name="access_point_objectid">
+ <value><%= h(access_link.access_point.object_id) %></value>
+ </Data>
+ <Data name="stop_area_objectid">
+ <value><%= h(access_link.stop_area.object_id) %></value>
+ </Data>
+ </ExtendedData>
+ <%= access_link.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/access_points/index.kml.erb b/app/views/api/kml/access_points/index.kml.erb
new file mode 100644
index 000000000..2a78d9a03
--- /dev/null
+++ b/app/views/api/kml/access_points/index.kml.erb
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <name>access</name>
+ <% @access_points.each do |access_point| %>
+ <Placemark id="<%= access_point.objectid %>" >
+ <name><%= h(access_point.name) %></name>
+ <ExtendedData>
+ <% [ :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :longitude, :latitude, :long_lat_type, :country_code, :street_name, :openning_time, :closing_time, :access_type, :access_point_type, :mobility_restricted_suitability, :stairs_availability, :lift_availability].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(access_point.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <Data name="stop_area_objectid">
+ <value><%= h(access_point.stop_area.object_id) %></value>
+ </Data>
+ </ExtendedData>
+ <%= access_point.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/connection_links/index.kml.erb b/app/views/api/kml/connection_links/index.kml.erb
new file mode 100644
index 000000000..8c35dcc95
--- /dev/null
+++ b/app/views/api/kml/connection_links/index.kml.erb
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <name>correspondances</name>
+ <% @connection_links.each do |connection_link| %>
+ <Placemark id="<%= connection_link.objectid %>" >
+ <name><%= h(connection_link.name) %></name>
+ <ExtendedData>
+ <% [ :connection_link_type, :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :link_distance, :link_type, :default_duration, :frequent_traveller_duration, :occasional_traveller_duration, :mobility_restricted_traveller_duration, :mobility_restricted_suitability, :stairs_availability, :lift_availability, :int_user_needs].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(connection_link.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <Data name="departure_objectid">
+ <value><%= h(connection_link.departure.object_id) %></value>
+ </Data>
+ <Data name="arrival_objectid">
+ <value><%= h(connection_link.arrival.object_id) %></value>
+ </Data>
+ </ExtendedData>
+ <%= connection_link.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/journey_patterns/show.kml.erb b/app/views/api/kml/journey_patterns/show.kml.erb
new file mode 100644
index 000000000..cbce3627a
--- /dev/null
+++ b/app/views/api/kml/journey_patterns/show.kml.erb
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<kml xmlns="http://www.opengis.net/kml/2.2">
+ <Document>
+ <name><%= h(@journey_pattern.name) %></name>
+ <ExtendedData>
+ <% [:objectid, :object_version, :creation_time, :creator_id, :name, :comment, :registration_number, :published_name].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(@journey_pattern.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <Data name="route_objectid">
+ <value><%= h(@journey_pattern.route.object_id) %></value>
+ </Data>
+ </ExtendedData>
+ <% @journey_pattern.route.stop_points.each_with_index do |stop_point, index| %>
+ <% stop_area = stop_point.stop_area %>
+ <% if stop_area.geometry %>
+ <Placemark id="<%= stop_area.objectid %>" >
+ <name><%= h(stop_area.name) %></name>
+ <ExtendedData>
+ <% [ :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :area_type, :registration_number, :nearest_topic_name, :fare_code, :longitude, :latitude, :long_lat_type, :country_code, :street_name, :mobility_restricted_suitability, :stairs_availability, :lift_availability, :int_user_needs].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(stop_area.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <% if stop_area.parent %>
+ <Data name="parent_objectid">
+ <value><%= h(stop_area.parent.object_id) %></value>
+ </Data>
+ <% end %>
+ <Data name="stop">
+ <value><%= @journey_pattern.stop_points.include?( stop_point) ? "true" : "false" %></value>
+ </Data>
+ </ExtendedData>
+
+ <%= stop_area.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
+ <% end %>
+ </Document>
+</kml>
+
diff --git a/app/views/api/kml/lines/index.kml.erb b/app/views/api/kml/lines/index.kml.erb
deleted file mode 100644
index 2df104296..000000000
--- a/app/views/api/kml/lines/index.kml.erb
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<kml xmlns="http://www.opengis.net/kml/2.2">
- <Document>
- <% @lines.each do |line| %>
- <Placemark id="<%= line.objectid %>:StopAreas" >
- <%= line.geometry_presenter.stop_areas_geometry.kml_representation.html_safe %>
- </Placemark>
- <Placemark id="<%= line.objectid %>" >
- <objectid><%= line.objectid %></objectid>
- <object_version><%= line.object_version %></object_version>
- <creation_time><%= line.creation_time %></creation_time>
- <creator_id><%= line.creator_id %></creator_id>
- <name><%= line.name %></name>
- <number><%= line.number %></number>
- <published_name><%= line.published_name %></published_name>
- <transport_mode_name><%= line.transport_mode_name %></transport_mode_name>
- <registration_number><%= line.registration_number %></registration_number>
- <comment><%= line.comment %></comment>
- <mobility_restricted_suitability><%= line.mobility_restricted_suitability %></mobility_restricted_suitability>
- <int_user_needs><%= line.int_user_needs %></int_user_needs>
-
- <%= line.geometry_presenter.geometry.kml_representation.html_safe %>
- </Placemark>
- <% end %>
- </Document>
-</kml>
-
diff --git a/app/views/api/kml/lines/show.kml.erb b/app/views/api/kml/lines/show.kml.erb
index 936801266..b29a5b75c 100644
--- a/app/views/api/kml/lines/show.kml.erb
+++ b/app/views/api/kml/lines/show.kml.erb
@@ -1,27 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
- <% @line.commercial_stop_areas.each do |stop_area| %>
- <Placemark id="<%= stop_area.objectid %>" >
- <name><%= stop_area.name %></name>
- <stop_area_type><%= stop_area.area_type.underscore %></stop_area_type>
- <%= (stop_area.position or stop_area.default_position).kml_representation.html_safe %>
- </Placemark>
- <% end %>
+ <name><%= h(@line.name) %></name>
<Placemark id="<%= @line.objectid %>" >
- <objectid><%= @line.objectid %></objectid>
- <object_version><%= @line.object_version %></object_version>
- <creation_time><%= @line.creation_time %></creation_time>
- <creator_id><%= @line.creator_id %></creator_id>
- <name><%= @line.name %></name>
- <number><%= @line.number %></number>
- <published_name><%= @line.published_name %></published_name>
- <transport_mode_name><%= @line.transport_mode_name %></transport_mode_name>
- <registration_number><%= @line.registration_number %></registration_number>
- <comment><%= @line.comment %></comment>
- <mobility_restricted_suitability><%= @line.mobility_restricted_suitability %></mobility_restricted_suitability>
- <int_user_needs><%= @line.int_user_needs %></int_user_needs>
-
+ <name><%= h(@line.name) %></name>
+ <ExtendedData>
+ <% [ :transport_mode, :objectid, :object_version, :creation_time, :creator_id, :name, :number, :published_name, :registration_number, :comment, :mobility_restricted_suitability, :int_user_needs].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(@line.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <Data name="company_objectid">
+ <value><%= h(@line.company.object_id) %></value>
+ </Data>
+ <Data name="network_objectid">
+ <value><%= h(@line.network.object_id) %></value>
+ </Data>
+ </ExtendedData>
<%= @line.geometry_presenter.geometry.kml_representation.html_safe %>
</Placemark>
</Document>
diff --git a/app/views/api/kml/routes/index.kml.erb b/app/views/api/kml/routes/index.kml.erb
deleted file mode 100644
index a1521f254..000000000
--- a/app/views/api/kml/routes/index.kml.erb
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<kml xmlns="http://www.opengis.net/kml/2.2">
- <Document>
- <% @routes.each do |route| %>
- <Placemark id="<%= route.objectid %>:StopAreas" >
- <%= route.geometry_presenter.stop_areas_geometry.kml_representation.html_safe %>
- </Placemark>
- <Placemark id="<%= route.objectid %>" >
- <objectid><%= route.objectid %></objectid>
- <object_version><%= route.object_version %></object_version>
- <creation_time><%= route.creation_time %></creation_time>
- <creator_id><%= route.creator_id %></creator_id>
- <name><%= route.name %></name>
- <direction_code><%= route.direction_code %></direction_code>
- <comment><%= route.comment %></comment>
- <published_name><%= route.published_name %></published_name>
- <number><%= route.number %></number>
- <direction><%= route.direction %></direction>
- <wayback><%= route.wayback %></wayback>
- <%= route.geometry_presenter.geometry.kml_representation.html_safe %>
- </Placemark>
- <% end %>
- </Document>
-</kml>
-
diff --git a/app/views/api/kml/routes/show.kml.erb b/app/views/api/kml/routes/show.kml.erb
index 0b9bf7629..2f7031854 100644
--- a/app/views/api/kml/routes/show.kml.erb
+++ b/app/views/api/kml/routes/show.kml.erb
@@ -1,25 +1,18 @@
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
- <% @route.stop_areas.each do |stop_area| %>
- <Placemark id="<%= stop_area.objectid %>" >
- <name><%= stop_area.name %></name>
- <stop_area_type><%= stop_area.area_type.underscore %></stop_area_type>
- <%= (stop_area.position or stop_area.default_position).kml_representation.html_safe %>
- </Placemark>
- <% end %>
<Placemark id="<%= @route.objectid %>" >
- <objectid><%= @route.objectid %></objectid>
- <object_version><%= @route.object_version %></object_version>
- <creation_time><%= @route.creation_time %></creation_time>
- <creator_id><%= @route.creator_id %></creator_id>
- <name><%= @route.name %></name>
- <direction_code><%= @route.direction_code %></direction_code>
- <comment><%= @route.comment %></comment>
- <published_name><%= @route.published_name %></published_name>
- <number><%= @route.number %></number>
- <direction><%= @route.direction %></direction>
- <wayback><%= @route.wayback %></wayback>
+ <name><%= h(@route.name) %></name>
+ <ExtendedData>
+ <% [:direction_code, :wayback_code, :objectid, :object_version, :creation_time, :creator_id, :name, :comment, :published_name, :number, :direction, :wayback].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(@route.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <Data name="line_objectid">
+ <value><%= h(@route.line.object_id) %></value>
+ </Data>
+ </ExtendedData>
<%= @route.geometry_presenter.geometry.kml_representation.html_safe %>
</Placemark>
</Document>
diff --git a/app/views/api/kml/stop_areas/_stop_area.kml.erb b/app/views/api/kml/stop_areas/_stop_area.kml.erb
deleted file mode 100644
index 401bff052..000000000
--- a/app/views/api/kml/stop_areas/_stop_area.kml.erb
+++ /dev/null
@@ -1,21 +0,0 @@
- <objectid><%= stop_area.objectid.to_s.html_safe %></objectid>
- <object_version><%= stop_area.object_version.to_s.html_safe %></object_version>
- <creation_time><%= stop_area.creation_time.to_s.html_safe %></creation_time>
- <creator_id><%= stop_area.creator_id.to_s.html_safe %></creator_id>
- <name><%= stop_area.name.to_s.html_safe %></name>
- <comment><%= stop_area.comment.to_s.html_safe %></comment>
- <area_type><%= stop_area.area_type.to_s.html_safe %></area_type>
- <registration_number><%= stop_area.registration_number.to_s.html_safe %></registration_number>
- <nearest_topic_name><%= stop_area.nearest_topic_name.to_s.html_safe %></nearest_topic_name>
- <fare_code><%= stop_area.fare_code.to_s.html_safe %></fare_code>
- <longitude><%= stop_area.longitude.to_s.html_safe %></longitude>
- <latitude><%= stop_area.latitude.to_s.html_safe %></latitude>
- <long_lat_type><%= stop_area.long_lat_type.to_s.html_safe %></long_lat_type>
- <x><%= stop_area.projection_x.to_s.html_safe %></x>
- <y><%= stop_area.projection_y.to_s.html_safe %></y>
- <projection_type><%= stop_area.projection.to_s.html_safe %></projection_type>
- <country_code><%= stop_area.country_code.to_s.html_safe %></country_code>
- <street_name><%= stop_area.street_name.to_s.html_safe %></street_name>
-
- <%= stop_area.geometry_presenter.geometry.kml_representation.html_safe %>
-
diff --git a/app/views/api/kml/stop_areas/index.kml.erb b/app/views/api/kml/stop_areas/index.kml.erb
index 635921f03..ed3642890 100644
--- a/app/views/api/kml/stop_areas/index.kml.erb
+++ b/app/views/api/kml/stop_areas/index.kml.erb
@@ -1,12 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
-
<Document>
- <% @stop_areas.each do |stop_area| %>
- <Placemark id="<%= stop_area.objectid %>" >
- <%= render :partial => "stop_area", :locals => { :stop_area => stop_area} %>
- </Placemark>
- <% end %>
+ <% @stop_areas.select { |sa| sa.latitude && sa.longitude}.each do |stop_area| %>
+ <Placemark id="<%= stop_area.objectid %>" >
+ <name><%= h(stop_area.name) %></name>
+ <ExtendedData>
+ <% [:objectid, :object_version, :creation_time, :creator_id, :name, :comment, :area_type, :registration_number, :nearest_topic_name, :fare_code, :longitude, :latitude, :long_lat_type, :country_code, :street_name, :mobility_restricted_suitability, :stairs_availability, :lift_availability, :int_user_needs].each do |prop| %>
+ <Data name="<%= prop.to_s %>">
+ <value><%= h(stop_area.send( prop)) %></value>
+ </Data>
+ <% end %>
+ <% if stop_area.parent %>
+ <Data name="parent_objectid">
+ <value><%= h(stop_area.parent.object_id) %></value>
+ </Data>
+ <% end %>
+ </ExtendedData>
+
+ <%= stop_area.geometry_presenter.geometry.kml_representation.html_safe %>
+ </Placemark>
+ <% end %>
</Document>
</kml>
diff --git a/app/views/exports/new.html.erb b/app/views/exports/new.html.erb
index e0e37fb34..60c1cff48 100644
--- a/app/views/exports/new.html.erb
+++ b/app/views/exports/new.html.erb
@@ -2,7 +2,7 @@
<%= semantic_form_for([@referential, @export], :as => :export, :url => new_referential_export_path(@referential), :method => :get) do |form| %>
<%= form.inputs do %>
- <%= form.input :type, :as => :select, :collection => Export.types.map { |format| [ Export.format_name(format), format]}, :required => true, :include_blank => false %>
+ <%= form.input :type, :as => :radio, :collection => Export.types.map { |format| [ Export.format_name(format), format]}, :required => true, :include_blank => false %>
<% end %>
<% end %>
diff --git a/config/locales/exports.yml b/config/locales/exports.yml
index aaa2a1b7c..27049c0f2 100644
--- a/config/locales/exports.yml
+++ b/config/locales/exports.yml
@@ -23,7 +23,17 @@ en:
completed: "Completed export"
failed: "Failed export"
undefined: "%{key} undefined"
- EXPORT: %{0} Export
+ LINE_COUNT: "Exported line count : %{0}"
+ ROUTE_COUNT: "Route count : %{0}"
+ JOURNEY_PATTERN_COUNT: "Journey pattern count : %{0}"
+ QUAY_AND_BOARDING_POSITION_COUNT: "Quays and Boarding positions count : %{0}"
+ COMMERCIAL_COUNT: "Commercial stop points count : %{0}"
+ STOP_PLACE_COUNT: "Stop places count : %{0}"
+ ITL_COUNT: "ITL count : %{0}"
+ CONNECTION_LINK_COUNT: "Connection link count : %{0}"
+ ACCES_LINK_COUNT: "Access Link count : %{0}"
+ ACCES_POINT_COUNT: "Access Point count : %{0}"
+ EXPORT: "%{0} Export"
EXPORTED_LINE: "Line %{0} (%{1}) exported"
EMPTY_LINE: "Line without valid vehicle journey : not exported"
EXPORT_ERROR: "Error durring export"
@@ -120,6 +130,16 @@ fr:
completed: "Export achevé avec succès"
failed: "Export interrompu"
undefined: "%{key} non défini"
+ LINE_COUNT: "Nombre de lignes exportées : %{0}"
+ ROUTE_COUNT: "Nombre de séquences d'arrêts exportées : %{0}"
+ QUAY_AND_BOARDING_POSITION_COUNT: "Nombre d'arrêts physiques exportés : %{0}"
+ COMMERCIAL_COUNT: "Nombre d'arrêts commerciaux exportés : %{0}"
+ STOP_PLACE_COUNT: "Nombres de pôles d'échange exportés : %{0}"
+ ITL_COUNT: "Nombre d'ITL exportées : %{0}"
+ JOURNEY_PATTERN_COUNT: "Nombre de missions exportées : %{0}"
+ CONNECTION_LINK_COUNT: "Nombre de correspondances exportées : %{0}"
+ ACCES_LINK_COUNT: "Nombre de liaison d'accès exportées : %{0}"
+ ACCES_POINT_COUNT: "Nombre de points d'accès exportés : %{0}"
EXPORT: "Export %{0}"
EXPORTED_LINE: "Ligne %{0} (%{1}) exportée"
EMPTY_LINE: "Ligne sans course valide : non exportée"
@@ -191,4 +211,4 @@ fr:
hints:
time_zone: "selon le codage TZ (http://fr.wikipedia.org/wiki/Tz_database)"
start_date: "limite l'export aux courses circulant à partir de cette date"
- end_date: "limite l'export aux courses circulant jusqu'à cette date" \ No newline at end of file
+ end_date: "limite l'export aux courses circulant jusqu'à cette date"
diff --git a/db/schema.rb b/db/schema.rb
index f6e27009d..a60776988 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -204,6 +204,16 @@ ActiveRecord::Schema.define(:version => 20130710123351) do
t.integer "organisation_id", :limit => 8
end
+ create_table "geometry_columns", :id => false, :force => true do |t|
+ t.string "f_table_catalog", :limit => 256, :null => false
+ t.string "f_table_schema", :limit => 256, :null => false
+ t.string "f_table_name", :limit => 256, :null => false
+ t.string "f_geometry_column", :limit => 256, :null => false
+ t.integer "coord_dimension", :null => false
+ t.integer "srid", :null => false
+ t.string "type", :limit => 30, :null => false
+ end
+
create_table "group_of_lines", :force => true do |t|
t.string "objectid", :null => false
t.integer "object_version"
@@ -360,6 +370,14 @@ ActiveRecord::Schema.define(:version => 20130710123351) do
t.integer "line_id", :limit => 8
end
+ create_table "spatial_ref_sys", :id => false, :force => true do |t|
+ t.integer "srid", :null => false
+ t.string "auth_name", :limit => 256
+ t.integer "auth_srid"
+ t.string "srtext", :limit => 2048
+ t.string "proj4text", :limit => 2048
+ end
+
create_table "stop_areas", :force => true do |t|
t.integer "parent_id", :limit => 8
t.string "objectid", :null => false
diff --git a/spec/exporters/chouette/kml/exporter_spec.rb b/spec/exporters/chouette/kml/exporter_spec.rb
new file mode 100644
index 000000000..dd7c44327
--- /dev/null
+++ b/spec/exporters/chouette/kml/exporter_spec.rb
@@ -0,0 +1,55 @@
+require 'spec_helper'
+
+describe Chouette::Kml::Exporter do
+
+ # let(:referential) { Factory(:referential) }
+ # subject { Chouette::Kml::Exporter.new(referential) }
+
+ # let(:zip_file_path) { "#{Rails.root}/tmp/exports/test.zip" }
+ # let(:line) {
+ # referential.switch
+ # Factory(:line_with_stop_areas_having_parent) }
+
+ let(:kml_export){ Factory(:kml_export)}
+ subject { Chouette::Kml::Exporter.new(first_referential, kml_export) }
+
+ let(:tmp_path) { File.join( Rails.root, "tmp")}
+ let(:exports_path) { File.join( tmp_path, "exports")}
+ let(:zip_file_path) { File.join( exports_path, "test.zip")}
+ let!(:line) { Factory(:line_with_stop_areas_having_parent) }
+ let!(:line2) { Factory(:line_with_stop_areas_having_parent) }
+
+ describe "#export" do
+ before(:each) do
+ Dir.mkdir( tmp_path) unless File.directory?( tmp_path)
+ Dir.mkdir( exports_path) unless File.directory?( exports_path)
+ end
+
+ it "should return a zip file with nothing inside with no objects in arguments" do
+ subject.export(zip_file_path, {:export_id => 1, :o => "line"} )
+ File.exists?(zip_file_path).should be_true
+ ::Zip::ZipFile.open(zip_file_path).size.should == 6
+ end
+
+ it "should return a zip file with 4 kml files" do
+ subject.export(zip_file_path, {:export_id => 1, :o => "line", :id => "#{line.id}" } )
+ File.exists?(zip_file_path).should be_true
+ ::Zip::ZipFile.open(zip_file_path).size.should == 4
+ end
+
+ it "should return a zip file with 6 kml files" do
+ subject.export(zip_file_path, {:export_id => 1, :o => "line", :id => "#{line.id},#{line2.id}" } )
+ File.exists?(zip_file_path).should be_true
+ ::Zip::ZipFile.open(zip_file_path).size.should == 6
+ end
+
+ it "should return a zip file with 6 kml files" do
+ subject.export(zip_file_path, {:export_id => 1, :o => "", :id => "" } )
+ File.exists?(zip_file_path).should be_true
+ ::Zip::ZipFile.open(zip_file_path).size.should == 6
+ end
+
+ end
+
+
+end
diff --git a/spec/factories.rb b/spec/factories.rb
index 7ae087de0..681400443 100644
--- a/spec/factories.rb
+++ b/spec/factories.rb
@@ -31,6 +31,10 @@ FactoryGirl.define do
f.sequence(:key) { "key_#{n}" }
end
+ factory :kml_export do |f|
+ f.referential { Referential.find_by_slug("first") }
+ end
+
factory :export do |f|
f.referential { Referential.find_by_slug("first") }
end
diff --git a/spec/models/export_spec.rb b/spec/models/export_spec.rb
index 4d5556998..fb83236b0 100644
--- a/spec/models/export_spec.rb
+++ b/spec/models/export_spec.rb
@@ -46,7 +46,7 @@ describe Export do
describe ".types" do
it "should return available Export implementations" do
- Export.types.should =~ %w{NeptuneExport CsvExport GtfsExport NetexExport}
+ Export.types.should =~ %w{NeptuneExport CsvExport GtfsExport NetexExport KmlExport}
end
end