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