diff options
| author | Zakaria BOUZIANE | 2014-07-07 16:48:45 +0200 | 
|---|---|---|
| committer | Zakaria BOUZIANE | 2014-07-07 16:48:45 +0200 | 
| commit | c5228e916b7b468a56c3c8a7441ac6973b875fff (patch) | |
| tree | aa81d1ec7b655046e2d9b8d0f7d6f7a85c53aa74 | |
| parent | f6f936ed2c33035904a6c5c002ff21dd27df3f38 (diff) | |
| download | chouette-core-c5228e916b7b468a56c3c8a7441ac6973b875fff.tar.bz2 | |
Hub export
28 files changed, 574 insertions, 4 deletions
| diff --git a/app/exporters/chouette/hub/commercial_stop_area_exporter.rb b/app/exporters/chouette/hub/commercial_stop_area_exporter.rb new file mode 100644 index 000000000..201fce3d2 --- /dev/null +++ b/app/exporters/chouette/hub/commercial_stop_area_exporter.rb @@ -0,0 +1,36 @@ +class Chouette::Hub::CommercialStopAreaExporter +  include ERB::Util +  attr_accessor :stop_area, :directory, :template +   +  def initialize(stop_area, directory) +    @stop_area = stop_area +    @directory = directory +    @template = File.open('app/views/api/hub/stop_area/commercial_show.hub.erb' ){ |f| f.read } +    @type = "ONNNNNNNNNNNNNNNNN" +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/ARRET.TXT" +  end +   +  def self.save( stop_areas, directory, hub_export) +    stop_areas.each do |stop_area| +      self.new( stop_area, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|COMMERCIAL_STOP_AREA_COUNT", :arguments => {"0" => stop_areas.size}) +  end +   +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("ARRET\n") if f.size == 0 +      f.write(render) +    end if stop_area.present? +  end +end + diff --git a/app/exporters/chouette/hub/connection_link_exporter.rb b/app/exporters/chouette/hub/connection_link_exporter.rb new file mode 100644 index 000000000..b3be19396 --- /dev/null +++ b/app/exporters/chouette/hub/connection_link_exporter.rb @@ -0,0 +1,35 @@ +class Chouette::Hub::Connection_LinkExporter +  include ERB::Util +  attr_accessor :connection_link, :directory, :template +   +  def initialize(connection_link, directory) +    @connection_link = connection_link +    @directory = directory +    @template = File.open('app/views/api/hub/correspondance/show.hub.erb' ){ |f| f.read } +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/CORRESPONDANCE.TXT" +  end +   +  def self.save( connection_links, directory, hub_export) +    connection_links.each do |connection_link| +      self.new( connection_link, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|CONNECTION_LINK_COUNT", :arguments => {"0" => connection_links.size}) +  end +   +  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? +  end +end + diff --git a/app/exporters/chouette/hub/exporter.rb b/app/exporters/chouette/hub/exporter.rb new file mode 100644 index 000000000..4b846fee0 --- /dev/null +++ b/app/exporters/chouette/hub/exporter.rb @@ -0,0 +1,185 @@ +class Chouette::Hub::Exporter +   +  attr_reader :referential +  attr_reader :hub_export, :lines, :routes, :journey_patterns +  attr_reader :time_tables, :vehicle_journeys +   +  def initialize(referential, hub_export) +    @referential = referential +    @hub_export = hub_export +    @lines = nil +    @routes = nil +    @journey_patterns = nil +    @time_tables = nil +    @vehicle_journeys = nil +  end +   +  def select_time_tables(start_date, end_date) +    #TODO considere options[:o], options[:id] +    all_time_tables = Chouette::TimeTable.all  +    time_tables = [] +    s_date = Date.strptime(start_date, "%Y-%m-%d") +    e_date = Date.strptime(end_date, "%Y-%m-%d") +    while s_date <= e_date +      (all_time_tables - time_tables).each { |time_table| time_tables << time_table if time_table.include_day?(s_date) } +      s_date = s_date.next_day +    end +    return time_tables +  end +   +  def select_lines(object, ids) +    if object == "network" +      ids.present? ? Chouette::Line.includes(:routes).where( :network_id => ids.split(",")).order(:name) : +        Chouette::Line.joins(:network).includes(:routes).order(:name) +    elsif object == "company" +      ids.present? ? Chouette::Line.includes(:routes).where( :company_id => ids.split(",")).order(:name) : +        Chouette::Line.joins(:company).includes(:routes).order(:name) +    elsif object == "line" && ids.present? +      Chouette::Line.includes(:routes).where( :id => ids.split(",")).order(:name) +    else +      Chouette::Line.includes(:routes).order(:name) +    end +  end +   +  def time_tables_exportable? +    time_tables +  end +   +  def routes_exportable? +    routes # && routes.size < 150 +  end +   +  def lines_exportable? +    lines # && lines.size < 150 +  end +   +  def journey_patterns_exportable? +    journey_patterns # && journey_patterns.size < 150 +  end +   +  def vehicle_journeys_exportable? +    vehicle_journeys +  end +   +  def log_overflow_warning( target_class) +    hub_export.log_messages.create( :severity => "warning", :key => "EXPORT_ERROR|EXCEPTION", +                                    :arguments => {"0" => I18n.t( 'export_log_messages.messages.overflow', +                                                                  :count => 150, :data => target_class.model_name.human.pluralize)}) +  end +   +  def export(zip_file_path, options = {}) +    begin +      referential.switch +       +      FileUtils.rm(zip_file_path) if File.exists? zip_file_path +       +      hub_export.log_messages.create( :severity => "ok", :key => "EXPORT", :arguments => {"0" => "HUB"}) +       +      Dir.mktmpdir(nil, "/tmp"){ |temp_dir| +         +        @time_tables = select_time_tables(options[:start_date], options[:end_date]) +         +        @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? +        @journey_patterns = Chouette::JourneyPattern.where( :route_id => routes.map(&:id) ).order(:name) if routes_exportable? +         +        @vehicle_journeys = Chouette::VehicleJourney.where( :route_id => routes.map(&:id) ).order(:id) if routes_exportable? +         +        vjs = [] +        tts = [] +        @vehicle_journeys.each do |vj| +          unless (vj.time_tables & @time_tables).empty? +            vjs << vj +            tts << (vj.time_tables & @time_tables) +          end +        end +        @time_tables = tts.flatten.uniq +        @vehicle_journeys = vjs.uniq +         +        vehicle_journey_at_stops = Chouette::VehicleJourneyAtStop.where( :vehicle_journey_id => @vehicle_journeys.map(&:id) ).order(:id) if vehicle_journeys_exportable? +         +        if time_tables_exportable? +          Chouette::Hub::TimeTableExporter.save(@time_tables, temp_dir, hub_export) +        else +          log_overflow_warning(Chouette::TimeTable) +        end +         +        if vehicle_journeys_exportable? +          Chouette::Hub::VehicleJourneyExporter.save(@vehicle_journeys, temp_dir, hub_export) +          Chouette::Hub::VehicleJourneyAtStopExporter.save(vehicle_journey_at_stops, temp_dir, hub_export) +        else +          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) +        commercial_stop_areas = Chouette::StopArea.where( :id => physical_stop_areas.map(&:parent_id)).order(:id) +         +        Chouette::Hub::CommercialStopAreaExporter.save(commercial_stop_areas, temp_dir, hub_export) +        Chouette::Hub::PhysicalStopAreaExporter.save(physical_stop_areas, temp_dir, hub_export) + +        connection_links = Chouette::ConnectionLink.where( "deprture_id IN (?) AND arrival_id IN (?)", (physical_stop_areas.map(&:id) + commercial_stop_areas.map(&:id)), (physical_stop_areas.map(&:id) + commercial_stop_areas.map(&:id)) ) +         +        Chouette::Hub::ConnectionLinkExporter.save(connection_links, temp_dir, hub_export) +         +        if journey_patterns_exportable? +          Chouette::Hub::JourneyPatternExporter.save(@journey_patterns, temp_dir, hub_export) +        else +          log_overflow_warning(Chouette::JourneyPattern) if routes_exportable? +        end +         +        if lines_exportable? +          Chouette::Hub::LineExporter.save(@lines, temp_dir, hub_export) +        else +          log_overflow_warning(Chouette::Line) +        end +         +        if routes_exportable? +          #Chouette::Hub::RouteExporter.save( routes, temp_dir, hub_export) +        else +          log_overflow_warning(Chouette::Route) if lines_exportable? +        end + +        # if too many lines +        # there may be too many stop_areas +        if lines_exportable? +          stop_areas = Chouette::StopArea.joins( :stop_points => [:route => :line]).where(:lines => {:id => lines.map(&:id)}).uniq.order(:name) +          #Chouette::Hub::StopAreaExporter.save( stop_areas, temp_dir, hub_export, "Quay") + +          commercial_stop_areas = Chouette::StopArea.where( :id => stop_areas.map(&:parent_id).compact.uniq).order(:name) +          #Chouette::Hub::StopAreaExporter.save( commercial_stop_areas, temp_dir, hub_export, "CommercialStopPoint") +        end + +        if( options[:o] == "line" and not options[:id].present?) # Add all objects +          stop_places = referential.stop_areas.stop_place.order(:name) +          #Chouette::Hub::StopAreaExporter.save( stop_places, temp_dir, hub_export, "StopPlace") + +          itls = referential.stop_areas.itl.order(:name) +          #Chouette::Hub::StopAreaExporter.save( itls, temp_dir, hub_export, "ITL") + +          connection_links = referential.connection_links.order(:name) +          #Chouette::Hub::ConnectionLinkExporter.save( connection_links, temp_dir, hub_export) + +          access_links = referential.access_links.order(:name) +          #Chouette::Hub::AccessLinkExporter.save(access_links, temp_dir, hub_export) + +          access_points = referential.access_points.order(:name) +          #Chouette::Hub::AccessPointExporter.save(access_points, temp_dir, hub_export) + +        end + +        ::Zip::ZipFile.open(zip_file_path, ::Zip::ZipFile::CREATE) do |zipfile| +          Dir[File.join(temp_dir, '*.TXT')].each do |f| +            #Rails.logger.error("Adding File #{File.basename(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/hub/journey_pattern_exporter.rb b/app/exporters/chouette/hub/journey_pattern_exporter.rb new file mode 100644 index 000000000..12c157408 --- /dev/null +++ b/app/exporters/chouette/hub/journey_pattern_exporter.rb @@ -0,0 +1,36 @@ +class Chouette::Hub::JourneyPatternExporter +  include ERB::Util +  attr_accessor :journey_pattern, :directory, :template +   +  def initialize(journey_pattern, directory) +    @journey_pattern = journey_pattern +    @directory = directory +    @template = File.open('app/views/api/hub/chemin/show.hub.erb' ){ |f| f.read } +    @type = "COM" +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/CHEMIN.TXT" +  end +   +  def self.save( journey_patterns, directory, hub_export) +    journey_patterns.each do |journey_pattern| +      self.new( journey_pattern, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|JOURNEY_PATTERN_COUNT", :arguments => {"0" => journey_patterns.size}) +  end +   +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("CHEMIN\n") if f.size == 0 +      f.write(render) +    end if journey_pattern.present? +  end +end + diff --git a/app/exporters/chouette/hub/line_exporter.rb b/app/exporters/chouette/hub/line_exporter.rb new file mode 100644 index 000000000..b9575876a --- /dev/null +++ b/app/exporters/chouette/hub/line_exporter.rb @@ -0,0 +1,35 @@ +class Chouette::Hub::LineExporter +  include ERB::Util +  attr_accessor :line, :directory, :template +   +  def initialize(line, directory) +    @line = line +    @directory = directory +    @template = File.open('app/views/api/hub/ligne/show.hub.erb' ){ |f| f.read } +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/LIGNE.TXT" +  end +   +  def self.save( lines, directory, hub_export) +    lines.each do |line| +      self.new( line, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|LINE_COUNT", :arguments => {"0" => lines.size}) +  end +   +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("LIGNE\n") if f.size == 0 +      f.write(render) +    end if line.present? +  end +end + diff --git a/app/exporters/chouette/hub/physical_stop_area_exporter.rb b/app/exporters/chouette/hub/physical_stop_area_exporter.rb new file mode 100644 index 000000000..4a2666321 --- /dev/null +++ b/app/exporters/chouette/hub/physical_stop_area_exporter.rb @@ -0,0 +1,37 @@ +class Chouette::Hub::PhysicalStopAreaExporter +  include ERB::Util +  attr_accessor :stop_area, :directory, :template +   +  def initialize(stop_area, directory) +    @stop_area = stop_area +    @directory = directory +    @template = File.open('app/views/api/hub/stop_area/physical_show.hub.erb' ){ |f| f.read } +    @type = "NNNNNNNNNNNNNNNNNN" +    @stop_area.referential.projection_type = "27562" +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/ARRET.TXT" +  end +   +  def self.save( stop_areas, directory, hub_export) +    stop_areas.each do |stop_area| +      self.new( stop_area, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|PHYSICAL_STOP_AREA_COUNT", :arguments => {"0" => stop_areas.size}) +  end +   +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("ARRET\n") if f.size == 0 +      f.write(render) +    end if stop_area.present? +  end +end + diff --git a/app/exporters/chouette/hub/time_table_exporter.rb b/app/exporters/chouette/hub/time_table_exporter.rb new file mode 100644 index 000000000..1e91ead6c --- /dev/null +++ b/app/exporters/chouette/hub/time_table_exporter.rb @@ -0,0 +1,46 @@ +class Chouette::Hub::TimeTableExporter +  include ERB::Util +  attr_accessor :time_table, :directory, :template, :start_date, :end_date +   +  def initialize(time_table, directory) +    @time_table = time_table +    @directory = directory +    @template = File.open('app/views/api/hub/periode/show.hub.erb' ){ |f| f.read } +    @calendar = "" +    s_date = @time_table.start_date +    e_date = @time_table.end_date +    while s_date <= e_date +      if time_table.include_day?(s_date) +        @calendar += "1" +      else +        @calendar += "0" +      end +      s_date = s_date.next_day +    end +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/PERIODE.TXT" +  end +   +  def self.save(time_tables, directory, hub_export) +    time_tables.each do |time_table| +      self.new(time_table, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|TIME_TABLE_COUNT", :arguments => {"0" => time_tables.size}) +  end + +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("PERIODE\n") if f.size == 0 +      f.write(render) +    end if time_table.present? +  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 new file mode 100644 index 000000000..e78048ecb --- /dev/null +++ b/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb @@ -0,0 +1,39 @@ +class Chouette::Hub::VehicleJourneyAtStopExporter +  include ERB::Util +  attr_accessor :vehicle_journey_at_stop, :directory, :template +   +  def initialize(vehicle_journey_at_stop, directory) +    @vehicle_journey_at_stop = vehicle_journey_at_stop +    @directory = directory +    @template = File.open('app/views/api/hub/horaire/show.hub.erb' ) { |f| f.read } +    @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 +    @departure_type = "D" +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/HORAIRE.TXT" +  end +   +  def self.save( vehicle_journey_at_stops, directory, hub_export) +    vehicle_journey_at_stops.each do |vehicle_journey_at_stop| +      self.new( vehicle_journey_at_stop, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|VEHICLE_JOURNEY_AT_STOP_COUNT", :arguments => {"0" => vehicle_journey_at_stops.size}) +  end +   +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("HORAIRE\n") if f.size == 0 +      f.write(render) +    end if vehicle_journey_at_stop.present? +  end +end + diff --git a/app/exporters/chouette/hub/vehicle_journey_exporter.rb b/app/exporters/chouette/hub/vehicle_journey_exporter.rb new file mode 100644 index 000000000..ced67fdd8 --- /dev/null +++ b/app/exporters/chouette/hub/vehicle_journey_exporter.rb @@ -0,0 +1,36 @@ +class Chouette::Hub::VehicleJourneyExporter +  include ERB::Util +  attr_accessor :vehicle_journey, :directory, :template +   +  def initialize(vehicle_journey, directory) +    @vehicle_journey = vehicle_journey +    @directory = directory +    @template = File.open('app/views/api/hub/course/show.hub.erb' ) { |f| f.read } +  end +   +  def render() +    ERB.new(@template).result(binding) +  end +   +  def hub_name +    "/COURSE.TXT" +  end +   +  def self.save( vehicle_journeys, directory, hub_export) +    vehicle_journeys.each do |vehicle_journey| +      #Chouette::Hub::VehicleJourneyAtStopExporter.save(vehicle_journey.vehicle_journey_at_stops, directory, hub_export) +      self.new( vehicle_journey, directory).tap do |specific_exporter| +        specific_exporter.save +      end +    end +    hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|VEHICLE_JOURNEY_COUNT", :arguments => {"0" => vehicle_journeys.size}) +  end +   +  def save +    File.open(directory + hub_name , "a") do |f| +      f.write("COURSE\n") if f.size == 0 +      f.write(render) +    end if vehicle_journey.present? +  end +end + diff --git a/app/models/export.rb b/app/models/export.rb index f684ddef5..98b3f0ace 100644 --- a/app/models/export.rb +++ b/app/models/export.rb @@ -102,7 +102,8 @@ class Export < ActiveRecord::Base        "CsvExport" => "CSV",        "GtfsExport" => "GTFS",        "NetexExport" => "NeTEx", -      "KmlExport" => "KML" +      "KmlExport" => "KML", +      "HubExport" => "HUB"      }      name_by_format[format]    end @@ -112,7 +113,7 @@ class Export < ActiveRecord::Base        subclasses.map(&:to_s)      else        # FIXME -      %w{NeptuneExport CsvExport GtfsExport NetexExport KmlExport} +      %w{NeptuneExport CsvExport GtfsExport NetexExport KmlExport HubExport}      end    end diff --git a/app/models/hub_export.rb b/app/models/hub_export.rb new file mode 100644 index 000000000..3d93cbfae --- /dev/null +++ b/app/models/hub_export.rb @@ -0,0 +1,35 @@ +class HubExport < Export + +  option :start_date +  option :end_date +   +  after_initialize :init_period +   +  def init_period +    unless Chouette::TimeTable.start_validity_period.nil? +      if start_date.nil? +        self.start_date = Chouette::TimeTable.start_validity_period +      end +      if end_date.nil? +        self.end_date = Chouette::TimeTable.end_validity_period +      end +    end +  end +   +  def export_options +    if (start_date.empty? && end_date.empty?) +      super.merge(:format => :hub).except(:start_date).except(:end_date) +    elsif start_date.empty? +      super.merge(:format => :hub, :end_date => end_date).except(:start_date) +    elsif end_date.empty? +      super.merge(:format => :hub, :start_date => start_date).except(:end_date) +    else +      super.merge(:format => :hub, :start_date => start_date, :end_date => end_date) +    end +  end +   +  def exporter +    exporter ||= ::Chouette::Hub::Exporter.new(referential, self) +  end + +end diff --git a/app/views/api/hub/chemin/show.hub.erb b/app/views/api/hub/chemin/show.hub.erb new file mode 100644 index 000000000..ed6e9a4d1 --- /dev/null +++ b/app/views/api/hub/chemin/show.hub.erb @@ -0,0 +1 @@ +<%= @journey_pattern.route.line_id %>;<%= @journey_pattern.id %>;<%= @journey_pattern.registration_number %>;<%= @journey_pattern.name %>;<%= @journey_pattern.route.wayback == 'A' ? 1 : 2 %>;<%= @type %>;<% @journey_pattern.stop_points.each do |sp| %>;<%= sp.stop_area_id %>;<%= sp.stop_area.registration_number %>;;<% end %> diff --git a/app/views/api/hub/correspondance/show.hub.erb b/app/views/api/hub/correspondance/show.hub.erb new file mode 100644 index 000000000..8d4c5ba7c --- /dev/null +++ b/app/views/api/hub/correspondance/show.hub.erb @@ -0,0 +1 @@ +<%= @connection_link.departure_id %>;<%= @connection_link.departure.registration_number %>;<%= @connection_link.arrival_id %>;<%= @connection_link.arrival.registration_number %>;<%= @connection_link.link_distance %>;<%= @connection_link.default_duration %>;<%= @connection_link.id %> diff --git a/app/views/api/hub/course/show.hub.erb b/app/views/api/hub/course/show.hub.erb new file mode 100644 index 000000000..d92939dc2 --- /dev/null +++ b/app/views/api/hub/course/show.hub.erb @@ -0,0 +1 @@ +<%= @vehicle_journey.id %>;;;;;<%= @vehicle_journey.route.line_id %>;<%= @vehicle_journey.journey_pattern.id %>;... diff --git a/app/views/api/hub/horaire/show.hub.erb b/app/views/api/hub/horaire/show.hub.erb new file mode 100644 index 000000000..bebea0959 --- /dev/null +++ b/app/views/api/hub/horaire/show.hub.erb @@ -0,0 +1,2 @@ +<%= @vehicle_journey_at_stop.stop_point.stop_area_id %>;<%= @arrival_time %>;<%= @arrival_type %>;<%= @vehicle_journey_at_stop.vehicle_journey_id %>;<%= @vehicle_journey_at_stop.vehicle_journey.journey_pattern_id %>;<%= @vehicle_journey_at_stop.stop_point.stop_area.registration_number %>;<%= @vehicle_journey_at_stop.id %> +<%= @vehicle_journey_at_stop.stop_point.stop_area_id %>;<%= @departure_time %>;<%= @departure_type %>;<%= @vehicle_journey_at_stop.vehicle_journey_id %>;<%= @vehicle_journey_at_stop.vehicle_journey.journey_pattern_id %>;<%= @vehicle_journey_at_stop.stop_point.stop_area.registration_number %>;<%= @vehicle_journey_at_stop.id %> diff --git a/app/views/api/hub/ligne/show.hub.erb b/app/views/api/hub/ligne/show.hub.erb new file mode 100644 index 000000000..ee6d4de8f --- /dev/null +++ b/app/views/api/hub/ligne/show.hub.erb @@ -0,0 +1 @@ +<%= @line.id %>;<%= @line.objectid %>;<%= @line.name %>;;;<%= @line.company_id %>;<%= @line.network_id %>;;<%= @line.registration_number %> diff --git a/app/views/api/hub/periode/show.hub.erb b/app/views/api/hub/periode/show.hub.erb new file mode 100644 index 000000000..342e4016f --- /dev/null +++ b/app/views/api/hub/periode/show.hub.erb @@ -0,0 +1 @@ +<%= @time_table.id %>;<%= @time_table.comment %>;<%= @time_table.start_date %>;<%= @time_table.end_date %>;<%= @calendar %> diff --git a/app/views/api/hub/stop_area/commercial_show.hub.erb b/app/views/api/hub/stop_area/commercial_show.hub.erb new file mode 100644 index 000000000..a7cc7585a --- /dev/null +++ b/app/views/api/hub/stop_area/commercial_show.hub.erb @@ -0,0 +1 @@ +<%= @stop_area.id %>;<%= @stop_area.name %>;;<%= @type %>;;;;<%= @stop_area.country_code %>;<%= @stop_area.country_code %>;<%= @stop_area.comment %>;<%= @stop_area.registration_number %> diff --git a/app/views/api/hub/stop_area/physical_show.hub.erb b/app/views/api/hub/stop_area/physical_show.hub.erb new file mode 100644 index 000000000..f2aee2e6d --- /dev/null +++ b/app/views/api/hub/stop_area/physical_show.hub.erb @@ -0,0 +1 @@ +<%= @stop_area.id %>;<%= @stop_area.name %>;;<%= @type %>;<%= @stop_area.parent_id %>;<%= @stop_area.projection_x %>;<%= @stop_area.projection_y %>;<%= @stop_area.country_code %>;<%= @stop_area.country_code %>;<%= @stop_area.comment %>;<%= @stop_area.registration_number %> diff --git a/app/views/api/hub/stops/show.hub.erb b/app/views/api/hub/stops/show.hub.erb new file mode 100644 index 000000000..2bab51c97 --- /dev/null +++ b/app/views/api/hub/stops/show.hub.erb @@ -0,0 +1 @@ +<%= @stop.code %>;<%= @stop.name %>;<%= @stop.description if @stop.description? %>;<%= @stop.type %>;<%= @stop.short_name %>;<%= @stop.x %>;<%= @stop.y %>;<%= @stop.city %>;<%= @stop.administrative_code %>;<%= @stop.comment if @stop.comment? %>;<%= @stop.object_id %> diff --git a/app/views/api/hub/time_tables/show.hub.erb b/app/views/api/hub/time_tables/show.hub.erb new file mode 100644 index 000000000..a1c99a7ea --- /dev/null +++ b/app/views/api/hub/time_tables/show.hub.erb @@ -0,0 +1 @@ +<%= @line.objectid %>;<%= @line.name %>;<%= @line.company.objectid %>;<%= @line.network.objectid %> diff --git a/app/views/exports/_fields_hub_export.erb b/app/views/exports/_fields_hub_export.erb new file mode 100644 index 000000000..f23d10780 --- /dev/null +++ b/app/views/exports/_fields_hub_export.erb @@ -0,0 +1,2 @@ +<%= form.input :start_date, :as => :date_picker %> +<%= form.input :end_date, :as => :date_picker %> diff --git a/app/views/help/exports.textile b/app/views/help/exports.textile index 644f11a04..2e569a9ae 100644 --- a/app/views/help/exports.textile +++ b/app/views/help/exports.textile @@ -14,6 +14,7 @@ h3. Formats disponibles  - CSV := format tabulaire spécifique à Chouette (cf "CSV":csv)  - GTFS := format destiné à ["Google Transit":https://developers.google.com/transit/gtfs/?hl=fr] ; les données exportées en GTFS sont explicités ["ICI":http://normes-donnees-tc.org/spip.php?article64]  - KML := format contenant l'ensemble des données cartographiées pouvant ainsi être importée dans un SIG +- HUB := format tabulaire interne CityWay  h3. Options des formats @@ -43,6 +44,15 @@ fixe le fuseau horaire (paramètre obligatoire des données GTFS)  * *CSV* : pas d'option particulière +* *HUB* : + +- Début de période := permet d'exporter uniquement les courses circulant à partir de cette date +- Fin de période := permet d'exporter uniquement les courses circulant jusqu'à cette date +- Fuseau horaire :=  +fixe le fuseau horaire (paramètre obligatoire des données GTFS) + la valeur proposée par défaut est celle de l'espace de données =: + +  h3. Consultation des résultats diff --git a/config/environments/development.rb b/config/environments/development.rb index 9c81d6ddf..d93762ad7 100644 --- a/config/environments/development.rb +++ b/config/environments/development.rb @@ -58,9 +58,9 @@ ChouetteIhm::Application.configure do    config.to_prepare do      Devise::Mailer.layout "mailer"      #ApplicationMap.ign_api_key = "i2aqyge3x3iovnuhz7z06flp" -    chouette_command_script = "tmp/chouette-command/chouette" +    chouette_command_script = "/home/zbouziane/Projects/dryade/chouette2_dev/tmp/chouette-command/chouette"      if File.exists? chouette_command_script -      Chouette::Command.command = "tmp/chouette-command/chouette" +      Chouette::Command.command = "/home/zbouziane/Projects/dryade/chouette2_dev/tmp/chouette-command/chouette"      else        Chouette::Command.command = "true"      end diff --git a/config/locales/exports.yml b/config/locales/exports.yml index d9efdd2d6..539e0d23d 100644 --- a/config/locales/exports.yml +++ b/config/locales/exports.yml @@ -34,6 +34,11 @@ en:        CONNECTION_LINK_COUNT: "Connection link count : %{0}"        ACCES_LINK_COUNT: "Access Link count : %{0}"        ACCES_POINT_COUNT: "Access Point count : %{0}" +      TIME_TABLE_COUNT: "Time Table count : %{0}" +      VEHICLE_JOURNEY_COUNT: "Vehicle journey count : %{0}" +      VEHICLE_JOURNEY_AT_STOP_COUNT: "Vehicle journey At Stop count : %{0}" +      PHYSICAL_STOP_AREA_COUNT: "Physical Stop Areas count : %{0}" +      COMMERCIAL_STOP_AREA_COUNT: "Logical Stop Areas count : %{0}"        EXPORT: "%{0} Export"        EXPORTED_LINE: "Line %{0} (%{1}) exported"        EMPTY_LINE: "Line without valid vehicle journey : not exported" @@ -72,6 +77,7 @@ en:          one: "export"          other: "exports"        kml_export: "KML export" +      hub_export: "HUB export"        neptune_export: "Neptune export"        csv_export: "CSV export"        gtfs_export: "GTFS export" @@ -135,6 +141,11 @@ fr:        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}" +      TIME_TABLE_COUNT: "Nombre de tableaux de marche : %{0}" +      VEHICLE_JOURNEY_COUNT: "Nombre de courses : %{0}" +      VEHICLE_JOURNEY_AT_STOP_COUNT: "Nombre d'horaires : %{0}" +      PHYSICAL_STOP_AREA_COUNT: "Nombre d'arrêts physiques : %{0}" +      COMMERCIAL_STOP_AREA_COUNT: "Nombre d'arrêts logiques : %{0}"        EXPORT: "Export %{0}"        EXPORTED_LINE: "Ligne %{0} (%{1}) exportée"        EMPTY_LINE: "Ligne sans course valide : non exportée" @@ -173,6 +184,7 @@ fr:          one: "export"          other: "exports"        kml_export: "export KML" +      hub_export: "export HUB"        neptune_export: "export Neptune "        csv_export: "export CSV"        gtfs_export: "export GTFS " diff --git a/config/locales/lines.yml b/config/locales/lines.yml index 4f6a51553..3c41a50f9 100644 --- a/config/locales/lines.yml +++ b/config/locales/lines.yml @@ -8,6 +8,8 @@ en:        import: "Import lines"        export_kml: "Export KML line"        export__kml_all: "Export KML lines" +      export_hub: "Export HUB line" +      export__hub_all: "Export HUB lines"      new:        title: "Add a new line"      edit: @@ -86,6 +88,8 @@ fr:        import: "Importer des lignes"        export_kml: "Export KML de la ligne"        export_kml_all: "Export KML des lignes" +      export_hub: "Export HUB de la ligne" +      export_hub_all: "Export HUB des lignes"      new:        title: "Ajouter une ligne"      edit: diff --git a/config/locales/routes.yml b/config/locales/routes.yml index 27243bd87..8ec0c876d 100644 --- a/config/locales/routes.yml +++ b/config/locales/routes.yml @@ -7,6 +7,8 @@ en:        destroy_confirm: "Are you sure you want destroy this route?"        export_kml: "Export KML route"        export_kml_all: "Export KML routes" +      export_hub: "Export HUB route" +      export_hub_all: "Export HUB routes"      new:        title: "Add a new route"      edit: @@ -68,6 +70,8 @@ fr:        destroy_confirm: "Etes vous sûr de supprimer cette séquence d'arrêts ?"        export_kml: "Export KML de la séquence d'arrêts"        export_kml_all: "Export KML des séquences d'arrêts" +      export_hub: "Export HUB de la séquence d'arrêts" +      export_hub_all: "Export HUB des séquences d'arrêts"      new:        title: "Ajouter une séquence d'arrêts"      edit: diff --git a/config/locales/stop_areas.yml b/config/locales/stop_areas.yml index 1c0214210..40c0fe761 100644 --- a/config/locales/stop_areas.yml +++ b/config/locales/stop_areas.yml @@ -19,6 +19,9 @@ en:        export_kml_place: "Export KML places"        export_kml_commercial: "Export KML commercial stop points"        export_kml_physical: "Export KML physical" +      export_hub_place: "Export HUB places" +      export_hub_commercial: "Export HUB commercial stop points" +      export_hub_physical: "Export HUB physical"      new:        title: "Add a new stop"      edit: @@ -115,6 +118,9 @@ fr:        export_kml_place: "Export KML des pôles d'échange"        export_kml_commercial: "Export KML des arrêts commerciaux"        export_kml_physical: "Export KML des arrêts physiques" +      export_hub_place: "Export HUB des pôles d'échange" +      export_hub_commercial: "Export HUB des arrêts commerciaux" +      export_hub_physical: "Export HUB des arrêts physiques"      new:        title: "Ajouter un arrêt"      edit: | 
