aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichel Etienne2012-08-30 11:48:19 +0200
committerMichel Etienne2012-08-30 11:48:19 +0200
commit70d1921703fafa93346826245bc1a6ee35c44f53 (patch)
treee8029728538959f21c08b1ab0385bc4257320a5b
parentdba8c2d87e6a81fd92cac8450ac2bad5842011ac (diff)
downloadchouette-core-70d1921703fafa93346826245bc1a6ee35c44f53.tar.bz2
refactor clean_up
-rw-r--r--app/controllers/clean_ups_controller.rb6
-rw-r--r--app/models/clean_up.rb65
-rw-r--r--app/models/clean_up_result.rb51
-rw-r--r--config/locales/clean_ups.yml18
4 files changed, 77 insertions, 63 deletions
diff --git a/app/controllers/clean_ups_controller.rb b/app/controllers/clean_ups_controller.rb
index 4fe980266..fde015efd 100644
--- a/app/controllers/clean_ups_controller.rb
+++ b/app/controllers/clean_ups_controller.rb
@@ -9,10 +9,10 @@ class CleanUpsController < ChouetteController
flash[:alert] = clean_up.errors.full_messages.join("<br/>")
else
begin
- clean_up.clean
- flash[:notice] = clean_up.notice.join("<br/>")
+ result = clean_up.clean
+ flash[:notice] = result.notice.join("<br/>")
rescue
- flash[:alert] = t('clean_ups.failure')
+ flash[:alert] = t('clean_ups.failure') + $!
end
end
redirect_to referential_path(@referential)
diff --git a/app/models/clean_up.rb b/app/models/clean_up.rb
index f96bb02f6..5b3d346ff 100644
--- a/app/models/clean_up.rb
+++ b/app/models/clean_up.rb
@@ -5,8 +5,6 @@ class CleanUp
attr_accessor :expected_date, :keep_lines, :keep_stops , :keep_companies, :keep_networks
- attr_accessor :time_table_count,:vehicle_journey_count,:journey_pattern_count,:route_count,:line_count
- attr_accessor :stop_count,:company_count,:network_count
validates_presence_of :expected_date
@@ -20,132 +18,97 @@ class CleanUp
false
end
- def notice
- a = Array.new
- a << I18n.t('clean_ups.success_tm', :count => time_table_count.to_s)
- if (vehicle_journey_count > 0)
- a << I18n.t('clean_ups.success_vj', :count => vehicle_journey_count.to_s)
- end
- if (journey_pattern_count > 0)
- a << I18n.t('clean_ups.success_jp', :count => journey_pattern_count.to_s)
- end
- if (route_count > 0)
- a << I18n.t('clean_ups.success_r', :count => route_count.to_s)
- end
- if (line_count > 0)
- a << I18n.t('clean_ups.success_l', :count => line_count.to_s)
- end
- if (company_count > 0)
- a << I18n.t('clean_ups.success_c', :count => company_count.to_s)
- end
- if (network_count > 0)
- a << I18n.t('clean_ups.success_n', :count => network_count.to_s)
- end
- if (stop_count > 0)
- a << I18n.t('clean_ups.success_sa', :count => stop_count.to_s)
- end
- a
-
- end
-
def clean
-
+ result = CleanUpResult.new
# find and remove time_tables
tms = Chouette::TimeTable.expired_on(Date.parse(expected_date))
- self.time_table_count = tms.size
+ result.time_table_count = tms.size
tms.each do |tm|
tm.destroy
end
# remove vehiclejourneys without timetables
- self.vehicle_journey_count = 0
Chouette::VehicleJourney.find_each(:conditions => "id not in (select distinct vehicle_journey_id from time_tables_vehicle_journeys)") do |vj|
if vj.time_tables.size == 0
- self.vehicle_journey_count += 1
+ result.vehicle_journey_count += 1
vj.destroy
end
end
# remove journeypatterns without vehicle journeys
- self.journey_pattern_count = 0
Chouette::JourneyPattern.find_each(:conditions => "id not in (select distinct journey_pattern_id from vehicle_journeys)") do |jp|
if jp.vehicle_journeys.size == 0
- self.journey_pattern_count += 1
+ result.journey_pattern_count += 1
jp.destroy
end
end
# remove routes without journeypatterns
- self.route_count = 0
Chouette::Route.find_each(:conditions => "id not in (select distinct route_id from journey_patterns)") do |r|
if r.journey_patterns.size == 0
- self.route_count += 1
+ result.route_count += 1
r.destroy
end
end
# if asked remove lines without routes
- self.line_count = 0
if keep_lines == "0"
Chouette::Line.find_each(:conditions => "id not in (select distinct line_id from routes)") do |l|
if l.routes.size == 0
- self.line_count += 1
+ result.line_count += 1
l.destroy
end
end
end
# if asked remove stops without children (recurse)
- self.stop_count = 0
if keep_stops == "0"
Chouette::StopArea.find_each(:conditions => { :area_type => "BoardingPosition" }) do |bp|
if bp.stop_points.size == 0
- self.stop_count += 1
+ result.stop_count += 1
bp.destroy
end
end
Chouette::StopArea.find_each(:conditions => { :area_type => "Quay" }) do |q|
if q.stop_points.size == 0
- self.stop_count += 1
+ result.stop_count += 1
q.destroy
end
end
Chouette::StopArea.find_each(:conditions => { :area_type => "CommercialStopPoint" }) do |csp|
if csp.children.size == 0
- self.stop_count += 1
+ result.stop_count += 1
csp.destroy
end
end
Chouette::StopArea.find_each(:conditions => { :area_type => "StopPlace" }) do |sp|
if sp.children.size == 0
- self.stop_count += 1
+ result.stop_count += 1
sp.destroy
end
end
Chouette::StopArea.find_each(:conditions => { :area_type => "ITL" }) do |itl|
if itl.routing_stops.size == 0
- self.stop_count += 1
+ result.stop_count += 1
itl.destroy
end
end
end
# if asked remove companies without lines or vehicle journeys
- self.company_count = 0
if keep_companies == "0"
Chouette::Company.find_each do |c|
if c.lines.size == 0
- self.company_count += 1
+ result.company_count += 1
c.destroy
end
end
end
# if asked remove networks without lines
- self.network_count = 0
if keep_networks == "0"
Chouette::Network.find_each do |n|
if n.lines.size == 0
- self.network_count += 1
+ result.network_count += 1
n.destroy
end
end
end
-
+ result
end
end
diff --git a/app/models/clean_up_result.rb b/app/models/clean_up_result.rb
new file mode 100644
index 000000000..9151decaf
--- /dev/null
+++ b/app/models/clean_up_result.rb
@@ -0,0 +1,51 @@
+class CleanUpResult
+ include ActiveModel::Conversion
+ extend ActiveModel::Naming
+
+ attr_accessor :time_table_count,:vehicle_journey_count,:journey_pattern_count,:route_count,:line_count
+ attr_accessor :stop_count,:company_count,:network_count
+
+ def initialize()
+ self.time_table_count = 0
+ self.vehicle_journey_count = 0
+ self.journey_pattern_count = 0
+ self.route_count = 0
+ self.line_count = 0
+ self.stop_count = 0
+ self.company_count = 0
+ self.network_count = 0
+ end
+
+ def persisted?
+ false
+ end
+
+ def notice
+ a = Array.new
+ a << I18n.t('clean_ups.success_tm', :count => time_table_count.to_s)
+ if (vehicle_journey_count > 0)
+ a << I18n.t('clean_ups.success_vj', :count => vehicle_journey_count.to_s)
+ end
+ if (journey_pattern_count > 0)
+ a << I18n.t('clean_ups.success_jp', :count => journey_pattern_count.to_s)
+ end
+ if (route_count > 0)
+ a << I18n.t('clean_ups.success_r', :count => route_count.to_s)
+ end
+ if (line_count > 0)
+ a << I18n.t('clean_ups.success_l', :count => line_count.to_s)
+ end
+ if (company_count > 0)
+ a << I18n.t('clean_ups.success_c', :count => company_count.to_s)
+ end
+ if (network_count > 0)
+ a << I18n.t('clean_ups.success_n', :count => network_count.to_s)
+ end
+ if (stop_count > 0)
+ a << I18n.t('clean_ups.success_sa', :count => stop_count.to_s)
+ end
+ a
+
+ end
+
+end
diff --git a/config/locales/clean_ups.yml b/config/locales/clean_ups.yml
index 470ee19a6..8ac843f49 100644
--- a/config/locales/clean_ups.yml
+++ b/config/locales/clean_ups.yml
@@ -26,15 +26,15 @@ en:
expected_date: "value included in clean up"
fr:
clean_ups:
- success_tm: "%{count} calendriers supprimés"
- success_vj: "%{count} courses supprimées"
- success_jp: "%{count} missions supprimées"
- success_r: "%{count} séquences d'arrêt supprimées"
- success_l: "%{count} lignes supprimées"
- success_sa: "%{count} arrêts supprimés"
- success_c: "%{count} transporteurs supprimés"
- success_n: "%{count} réseaux supprimés"
- failure: "Echec de la purge"
+ success_tm: "%{count} calendrier(s) supprimé(s)"
+ success_vj: "%{count} course(s) supprimée(s)"
+ success_jp: "%{count} mission(s) supprimée(s)"
+ success_r: "%{count} séquence(s) d'arrêt supprimée(s)"
+ success_l: "%{count} ligne(s) supprimée(s)"
+ success_sa: "%{count} arrêt(s) supprimé(s)"
+ success_c: "%{count} transporteur(s) supprimé(s)"
+ success_n: "%{count} réseau(x) supprimé(s)"
+ failure: "Echec de la purge "
actions:
clean_up: "Purger"
confirm: "La purge détruit les calendriers se finissant au plus tard à la date indiquée \npuis en cascade les objets qui n'ont pas ou plus de calendrier\nConfirmer cette action SVP"