aboutsummaryrefslogtreecommitdiffstats
path: root/app/exporters
diff options
context:
space:
mode:
authorZakaria BOUZIANE2014-10-07 15:44:58 +0200
committerZakaria BOUZIANE2014-10-07 15:44:58 +0200
commitd2eb3a6d8b7fca06712426d416302934a56a0a28 (patch)
tree74074b2a9b8026ec6274ff456df7347fea37302f /app/exporters
parentbf37e97d8a86814b1bc2f844cbcff86ab0a43266 (diff)
downloadchouette-core-d2eb3a6d8b7fca06712426d416302934a56a0a28.tar.bz2
HUB Export : SISMO profile
Diffstat (limited to 'app/exporters')
-rw-r--r--app/exporters/chouette/hub/connection_link_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/direction_exporter.rb39
-rw-r--r--app/exporters/chouette/hub/exporter.rb53
-rw-r--r--app/exporters/chouette/hub/journey_pattern_exporter.rb13
-rw-r--r--app/exporters/chouette/hub/line_exporter.rb2
-rw-r--r--app/exporters/chouette/hub/physical_stop_area_exporter.rb3
-rw-r--r--app/exporters/chouette/hub/route_exporter.rb44
-rw-r--r--app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb29
-rw-r--r--app/exporters/chouette/hub/vehicle_journey_exporter.rb19
-rw-r--r--app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb61
10 files changed, 235 insertions, 30 deletions
diff --git a/app/exporters/chouette/hub/connection_link_exporter.rb b/app/exporters/chouette/hub/connection_link_exporter.rb
index c7d1820d8..e70c773b9 100644
--- a/app/exporters/chouette/hub/connection_link_exporter.rb
+++ b/app/exporters/chouette/hub/connection_link_exporter.rb
@@ -6,6 +6,8 @@ class Chouette::Hub::ConnectionLinkExporter
@connection_link = connection_link
@directory = directory
@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
end
def render()
diff --git a/app/exporters/chouette/hub/direction_exporter.rb b/app/exporters/chouette/hub/direction_exporter.rb
new file mode 100644
index 000000000..27f89b4a1
--- /dev/null
+++ b/app/exporters/chouette/hub/direction_exporter.rb
@@ -0,0 +1,39 @@
+class Chouette::Hub::DirectionExporter
+ 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/directions.hub.erb' ){ |f| f.read }
+ @arrival_stop_point = Chouette::StopPoint.find(@journey_pattern.arrival_stop_point_id) if @journey_pattern.arrival_stop_point_id
+ @direction = Chouette::StopArea.find(@arrival_stop_point.stop_area_id) if @arrival_stop_point
+ route = Chouette::Route.find(@journey_pattern.route_id) if @journey_pattern.route_id
+ @line = Chouette::Line.find(route.line_id) if route
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def hub_name
+ "/DIRECTION.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|DIRECTION_COUNT", :arguments => {"0" => journey_patterns.size})
+ end
+
+ def save
+ File.open(directory + hub_name , "a") do |f|
+ f.write("DIRECTION\n") if f.size == 0
+ f.write(render)
+ end if journey_pattern.present?
+ end
+end
+
diff --git a/app/exporters/chouette/hub/exporter.rb b/app/exporters/chouette/hub/exporter.rb
index 4dcc00045..8b9bc226e 100644
--- a/app/exporters/chouette/hub/exporter.rb
+++ b/app/exporters/chouette/hub/exporter.rb
@@ -30,15 +30,15 @@ class Chouette::Hub::Exporter
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)
+ ids.present? ? Chouette::Line.includes(:routes).where( :network_id => ids.split(",")).order(:objectid) :
+ Chouette::Line.joins(:network).includes(:routes).order(:objectid)
elsif object == "company"
- ids.present? ? Chouette::Line.includes(:routes).where( :company_id => ids.split(",")).order(:name) :
- Chouette::Line.joins(:company).includes(:routes).order(:name)
+ ids.present? ? Chouette::Line.includes(:routes).where( :company_id => ids.split(",")).order(:objectid) :
+ Chouette::Line.joins(:company).includes(:routes).order(:objectid)
elsif object == "line" && ids.present?
- Chouette::Line.includes(:routes).where( :id => ids.split(",")).order(:name)
+ Chouette::Line.includes(:routes).where( :id => ids.split(",")).order(:objectid)
else
- Chouette::Line.includes(:routes).order(:name)
+ Chouette::Line.includes(:routes).order(:objectid)
end
end
@@ -81,9 +81,23 @@ class Chouette::Hub::Exporter
@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(:objectid) if routes_exportable?
+
+ #@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 ) }
+ 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?
vjs = []
tts = []
@@ -96,7 +110,7 @@ class Chouette::Hub::Exporter
@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?
+ 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)
@@ -104,10 +118,19 @@ class Chouette::Hub::Exporter
log_overflow_warning(Chouette::TimeTable)
end
+ if journey_patterns_exportable?
+ Chouette::Hub::RouteExporter.save(@routes, temp_dir, hub_export)
+ Chouette::Hub::JourneyPatternExporter.save(@journey_patterns, temp_dir, hub_export)
+ Chouette::Hub::DirectionExporter.save(@journey_patterns, temp_dir, hub_export)
+ else
+ log_overflow_warning(Chouette::JourneyPattern) if routes_exportable?
+ 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)
Chouette::Hub::VehicleJourneyOperationExporter.save(@vehicle_journeys, temp_dir, hub_export)
+ #Chouette::Hub::VehicleJourneyAtStopExporter.save(vehicle_journey_at_stops, temp_dir, hub_export)
+ Chouette::Hub::VehicleJourneyAtStopExporter.save(@vehicle_journeys, temp_dir, hub_export, vehicle_journey_at_stops.count)
else
log_overflow_warning(Chouette::VehicleJourney)
end
@@ -119,16 +142,10 @@ class Chouette::Hub::Exporter
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( "departure_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)) )
+ connection_links = Chouette::ConnectionLink.where( "departure_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)) ).order(: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)
networks = Chouette::Network.where( :id => @lines.map(&:network_id))
diff --git a/app/exporters/chouette/hub/journey_pattern_exporter.rb b/app/exporters/chouette/hub/journey_pattern_exporter.rb
index 03f20e6bf..27333d90e 100644
--- a/app/exporters/chouette/hub/journey_pattern_exporter.rb
+++ b/app/exporters/chouette/hub/journey_pattern_exporter.rb
@@ -7,6 +7,19 @@ class Chouette::Hub::JourneyPatternExporter
@directory = directory
@template = File.open('app/views/api/hub/chemins.hub.erb' ){ |f| f.read }
@type = "COM"
+ if @journey_pattern.route
+ if @journey_pattern.route.line_id
+ @line = Chouette::Line.find(@journey_pattern.route.line_id)
+ end
+ end
+ @stop_areas = []
+ if @journey_pattern.stop_points
+ @stop_points = @journey_pattern.stop_points.order(:position)
+ if @stop_points
+ @stop_points.each { |sp| @stop_areas << Chouette::StopArea.find(sp.stop_area_id) }
+ end
+ end
+ @stop_areas = @stop_areas.flatten
end
def render()
diff --git a/app/exporters/chouette/hub/line_exporter.rb b/app/exporters/chouette/hub/line_exporter.rb
index f8cf07b60..9804bf96c 100644
--- a/app/exporters/chouette/hub/line_exporter.rb
+++ b/app/exporters/chouette/hub/line_exporter.rb
@@ -6,6 +6,8 @@ class Chouette::Hub::LineExporter
@line = line
@directory = directory
@template = File.open('app/views/api/hub/lignes.hub.erb' ){ |f| f.read }
+ @company = @line.company
+ @network = @line.network
if (line.group_of_lines.count > 0)
@group_of_line = line.group_of_lines[0].objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2')
end
diff --git a/app/exporters/chouette/hub/physical_stop_area_exporter.rb b/app/exporters/chouette/hub/physical_stop_area_exporter.rb
index 23e5d73ec..13e236b68 100644
--- a/app/exporters/chouette/hub/physical_stop_area_exporter.rb
+++ b/app/exporters/chouette/hub/physical_stop_area_exporter.rb
@@ -7,6 +7,9 @@ class Chouette::Hub::PhysicalStopAreaExporter
@directory = directory
@template = File.open('app/views/api/hub/arrets_physiques.hub.erb' ){ |f| f.read }
@type = "NNNNNNNNNNNNNNNNNN"
+ if @stop_area.parent_id
+ @parent = Chouette::StopArea.find(@stop_area.parent_id)
+ end
@stop_area.referential.projection_type = "27562"
wgs84 = '+proj=lonlat +datum=WGS84 +ellps=WGS84'
diff --git a/app/exporters/chouette/hub/route_exporter.rb b/app/exporters/chouette/hub/route_exporter.rb
new file mode 100644
index 000000000..2d25df9e0
--- /dev/null
+++ b/app/exporters/chouette/hub/route_exporter.rb
@@ -0,0 +1,44 @@
+class Chouette::Hub::RouteExporter
+ include ERB::Util
+ attr_accessor :route, :directory, :template
+
+ def initialize(route, directory)
+ @route = route
+ @directory = directory
+ @template = File.open('app/views/api/hub/schemas.hub.erb' ){ |f| f.read }
+ @line = Chouette::Line.find(@route.line_id) if @route.line_id
+ @stop_areas = []
+ if @route.stop_points
+ @stop_points = @route.stop_points.order(:position)
+ if @stop_points
+ @stop_points.each { |sp| @stop_areas << Chouette::StopArea.find(sp.stop_area_id) }
+ end
+ end
+ @stop_areas = @stop_areas.flatten
+ end
+
+ def render()
+ ERB.new(@template).result(binding)
+ end
+
+ def hub_name
+ "/SCHEMA.TXT"
+ end
+
+ def self.save( routes, directory, hub_export)
+ routes.each do |route|
+ self.new( route, directory).tap do |specific_exporter|
+ specific_exporter.save
+ end
+ end
+ hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|SCHEMA_COUNT", :arguments => {"0" => routes.size})
+ end
+
+ def save
+ File.open(directory + hub_name , "a") do |f|
+ f.write("SCHEMA\n") if f.size == 0
+ f.write(render)
+ end if route.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
index 12cb5e1df..25e3bb864 100644
--- a/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb
+++ b/app/exporters/chouette/hub/vehicle_journey_at_stop_exporter.rb
@@ -2,11 +2,16 @@ class Chouette::Hub::VehicleJourneyAtStopExporter
include ERB::Util
attr_accessor :vehicle_journey_at_stop, :directory, :template
- def initialize(vehicle_journey_at_stop, directory)
+ def initialize(vehicle_journey_at_stop, directory, index, id)
@vehicle_journey_at_stop = vehicle_journey_at_stop
@directory = directory
+ @vehicle_journey_num = index
+ @vehicle_journey_id = id
@template = File.open('app/views/api/hub/horaires.hub.erb' ) { |f| f.read }
- @stop_area_code = Chouette::StopArea.find(@vehicle_journey_at_stop.stop_point.stop_area_id).objectid.sub(/(\w*\:\w*\:)(\w*)/, '\2')
+ 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
@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
@@ -21,13 +26,23 @@ class Chouette::Hub::VehicleJourneyAtStopExporter
"/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
+ def self.save( vehicle_journeys, directory, hub_export, vehicle_journey_at_stops_count)
+ id = 1
+ vehicle_journeys.each_index do |index|
+ vehicle_journey_at_stops = Chouette::VehicleJourneyAtStop.where( :vehicle_journey_id => vehicle_journeys[index].id ).order(:arrival_time)
+ vehicle_journey_at_stops.each do |vehicle_journey_at_stop|
+ self.new( vehicle_journey_at_stop, directory, index, id).tap do |specific_exporter|
+ specific_exporter.save
+ id += 1
+ end
end
end
- hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|VEHICLE_JOURNEY_AT_STOP_COUNT", :arguments => {"0" => vehicle_journey_at_stops.size})
+ #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_count})
end
def save
diff --git a/app/exporters/chouette/hub/vehicle_journey_exporter.rb b/app/exporters/chouette/hub/vehicle_journey_exporter.rb
index 96b458953..b710b2d7a 100644
--- a/app/exporters/chouette/hub/vehicle_journey_exporter.rb
+++ b/app/exporters/chouette/hub/vehicle_journey_exporter.rb
@@ -19,16 +19,27 @@ class Chouette::Hub::VehicleJourneyExporter
@departure_time_sec = departure_time.sec + ( departure_time.min + departure_time.hour * 60 ) * 60
@arrival_time_sec = arrival_time.sec + ( arrival_time.min + arrival_time.hour * 60 ) * 60
@validity = 0
- @vehicle_journey.time_tables.map(&:int_day_types).each { |v| @validity += v }
+ @vehicle_journey.time_tables.map(&:int_day_types).each { |v| @validity |= v }
- periods = Chouette::TimeTablePeriod.where( :time_table_id => @vehicle_journey.time_tables.map(&:id) ).map(&:id)
+ periods = Chouette::TimeTable.where( :id => @vehicle_journey.time_tables.map(&:id) ).map(&:objectid)
@periods = ""
unless periods.empty?
- @periods += periods[0].to_s
+ @periods += periods[0].sub(/(\w*\:\w*\:)(\w*)/, '\2')
periods.shift
end
unless periods.empty?
- periods.each { |p| @periods += "|" + p.to_s }
+ periods.each { |p| @periods += "|" + p.sub(/(\w*\:\w*\:)(\w*)/, '\2') }
+ end
+ # USE @renvoi for PMR and TAD and create RENVOI.TXT File
+ @renvoi = ""
+ if @vehicle_journey.mobility_restricted_suitability
+ @renvoi = "1"
+ end
+ File.open(directory + "/RENVOI.TXT" , "a") do |f|
+ if f.size == 0
+ f.write("RENVOI\n")
+ f.write("a:PMR:1\n")
+ end
end
end
diff --git a/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb b/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb
index 3a45f2cab..37b4cc8f9 100644
--- a/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb
+++ b/app/exporters/chouette/hub/vehicle_journey_operation_exporter.rb
@@ -7,6 +7,65 @@ class Chouette::Hub::VehicleJourneyOperationExporter
@number = index
@directory = directory
@template = File.open('app/views/api/hub/courses_operations.hub.erb' ) { |f| f.read }
+ # HUB TMode vs. Neptune TMode
+ # transport_mode = "TAD_PMR" if (@vehicle_journey.flexible_service && @vehicle_journey.mobility_restricted_suitability) # SISMO profile : NO TAD_PMR MODE.
+ if @vehicle_journey.flexible_service
+ transport_mode = "TAD"
+ else
+ case @vehicle_journey.transport_mode
+ when "Interchange"
+ transport_mode = ""
+ when "Unknown"
+ transport_mode = ""
+ when "Coach"
+ if @vehicle_journey.mobility_restricted_suitability
+ transport_mode = "CAR_PMR"
+ else
+ transport_mode = "CAR"
+ end
+ when "Air"
+ transport_mode = "AVION"
+ when "Waterborne"
+ transport_mode = "BATEAU"
+ when "Bus"
+ if @vehicle_journey.mobility_restricted_suitability
+ transport_mode = "BUS_PMR"
+ else
+ transport_mode = "BUS"
+ end
+ when "Ferry"
+ transport_mode = "BATEAU"
+ when "Walk"
+ transport_mode = ""
+ when "Metro"
+ transport_mode = "METRO"
+ when "Shuttle"
+ transport_mode = ""
+ when "RapidTransit"
+ transport_mode = ""
+ when "Taxi"
+ transport_mode = "TAXIBUS"
+ when "LocalTrain"
+ transport_mode = "TRAIN"
+ when "Train"
+ transport_mode = "TRAIN"
+ when "LongDistance_train"
+ transport_mode = "TRAIN"
+ when "Tramway"
+ transport_mode = "TRAM"
+ when "Trolleybus"
+ transport_mode = "TROLLEY"
+ when "PrivateVehicle"
+ transport_mode = ""
+ when "Bicycle"
+ transport_mode = "VELO"
+ when "Other"
+ transport_mode = ""
+ else
+ transport_mode = ""
+ end
+ end
+ @transport_mode = transport_mode
end
def render()
@@ -28,7 +87,7 @@ class Chouette::Hub::VehicleJourneyOperationExporter
# specific_exporter.save
# end
#end
- hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|VEHICLE_JOURNEY_COUNT", :arguments => {"0" => vehicle_journeys.size})
+ hub_export.log_messages.create( :severity => "ok", :key => "EXPORT|VEHICLE_JOURNEY_OPERATION_COUNT", :arguments => {"0" => vehicle_journeys.size})
end
def save