Class: TransactionProcessor

Inherits:
Object
  • Object
show all
Defined in:
lib/ObjectModel/Repository/TransactionProcessor.rb

Instance Method Summary collapse

Constructor Details

#initialize(repository, transaction) ⇒ TransactionProcessor

Returns a new instance of TransactionProcessor.



4
5
6
# File 'lib/ObjectModel/Repository/TransactionProcessor.rb', line 4

def initialize repository, transaction
  @repository, @transaction = repository, transaction
end

Instance Method Details

#check_outdatedObject



8
9
10
11
12
13
14
15
16
# File 'lib/ObjectModel/Repository/TransactionProcessor.rb', line 8

def check_outdated
  outdated = []
  @transaction.copies.each do |entity_id, c| 
    next if c.new?
    e = @repository.by_id(entity_id)
    outdated << entity_id if c.om_version != e.om_version       
  end
  raise_without_self OutdatedError.new(outdated), "Outdated Entities: ['#{outdated.join('\', \'')}']", ObjectModel unless outdated.empty?
end

#persistObject



26
27
28
29
30
31
32
33
34
35
# File 'lib/ObjectModel/Repository/TransactionProcessor.rb', line 26

def persist   
  @transaction.copies.each do |entity_id, copy| 
    entity = @transaction.resolve entity_id
    if copy.deleted?
      AnEntity::EntityType.delete entity, @repository.storage          
    else
      AnEntity::EntityType.persist copy, entity, @repository.storage
    end
  end          
end

#write_backObject



18
19
20
21
22
23
24
# File 'lib/ObjectModel/Repository/TransactionProcessor.rb', line 18

def write_back
  @transaction.copies.each do |entity_id, copy| 
    next if copy.deleted?
    entity = @transaction.resolve entity_id
    AnEntity::EntityType.write_back copy, entity
  end
end