aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorXinhui2016-09-02 11:45:19 +0200
committerXinhui2016-09-02 11:45:23 +0200
commit4ae538b87f180d69df8768d6ffdd067a3b1beab5 (patch)
tree710114f17f724b5f1792613ddfa75c6689d8d202 /lib
parent3f7531ddfa0d0c0e359d87baffa7097c9ee44d1a (diff)
downloadchouette-core-4ae538b87f180d69df8768d6ffdd067a3b1beab5.tar.bz2
Reflex store xml + purge deleted since last sync
Diffstat (limited to 'lib')
-rw-r--r--lib/stif/reflex_synchronization.rb52
1 files changed, 35 insertions, 17 deletions
diff --git a/lib/stif/reflex_synchronization.rb b/lib/stif/reflex_synchronization.rb
index 3b43fd5df..580a41c66 100644
--- a/lib/stif/reflex_synchronization.rb
+++ b/lib/stif/reflex_synchronization.rb
@@ -11,8 +11,9 @@ module Stif
end
def synchronize
- start = Time.now
- client = Reflex::API.new
+ start = Time.now
+ client = Reflex::API.new
+ processed = []
['getOR', 'getOP'].each do |method|
results = client.process method
@@ -25,7 +26,7 @@ module Stif
stop_areas = results[:Quay].merge(results[:StopPlace])
start = Time.now
stop_areas.each do |id, entry|
- self.create_or_update_stop_area entry
+ processed << self.create_or_update_stop_area(entry).objectid
end
Rails.logger.info "Reflex:sync - Create or update StopArea done in #{Time.now - start} seconds"
@@ -36,6 +37,19 @@ module Stif
end
Rails.logger.info "Reflex:sync - StopArea set parent done in #{Time.now - start} seconds"
end
+ # Purge deleted stop_area
+ self.set_deleted_stop_area processed.uniq
+ end
+
+ def set_deleted_stop_area processed
+ Rails.logger.info "Reflex:sync - StopArea start deleted_stop_area"
+ start = Time.now
+ deleted = Chouette::StopArea.pluck(:objectid).uniq - processed
+ deleted.each_slice(50) do |object_ids|
+ Chouette::StopArea.where(objectid: object_ids).update_all(deleted_at: Time.now)
+ end
+ Rails.logger.info "Reflex:sync - StopArea #{deleted.size} stop_area deleted since last sync"
+ Rails.logger.info "Reflex:sync - StopArea purge deleted in #{Time.now - start} seconds"
end
def stop_area_set_parent entry
@@ -60,12 +74,15 @@ module Stif
def create_or_update_access_point entry, stop_area
access = Chouette::AccessPoint.find_or_create_by(objectid: "dummy:AccessPoint:#{entry.id.tr(':', '')}")
entry.version = entry.version.to_i + 1 if access.persisted?
- access.name = entry.name
- access.stop_area = stop_area
- access.object_version = entry.version
- access.zip_code = entry.postal_code
- access.city_name = entry.city
- access.access_type = entry.area_type
+ access.stop_area = stop_area
+ {
+ :name => :name,
+ :access_type => :area_type,
+ :object_version => :version,
+ :zip_code => :postal_code,
+ :city_name => :city,
+ :import_xml => :xml
+ }.each do |k, v| access[k] = entry.try(v) end
access.save if access.changed?
end
@@ -73,16 +90,17 @@ module Stif
stop = Chouette::StopArea.find_or_create_by(objectid: "dummy:StopArea:#{entry.id.tr(':', '')}")
# Hack, on save object_version will be incremented by 1
entry.version = entry.version.to_i + 1 if stop.persisted?
-
stop.stop_area_referential = self.defaut_referential
- stop.name = entry.name
- stop.creation_time = entry.created
- stop.area_type = entry.area_type
- stop.object_version = entry.version
- stop.zip_code = entry.postal_code
- stop.city_name = entry.city
+ {
+ :name => :name,
+ :creation_time => :created,
+ :area_type => :area_type,
+ :object_version => :version,
+ :zip_code => :postal_code,
+ :city_name => :city,
+ :import_xml => :xml
+ }.each do |k, v| stop[k] = entry.try(v) end
stop.save if stop.changed?
-
# Create AccessPoint from StopPlaceEntrance
if entry.try(:entrances)
entry.entrances.each do |entrance|