Class: TheFox::Timr::Model::ForeignIdDb

Inherits:
BasicModel
  • Object
show all
Includes:
Error
Defined in:
lib/timr/model/foreign_id_db.rb

Overview

Holds the Task IDs for each Foreign Task ID.

Basically it’s a Hash with structure:

“‘ foreign_id => task_id “`

Instance Attribute Summary collapse

Attributes inherited from BasicModel

#file_path, #has_changed

Instance Method Summary collapse

Methods inherited from BasicModel

#changed, create_path_by_id, #created=, #delete_file, find_file_by_id, get_id_from_path, #id, #id=, #load_from_file, #modified=, #post_save_to_file, #pre_load_from_file, #save_to_file, #short_id

Constructor Details

#initializeForeignIdDb

Returns a new instance of ForeignIdDb.



24
25
26
27
28
# File 'lib/timr/model/foreign_id_db.rb', line 24

def initialize
  super()
  
  @foreign_ids = Hash.new
end

Instance Attribute Details

#foreign_idsObject (readonly)

Holds all Foreign Task IDs.

“‘ @foreign_ids = task.id “`



22
23
24
# File 'lib/timr/model/foreign_id_db.rb', line 22

def foreign_ids
  @foreign_ids
end

Instance Method Details

#add_task(task, foreign_id) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/timr/model/foreign_id_db.rb', line 30

def add_task(task, foreign_id)
  task_id = task.id
  foreign_id = foreign_id.strip # needs clone
  
  if @foreign_ids[foreign_id]
    if @foreign_ids[foreign_id] == task_id
      # Foreign ID has already a match.
      false
    else
      raise ForeignIdError, "Want to add Foreign ID '#{foreign_id}' for Task '#{task.short_id}', but Foreign ID '#{foreign_id}' is already used by Task '#{@foreign_ids[foreign_id]}'."
    end
  else
    @foreign_ids[foreign_id] = task_id
    
    task.foreign_id = foreign_id
    
    # Mark ForeignIdDb as changed.
    changed
    
    true
  end
end

#get_task_id(foreign_id) ⇒ Object



53
54
55
56
57
# File 'lib/timr/model/foreign_id_db.rb', line 53

def get_task_id(foreign_id)
  foreign_id = foreign_id.strip # needs clone
  
  @foreign_ids[foreign_id]
end

#remove_task(task) ⇒ Object



59
60
61
62
63
64
65
66
# File 'lib/timr/model/foreign_id_db.rb', line 59

def remove_task(task)
  @foreign_ids.delete(task.foreign_id)
  
  task.foreign_id = nil
  
  # Mark ForeignIdDb as changed.
  changed
end