aboutsummaryrefslogtreecommitdiffstats
path: root/app/models/clean_up.rb
diff options
context:
space:
mode:
authorAlban Peignier2015-05-21 13:17:35 +0200
committerAlban Peignier2015-05-21 13:17:35 +0200
commit5d28c8cf436ebce60bc4a02a5be84b957be58879 (patch)
treec2f696d02599e94653b4699910c4585c68a084fc /app/models/clean_up.rb
parentf77f97682897b80b29b290d338d14fec1252f36f (diff)
downloadchouette-core-5d28c8cf436ebce60bc4a02a5be84b957be58879.tar.bz2
Refactor find_each with conditions option in CleanUp
Diffstat (limited to 'app/models/clean_up.rb')
-rw-r--r--app/models/clean_up.rb101
1 files changed, 63 insertions, 38 deletions
diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb
index 70c763146..1a03b0fb1 100644
--- a/app/models/clean_up.rb
+++ b/app/models/clean_up.rb
@@ -1,90 +1,115 @@
class CleanUp
- include ActiveModel::Validations
- include ActiveModel::Conversion
+ include ActiveModel::Validations
+ include ActiveModel::Conversion
extend ActiveModel::Naming
-
-
+
attr_accessor :expected_date, :keep_lines, :keep_stops , :keep_companies
attr_accessor :keep_networks, :keep_group_of_lines
-
+
validates_presence_of :expected_date
def initialize(attributes = {})
- attributes.each do |name, value|
- send("#{name}=", value)
- end
- end
-
- def persisted?
- false
- end
+ attributes.each do |name, value|
+ send("#{name}=", value)
+ end
+ end
+
+ def persisted?
+ false
+ end
+
+ def vehicle_journeys
+ Chouette::VehicleJourney.where "id not in (select distinct vehicle_journey_id from time_tables_vehicle_journeys)"
+ end
+
+ def journey_patterns
+ Chouette::JourneyPattern.where "id not in (select distinct journey_pattern_id from vehicle_journeys)"
+ end
+
+ def routes
+ Chouette::Route.where "id not in (select distinct route_id from journey_patterns)"
+ end
+
+ def lines
+ Chouette::Line.where "id not in (select distinct line_id from routes)"
+ end
+
+ def physical_stop_areas
+ Chouette::StopArea.physical
+ end
+
+ def commercial_stop_areas
+ Chouette::StopArea.commercial
+ end
+
+ def stop_place_stop_areas
+ Chouette::StopArea.stop_place
+ end
+
+ def itl_stop_areas
+ Chouette::StopArea.itl
+ end
def clean
# as foreign keys are presents , delete method can be used for faster performance
result = CleanUpResult.new
- # find and remove time_tables
+ # find and remove time_tables
tms = Chouette::TimeTable.validity_out_from_on?(Date.parse(expected_date))
result.time_table_count = tms.size
tms.each do |tm|
tm.delete
end
# remove vehiclejourneys without timetables
- Chouette::VehicleJourney.find_each(:conditions => "id not in (select distinct vehicle_journey_id from time_tables_vehicle_journeys)") do |vj|
+ vehicle_journeys.find_each do |vj|
if vj.time_tables.size == 0
result.vehicle_journey_count += 1
vj.delete
end
end
# remove journeypatterns without vehicle journeys
- Chouette::JourneyPattern.find_each(:conditions => "id not in (select distinct journey_pattern_id from vehicle_journeys)") do |jp|
+ journey_patterns.find_each do |jp|
if jp.vehicle_journeys.size == 0
result.journey_pattern_count += 1
jp.delete
end
end
- # remove routes without journeypatterns
- Chouette::Route.find_each(:conditions => "id not in (select distinct route_id from journey_patterns)") do |r|
+ # remove routes without journeypatterns
+ routes.find_each do |r|
if r.journey_patterns.size == 0
result.route_count += 1
r.delete
end
end
# if asked remove lines without routes
- if keep_lines == "0"
- Chouette::Line.find_each(:conditions => "id not in (select distinct line_id from routes)") do |l|
+ if keep_lines == "0"
+ lines.find_each do |l|
if l.routes.size == 0
result.line_count += 1
l.delete
end
end
end
- # if asked remove stops without children (recurse)
- if keep_stops == "0"
- Chouette::StopArea.find_each(:conditions => { :area_type => "BoardingPosition" }) do |bp|
+ # if asked remove stops without children (recurse)
+ if keep_stops == "0"
+ physical_stop_areas.find_each do |bp|
if bp.stop_points.size == 0
result.stop_count += 1
bp.delete
end
end
- Chouette::StopArea.find_each(:conditions => { :area_type => "Quay" }) do |q|
- if q.stop_points.size == 0
- result.stop_count += 1
- q.delete
- end
- end
- Chouette::StopArea.find_each(:conditions => { :area_type => "CommercialStopPoint" }) do |csp|
+ commercial_stop_areas.find_each do |csp|
if csp.children.size == 0
result.stop_count += 1
csp.delete
end
end
- Chouette::StopArea.find_each(:conditions => { :area_type => "StopPlace" }) do |sp|
+ stop_place_stop_areas.find_each do |sp|
if sp.children.size == 0
result.stop_count += 1
sp.delete
end
end
- Chouette::StopArea.find_each(:conditions => { :area_type => "ITL" }) do |itl|
+ itl_stop_areas.find_each do |itl|
if itl.routing_stops.size == 0
result.stop_count += 1
itl.delete
@@ -92,7 +117,7 @@ class CleanUp
end
end
# if asked remove companies without lines or vehicle journeys
- if keep_companies == "0"
+ if keep_companies == "0"
Chouette::Company.find_each do |c|
if c.lines.size == 0
result.company_count += 1
@@ -100,9 +125,9 @@ class CleanUp
end
end
end
-
+
# if asked remove networks without lines
- if keep_networks == "0"
+ if keep_networks == "0"
Chouette::Network.find_each do |n|
if n.lines.size == 0
result.network_count += 1
@@ -110,9 +135,9 @@ class CleanUp
end
end
end
-
+
# if asked remove group_of_lines without lines
- if keep_group_of_lines == "0"
+ if keep_group_of_lines == "0"
Chouette::GroupOfLine.find_each do |n|
if n.lines.size == 0
result.group_of_line_count += 1
@@ -122,5 +147,5 @@ class CleanUp
end
result
end
-
+
end