Sha256: 9693730686eb6a918a8bacf06072ed99e62ebbb9186ae1e3aa6ec1c6613c1882
Contents?: true
Size: 1.25 KB
Versions: 1
Compression:
Stored size: 1.25 KB
Contents
require 'fin/indexed_list' module Fin # Represents IndexedList that tracks its own changes (dirty-tracking), # and updates (series of changes resulting in a consistent state) class ChangedList < IndexedList # Changed attribute is set automatically, whenever item is actually added # or deleted from list (please note, change may leave data in inconsistent state!) attr_accessor :changed # Number of changes (successful item additions or removals) attr_accessor :change_count # Updated attribute should be set EXTERNALLY - only when data update # transaction is completed, and list data is known to be consistent # (e.g., when onStreamDataEnd event fires for DataStream) attr_accessor :updated def initialize @updated = true @changed = true @change_count = 0 super end def add? item if super @changed = true # Mark List as changed @change_count += 1 item end end def remove? item if super @changed = true # Mark List as changed @change_count += 1 item end end # Observers inform list that it's recent changes are reflected def update_noted @updated = false @changed = false end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
fin-0.1.0 | lib/fin/changed_list.rb |