Class: Fin::ChangedList

Inherits:
IndexedList
  • Object
show all
Defined in:
lib/fin/changed_list.rb

Overview

Represents IndexedList that tracks its own changes (dirty-tracking), and updates (series of changes resulting in a consistent state)

Direct Known Subclasses

ContainerList

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeChangedList

Returns a new instance of ChangedList.



20
21
22
23
24
25
# File 'lib/fin/changed_list.rb', line 20

def initialize
  @updated = true
  @changed = true
  @change_count = 0
  super
end

Instance Attribute Details

#change_countObject

Number of changes (successful item additions or removals)



13
14
15
# File 'lib/fin/changed_list.rb', line 13

def change_count
  @change_count
end

#changedObject

Changed attribute is set automatically, whenever item is actually added or deleted from list (please note, change may leave data in inconsistent state!)



10
11
12
# File 'lib/fin/changed_list.rb', line 10

def changed
  @changed
end

#updatedObject

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)



18
19
20
# File 'lib/fin/changed_list.rb', line 18

def updated
  @updated
end

Instance Method Details

#add?(item) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
30
31
32
33
# File 'lib/fin/changed_list.rb', line 27

def add? item
  if super
    @changed = true # Mark List as changed
    @change_count += 1
    item
  end
end

#remove?(item) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
39
40
41
# File 'lib/fin/changed_list.rb', line 35

def remove? item
  if super
    @changed = true # Mark List as changed
    @change_count += 1
    item
  end
end

#update_notedObject

Observers inform list that it’s recent changes are reflected



44
45
46
47
# File 'lib/fin/changed_list.rb', line 44

def update_noted
  @updated = false
  @changed = false
end