diff options
| author | Zakaria BOUZIANE | 2014-10-22 10:21:42 +0200 |
|---|---|---|
| committer | Zakaria BOUZIANE | 2014-10-22 10:21:42 +0200 |
| commit | d89660fda67b2864330805cbd40b64e7b598c6e5 (patch) | |
| tree | 892815bd4b12b60c5510246b5ef3f67febea975b /app/exporters | |
| parent | 1b58515640be1140fc3dde5fa00d0f32ee3b391a (diff) | |
| download | chouette-core-d89660fda67b2864330805cbd40b64e7b598c6e5.tar.bz2 | |
HUB Export: Id mapping and CR LF addition
Diffstat (limited to 'app/exporters')
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 |
