aboutsummaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/models/chouette/footnote.rb15
-rw-r--r--app/models/chouette/vehicle_journey_at_stop.rb1
-rw-r--r--app/models/concerns/checksum_support.rb27
3 files changed, 30 insertions, 13 deletions
diff --git a/app/models/chouette/footnote.rb b/app/models/chouette/footnote.rb
index 00a2b223a..1664faf23 100644
--- a/app/models/chouette/footnote.rb
+++ b/app/models/chouette/footnote.rb
@@ -1,24 +1,13 @@
class Chouette::Footnote < Chouette::ActiveRecord
+ include ChecksumSupport
+
belongs_to :line, inverse_of: :footnotes
has_and_belongs_to_many :vehicle_journeys, :class_name => 'Chouette::VehicleJourney'
validates_presence_of :line
- before_save :update_checksum
def checksum_attributes
attrs = ['code', 'label']
self.slice(*attrs).values
end
-
- def current_checksum_source
- source = self.checksum_attributes.map!{ |x| x || '-' }
- source.join('|')
- end
-
- def update_checksum
- self.checksum_source = self.current_checksum_source
- if self.checksum_source_changed?
- self.checksum = Digest::SHA256.new.hexdigest(self.checksum_source)
- end
- end
end
diff --git a/app/models/chouette/vehicle_journey_at_stop.rb b/app/models/chouette/vehicle_journey_at_stop.rb
index 5dfec8352..4518d09cf 100644
--- a/app/models/chouette/vehicle_journey_at_stop.rb
+++ b/app/models/chouette/vehicle_journey_at_stop.rb
@@ -2,6 +2,7 @@ module Chouette
class VehicleJourneyAtStop < ActiveRecord
include ForBoardingEnumerations
include ForAlightingEnumerations
+ include ChecksumSupport
# FIXME http://jira.codehaus.org/browse/JRUBY-6358
self.primary_key = "id"
diff --git a/app/models/concerns/checksum_support.rb b/app/models/concerns/checksum_support.rb
new file mode 100644
index 000000000..13c476607
--- /dev/null
+++ b/app/models/concerns/checksum_support.rb
@@ -0,0 +1,27 @@
+module ChecksumSupport
+ extend ActiveSupport::Concern
+ SEPARATOR = '|'
+ VALUE_FOR_NIL_ATTRIBUTE = '-'
+
+ included do
+ before_save :set_current_checksum_source, :update_checksum
+ end
+
+ def checksum_attributes
+ self.attributes.values
+ end
+
+ def current_checksum_source
+ self.checksum_attributes.map!{ |x| x || VALUE_FOR_NIL_ATTRIBUTE }.join(SEPARATOR)
+ end
+
+ def set_current_checksum_source
+ self.checksum_source = self.current_checksum_source
+ end
+
+ def update_checksum
+ if self.checksum_source_changed?
+ self.checksum = Digest::SHA256.new.hexdigest(self.checksum_source)
+ end
+ end
+end