aboutsummaryrefslogtreecommitdiffstats
path: root/app/exporters
diff options
context:
space:
mode:
authorZakaria BOUZIANE2014-10-22 10:21:42 +0200
committerZakaria BOUZIANE2014-10-22 10:21:42 +0200
commitd89660fda67b2864330805cbd40b64e7b598c6e5 (patch)
tree892815bd4b12b60c5510246b5ef3f67febea975b /app/exporters
parent1b58515640be1140fc3dde5fa00d0f32ee3b391a (diff)
downloadchouette-core-d89660fda67b2864330805cbd40b64e7b598c6e5.tar.bz2
HUB Export: Id mapping and CR LF addition
Diffstat (limited to 'app/exporters')
-rw-r--r--app/exporters/chouette/hub/city_code_exporter.rb35
-rw-r--r--app/exporters/chouette/hub/commercial_stop_area_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/company_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/connection_link_exporter.rb13
-rw-r--r--app/exporters/chouette/hub/direction_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/exporter.rb58
-rw-r--r--app/exporters/chouette/hub/group_of_lines_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/journey_pattern_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/line_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/network_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/physical_stop_area_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/route_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/time_table_exporter.rb11
-rw-r--r--app/exporters/chouette/hub/transport_mode_exporter.rb35
-rw-r--r--app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb4
-rw-r--r--app/exporters/chouette/hub/vehicle_journey_exporter.rb6
-rw-r--r--app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb2
17 files changed, 148 insertions, 34 deletions
diff --git a/app/exporters/chouette/hub/city_code_exporter.rb b/app/exporters/chouette/hub/city_code_exporter.rb
new file mode 100644
index 000000000..7198f0de2
--- /dev/null
+++ b/app/exporters/chouette/hub/city_code_exporter.rb
@@ -0,0 +1,35 @@
+class Chouette::Hub::CityCodeExporter
+ include ERB::Util
+ attr_accessor :city_code, :city_name, :directory, :template
+
+ def initialize(city_code, city_name, directory)
+ @city_code = city_code
+ @city_name = city_name
+ @directory = directory
+ @template = File.open('app/views/api/hub/communes.hub.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def hub_name
+ "/COMMUNE.TXT"
+ end
+
+ def self.save( city_codes, directory, hub_export)
+ city_codes.keys.sort.each do |key|
+ self.new( key, city_codes[key], directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ end
+ hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|COMMUNE_COUNT", :arguments => {"0" => city_codes.keys.size})
+ end
+
+ def save
+ File.open(directory + hub_name , "a") do |f|
+ f.write("COMMUNE\u000D\u000A") if f.size == 0
+ f.write(render)
+ end
+ end
+end
diff --git a/app/exporters/chouette/hub/commercial_stop_area_exporter.rb b/app/exporters/chouette/hub/commercial_stop_area_exporter.rb
index 2c7828d59..bd1ee27cf 100644
--- a/app/exporters/chouette/hub/commercial_stop_area_exporter.rb
+++ b/app/exporters/chouette/hub/commercial_stop_area_exporter.rb
@@ -28,7 +28,7 @@ class Chouette::Hub::CommercialStopAreaExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("ARRET\n") if f.size == 0
+ f.write("ARRET\u000D\u000A") if f.size == 0
f.write(render)
end if stop_area.present?
end
diff --git a/app/exporters/chouette/hub/company_exporter.rb b/app/exporters/chouette/hub/company_exporter.rb
index 824e857f2..830e5bf96 100644
--- a/app/exporters/chouette/hub/company_exporter.rb
+++ b/app/exporters/chouette/hub/company_exporter.rb
@@ -27,7 +27,7 @@ class Chouette::Hub::CompanyExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("TRANSPORTEUR\n") if f.size == 0
+ f.write("TRANSPORTEUR\u000D\u000A") if f.size == 0
f.write(render)
end if company.present?
end
diff --git a/app/exporters/chouette/hub/connection_link_exporter.rb b/app/exporters/chouette/hub/connection_link_exporter.rb
index e70c773b9..fec8838a9 100644
--- a/app/exporters/chouette/hub/connection_link_exporter.rb
+++ b/app/exporters/chouette/hub/connection_link_exporter.rb
@@ -2,9 +2,10 @@ class Chouette::Hub::ConnectionLinkExporter
include ERB::Util
attr_accessor :connection_link, :directory, :template
- def initialize(connection_link, directory)
+ def initialize(connection_link, directory, count)
@connection_link = connection_link
@directory = directory
+ @count = count
@template = File.open('app/views/api/hub/correspondances.hub.erb' ){ |f| f.read }
@departure = Chouette::StopArea.find(@connection_link.departure_id) if @connection_link.departure_id
@arrival = Chouette::StopArea.find(@connection_link.arrival_id) if @connection_link.arrival_id
@@ -19,9 +20,11 @@ class Chouette::Hub::ConnectionLinkExporter
end
def self.save( connection_links, directory, hub_export)
+ count = 1
connection_links.each do |connection_link|
- self.new( connection_link, directory).tap do |specific_exporter|
+ self.new( connection_link, directory, count).tap do |specific_exporter|
specific_exporter.save
+ count += 1
end
end
hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|CONNECTION_LINK_COUNT", :arguments => {"0" => connection_links.size})
@@ -29,9 +32,9 @@ class Chouette::Hub::ConnectionLinkExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("CORRESPONDANCE\n") if f.size == 0
- f.write(render)
- end if connection_link.present?
+ f.write("CORRESPONDANCE\u000D\u000A") if f.size == 0
+ f.write(render) if (connection_link.present? && connection_link.link_distance.present?)
+ end
end
end
diff --git a/app/exporters/chouette/hub/direction_exporter.rb b/app/exporters/chouette/hub/direction_exporter.rb
index 27f89b4a1..a3f04d141 100644
--- a/app/exporters/chouette/hub/direction_exporter.rb
+++ b/app/exporters/chouette/hub/direction_exporter.rb
@@ -31,7 +31,7 @@ class Chouette::Hub::DirectionExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("DIRECTION\n") if f.size == 0
+ f.write("DIRECTION\u000D\u000A") if f.size == 0
f.write(render)
end if journey_pattern.present?
end
diff --git a/app/exporters/chouette/hub/exporter.rb b/app/exporters/chouette/hub/exporter.rb
index 8b9bc226e..58454a0cb 100644
--- a/app/exporters/chouette/hub/exporter.rb
+++ b/app/exporters/chouette/hub/exporter.rb
@@ -82,33 +82,40 @@ class Chouette::Hub::Exporter
@lines = select_lines( options[:o], options[:id] )
- #@routes = @lines.map(&:routes).flatten.sort {|a,b| (a.name && b.name) ? a.name <=> b.name : a.id <=> b.id} if lines_exportable?
@routes = []
if @lines
- @lines.each { |line| @routes << Chouette::Route.where( "line_id = ?", line.id ) }
+ @lines.each { |line| @routes << Chouette::Route.where( "line_id = ?", line.id ).order(:wayback) }
end
- #@routes = @routes.flatten
-
- #@journey_patterns = Chouette::JourneyPattern.where(:route_id => @routes.map(&:id)).order(:objectid) if routes_exportable?
+
@journey_patterns = []
if @routes
@routes.each { |subroutes| @journey_patterns << Chouette::JourneyPattern.where( :route_id => subroutes.map(&:id) ).order(:objectid) }
end
@journey_patterns = @journey_patterns.flatten
-
+
@routes = @routes.flatten
@vehicle_journeys = Chouette::VehicleJourney.where(:route_id => @routes.map(&:id)).order(:objectid) if routes_exportable?
-
+
+ rts = []
+ jps = []
vjs = []
tts = []
@vehicle_journeys.each do |vj|
unless (vj.time_tables & @time_tables).empty?
vjs << vj
tts << (vj.time_tables & @time_tables)
+ rts << vj.route_id
+ jps << vj.journey_pattern_id
end
end
@time_tables = tts.flatten.uniq
@vehicle_journeys = vjs.uniq
+ rts = rts.flatten.uniq
+ jps = jps.flatten.uniq
+
+ @routes.delete_if {|r| !(rts.include?(r.id)) }
+ @journey_patterns.delete_if {|jp| !(jps.include?(jp.id)) }
+
vehicle_journey_at_stops = Chouette::VehicleJourneyAtStop.where( :vehicle_journey_id => @vehicle_journeys.map(&:id) ) #.order(:id) if vehicle_journeys_exportable?
@@ -135,10 +142,19 @@ class Chouette::Hub::Exporter
log_overflow_warning(Chouette::VehicleJourney)
end
- stop_points = Chouette::StopPoint.where( :id => vehicle_journey_at_stops.map(&:stop_point_id)).order(:id)
- physical_stop_areas = Chouette::StopArea.where( :id => stop_points.map(&:stop_area_id)).order(:parent_id)
+ stop_points = Chouette::StopPoint.where( :id => vehicle_journey_at_stops.map(&:stop_point_id)) #.order(:id)
+ physical_stop_areas = Chouette::StopArea.where( :id => stop_points.map(&:stop_area_id)) #.order(:parent_id)
commercial_stop_areas = Chouette::StopArea.where( :id => physical_stop_areas.map(&:parent_id)).order(:objectid)
+ physical_stop_areas = []
+ commercial_stop_areas.each { |commercial_stop_area| physical_stop_areas << Chouette::StopArea.where( :parent_id => [commercial_stop_area.id] ).order(:objectid) }
+ physical_stop_areas = physical_stop_areas.flatten
+
+ city_codes = Hash.new
+ commercial_stop_areas.each { |commercial_stop_area| city_codes[commercial_stop_area.zip_code] = commercial_stop_area.city_name if commercial_stop_area.zip_code }
+ physical_stop_areas.each { |physical_stop_area| city_codes[physical_stop_area.zip_code] = physical_stop_area.city_name if physical_stop_area.zip_code }
+
+ Chouette::Hub::CityCodeExporter.save(city_codes, temp_dir, hub_export)
Chouette::Hub::CommercialStopAreaExporter.save(commercial_stop_areas, temp_dir, hub_export)
Chouette::Hub::PhysicalStopAreaExporter.save(physical_stop_areas, temp_dir, hub_export)
@@ -146,10 +162,32 @@ class Chouette::Hub::Exporter
Chouette::Hub::ConnectionLinkExporter.save(connection_links, temp_dir, hub_export)
+
if lines_exportable?
Chouette::Hub::LineExporter.save(@lines, temp_dir, hub_export)
+
+ transport_modes = Hash.new
+ @lines.each do |l|
+ if l.transport_mode_name
+ case l.transport_mode_name
+ when "Coach"
+ if transport_modes["CAR"]
+ transport_modes["CAR"] += "|"+l.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2')
+ else
+ transport_modes["CAR"] = l.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2')
+ end
+ when "Bus"
+ if transport_modes["BUS"]
+ transport_modes["BUS"] += "|"+l.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2')
+ else
+ transport_modes["BUS"] = l.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2')
+ end
+ end
+ end
+ end
+ Chouette::Hub::TransportModeExporter.save(transport_modes, temp_dir, hub_export)
networks = Chouette::Network.where( :id => @lines.map(&:network_id))
- companies = Chouette::Network.where( :id => @lines.map(&:company_id))
+ companies = Chouette::Company.where( :id => @lines.map(&:company_id))
groups_of_lines = []
@lines.each { |l| groups_of_lines << l.group_of_lines }
groups_of_lines = groups_of_lines.flatten.uniq
diff --git a/app/exporters/chouette/hub/group_of_lines_exporter.rb b/app/exporters/chouette/hub/group_of_lines_exporter.rb
index 129913c8b..8113bfd60 100644
--- a/app/exporters/chouette/hub/group_of_lines_exporter.rb
+++ b/app/exporters/chouette/hub/group_of_lines_exporter.rb
@@ -27,7 +27,7 @@ class Chouette::Hub::GroupOfLinesExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("GROUPELIGNE\n") if f.size == 0
+ f.write("GROUPELIGNE\u000D\u000A") if f.size == 0
f.write(render)
end if group_of_lines.present?
end
diff --git a/app/exporters/chouette/hub/journey_pattern_exporter.rb b/app/exporters/chouette/hub/journey_pattern_exporter.rb
index 27333d90e..af7e27eef 100644
--- a/app/exporters/chouette/hub/journey_pattern_exporter.rb
+++ b/app/exporters/chouette/hub/journey_pattern_exporter.rb
@@ -41,7 +41,7 @@ class Chouette::Hub::JourneyPatternExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("CHEMIN\n") if f.size == 0
+ f.write("CHEMIN\u000D\u000A") if f.size == 0
f.write(render)
end if journey_pattern.present?
end
diff --git a/app/exporters/chouette/hub/line_exporter.rb b/app/exporters/chouette/hub/line_exporter.rb
index 9804bf96c..be2f52060 100644
--- a/app/exporters/chouette/hub/line_exporter.rb
+++ b/app/exporters/chouette/hub/line_exporter.rb
@@ -32,7 +32,7 @@ class Chouette::Hub::LineExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("LIGNE\n") if f.size == 0
+ f.write("LIGNE\u000D\u000A") if f.size == 0
f.write(render)
end if line.present?
end
diff --git a/app/exporters/chouette/hub/network_exporter.rb b/app/exporters/chouette/hub/network_exporter.rb
index 2673b7bb8..584c3770b 100644
--- a/app/exporters/chouette/hub/network_exporter.rb
+++ b/app/exporters/chouette/hub/network_exporter.rb
@@ -27,7 +27,7 @@ class Chouette::Hub::NetworkExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("RESEAU\n") if f.size == 0
+ f.write("RESEAU\u000D\u000A") if f.size == 0
f.write(render)
end if network.present?
end
diff --git a/app/exporters/chouette/hub/physical_stop_area_exporter.rb b/app/exporters/chouette/hub/physical_stop_area_exporter.rb
index 13e236b68..3086bb850 100644
--- a/app/exporters/chouette/hub/physical_stop_area_exporter.rb
+++ b/app/exporters/chouette/hub/physical_stop_area_exporter.rb
@@ -39,7 +39,7 @@ class Chouette::Hub::PhysicalStopAreaExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("ARRET\n") if f.size == 0
+ f.write("ARRET\u000D\u000A") if f.size == 0
f.write(render)
end if stop_area.present?
end
diff --git a/app/exporters/chouette/hub/route_exporter.rb b/app/exporters/chouette/hub/route_exporter.rb
index 2d25df9e0..e4e6579ce 100644
--- a/app/exporters/chouette/hub/route_exporter.rb
+++ b/app/exporters/chouette/hub/route_exporter.rb
@@ -36,7 +36,7 @@ class Chouette::Hub::RouteExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("SCHEMA\n") if f.size == 0
+ f.write("SCHEMA\u000D\u000A") if f.size == 0
f.write(render)
end if route.present?
end
diff --git a/app/exporters/chouette/hub/time_table_exporter.rb b/app/exporters/chouette/hub/time_table_exporter.rb
index f3a28cf79..8620a38dd 100644
--- a/app/exporters/chouette/hub/time_table_exporter.rb
+++ b/app/exporters/chouette/hub/time_table_exporter.rb
@@ -1,10 +1,11 @@
class Chouette::Hub::TimeTableExporter
include ERB::Util
- attr_accessor :time_table, :directory, :template, :start_date, :end_date
+ attr_accessor :time_table, :directory, :template, :start_date, :end_date, :identifier
- def initialize(time_table, directory)
+ def initialize(time_table, directory, identifier)
@time_table = time_table
@directory = directory
+ @identifier = identifier
@template = File.open('app/views/api/hub/periodes.hub.erb' ){ |f| f.read }
@calendar = ""
s_date = @time_table.start_date
@@ -28,9 +29,11 @@ class Chouette::Hub::TimeTableExporter
end
def self.save(time_tables, directory, hub_export)
+ identifier = 1
time_tables.each do |time_table|
- self.new(time_table, directory).tap do |specific_exporter|
+ self.new(time_table, directory, identifier).tap do |specific_exporter|
specific_exporter.save
+ identifier += 1
end
end
hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|TIME_TABLE_COUNT", :arguments => {"0" => time_tables.size})
@@ -38,7 +41,7 @@ class Chouette::Hub::TimeTableExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("PERIODE\n") if f.size == 0
+ f.write("PERIODE\u000D\u000A") if f.size == 0
f.write(render)
end if time_table.present?
end
diff --git a/app/exporters/chouette/hub/transport_mode_exporter.rb b/app/exporters/chouette/hub/transport_mode_exporter.rb
new file mode 100644
index 000000000..af9a2357a
--- /dev/null
+++ b/app/exporters/chouette/hub/transport_mode_exporter.rb
@@ -0,0 +1,35 @@
+class Chouette::Hub::TransportModeExporter
+ include ERB::Util
+ attr_accessor :transport_mode, :transport_lines, :directory, :template
+
+ def initialize(transport_mode, transport_lines, directory)
+ @transport_mode = transport_mode
+ @transport_lines = transport_lines
+ @directory = directory
+ @template = File.open('app/views/api/hub/modes_transports.hub.erb' ){ |f| f.read }
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def hub_name
+ "/MODETRANSPORT.TXT"
+ end
+
+ def self.save( transport_modes, directory, hub_export)
+ transport_modes.keys.sort.each do |key|
+ self.new( key, transport_modes[key], directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ end
+ hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|TRANSPORT_MODE_COUNT", :arguments => {"0" => transport_modes.keys.size})
+ end
+
+ def save
+ File.open(directory + hub_name , "a") do |f|
+ f.write("MODETRANSPORT\u000D\u000A") if f.size == 0
+ f.write(render)
+ end
+ end
+end
diff --git a/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb b/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb
index 25e3bb864..ede411463 100644
--- a/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb
+++ b/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb
@@ -11,7 +11,7 @@ class Chouette::Hub::VehicleJourneyAtStopExporter
stop_point = @vehicle_journey_at_stop.stop_point
stop_area = stop_point.stop_area
@stop_area_code = stop_area.objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2') if stop_area
- @stop_area_id = stop_area.id if stop_area
+ @stop_area_id = stop_area.registration_number if stop_area
@arrival_time = @vehicle_journey_at_stop.arrival_time.sec + 60 * @vehicle_journey_at_stop.arrival_time.min + 60 * 60 * @vehicle_journey_at_stop.arrival_time.hour
@arrival_type = "A"
@departure_time = @vehicle_journey_at_stop.departure_time.sec + 60 * @vehicle_journey_at_stop.departure_time.min + 60 * 60 * @vehicle_journey_at_stop.departure_time.hour
@@ -47,7 +47,7 @@ class Chouette::Hub::VehicleJourneyAtStopExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("HORAIRE\n") if f.size == 0
+ f.write("HORAIRE\u000D\u000A") if f.size == 0
f.write(render)
end if vehicle_journey_at_stop.present?
end
diff --git a/app/exporters/chouette/hub/vehicle_journey_exporter.rb b/app/exporters/chouette/hub/vehicle_journey_exporter.rb
index b710b2d7a..ad82f7c0a 100644
--- a/app/exporters/chouette/hub/vehicle_journey_exporter.rb
+++ b/app/exporters/chouette/hub/vehicle_journey_exporter.rb
@@ -37,8 +37,8 @@ class Chouette::Hub::VehicleJourneyExporter
end
File.open(directory + "/RENVOI.TXT" , "a") do |f|
if f.size == 0
- f.write("RENVOI\n")
- f.write("a:PMR:1\n")
+ f.write("RENVOI\u000D\u000A")
+ f.write("a:PMR:1\u000D\u000A")
end
end
end
@@ -62,7 +62,7 @@ class Chouette::Hub::VehicleJourneyExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("COURSE\n") if f.size == 0
+ f.write("COURSE\u000D\u000A") if f.size == 0
f.write(render)
end if vehicle_journey.present?
end
diff --git a/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb b/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb
index 37b4cc8f9..7f1e52245 100644
--- a/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb
+++ b/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb
@@ -92,7 +92,7 @@ class Chouette::Hub::VehicleJourneyOperationExporter
def save
File.open(directory + hub_name , "a") do |f|
- f.write("COURSE_OPERATION\n") if f.size == 0
+ f.write("COURSE_OPERATION\u000D\u000A") if f.size == 0
f.write(render)
end if vehicle_journey.present?
end