diff options
| author | Alban Peignier | 2018-01-11 09:29:14 +0100 | 
|---|---|---|
| committer | Alban Peignier | 2018-01-11 09:31:07 +0100 | 
| commit | 45a0b93ed96a122716815f84fa614f70586be4f0 (patch) | |
| tree | 0c5459f5a6b3c45fcf9b1b65db5b675fac0f7b5f | |
| parent | d858b724c0c966a3896269fa5d52c9b45a4c1926 (diff) | |
| download | chouette-core-45a0b93ed96a122716815f84fa614f70586be4f0.tar.bz2 | |
Keep existing objectids when possible during merge. Refs #5527
| -rw-r--r-- | app/models/merge.rb | 20 | 
1 files changed, 10 insertions, 10 deletions
| diff --git a/app/models/merge.rb b/app/models/merge.rb index 27de5f30e..cef675101 100644 --- a/app/models/merge.rb +++ b/app/models/merge.rb @@ -134,9 +134,10 @@ class Merge < ActiveRecord::Base        referential_routes.each do |route|          existing_route = new.routes.find_by line_id: route.line_id, checksum: route.checksum          unless existing_route +          objectid = Chouette::Route.where(objectid: route.objectid).exists? ? nil : route.objectid            attributes = route.attributes.merge(              id: nil, -            objectid: "merge:route:#{route.checksum}", #FIXME +            objectid: objectid,              # line_id is the same              # all other primary must be changed              opposite_route_id: nil #FIXME @@ -147,10 +148,11 @@ class Merge < ActiveRecord::Base            # Stop Points            route_stop_points.each do |stop_point| +            objectid = Chouette::StopPoint.where(objectid: stop_point.objectid).exists? ? nil : stop_point.objectid              attributes = stop_point.attributes.merge(                id: nil,                route_id: nil, -              objectid: "merge:stop_point:#{route.checksum}-#{stop_point.position}", #FIXME +              objectid: objectid,              )              new_route.stop_points.build attributes @@ -191,10 +193,10 @@ class Merge < ActiveRecord::Base          existing_journey_pattern = new.journey_patterns.find_by route_id: existing_associated_route.id, checksum: journey_pattern.checksum          unless existing_journey_pattern +          objectid = Chouette::JourneyPattern.where(objectid: journey_pattern.objectid).exists? ? nil : journey_pattern.objectid            attributes = journey_pattern.attributes.merge(              id: nil, - -            objectid: "merge:journey_pattern:#{existing_associated_route.checksum}-#{journey_pattern.checksum}", #FIXME +            objectid: objectid,              # all other primary must be changed              route_id: existing_associated_route.id, @@ -236,10 +238,10 @@ class Merge < ActiveRecord::Base          existing_vehicle_journey = new.vehicle_journeys.find_by journey_pattern_id: existing_associated_journey_pattern.id, checksum: vehicle_journey.checksum          unless existing_vehicle_journey +          objectid = Chouette::VehicleJourney.where(objectid: vehicle_journey.objectid).exists? ? nil : vehicle_journey.objectid            attributes = vehicle_journey.attributes.merge(              id: nil, - -            objectid: "merge:vehicle_journey:#{existing_associated_journey_pattern.checksum}-#{vehicle_journey.checksum}", #FIXME +            objectid: objectid,              # all other primary must be changed              route_id: existing_associated_journey_pattern.route_id, @@ -333,10 +335,8 @@ class Merge < ActiveRecord::Base            existing_time_table = line.time_tables.find_by checksum: candidate_time_table.checksum            unless existing_time_table -            # FIXME use real ObjectId -            # Referential id is (temporary) used because the "same" TimeTable can be defined in several merged Referentials -            # and checksum are modified by clean/remove_periods! but this temporary object id is constant -            candidate_time_table.objectid = "merge:time_table:#{line.id}-#{candidate_time_table.checksum}-#{referential.id}:LOC" +            objectid = Chouette::TimeTable.where(objectid: time_table.objectid).exists? ? nil : time_table.objectid +            candidate_time_table.objectid = objectid              candidate_time_table.save! | 
