diff options
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 | 
