Class: Lafcadio::Committer

Inherits:
Object
  • Object
show all
Defined in:
lib/lafcadio/objectStore/Committer.rb

Overview

:nodoc:

Constant Summary collapse

INSERT =
1
UPDATE =
2
DELETE =
3

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(dbObject, dbBridge) ⇒ Committer

Returns a new instance of Committer.



11
12
13
14
15
16
# File 'lib/lafcadio/objectStore/Committer.rb', line 11

def initialize(dbObject, dbBridge)
	@dbObject = dbObject
	@dbBridge = dbBridge
	@objectStore = Context.instance.getObjectStore
	@commitType = nil
end

Instance Attribute Details

#commitTypeObject (readonly)

Returns the value of attribute commitType.



9
10
11
# File 'lib/lafcadio/objectStore/Committer.rb', line 9

def commitType
  @commitType
end

#dbObjectObject (readonly)

Returns the value of attribute dbObject.



9
10
11
# File 'lib/lafcadio/objectStore/Committer.rb', line 9

def dbObject
  @dbObject
end

Instance Method Details

#executeObject



28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/lafcadio/objectStore/Committer.rb', line 28

def execute
	setCommitType
	@dbObject.lastCommit = getLastCommit
	@dbObject.preCommitTrigger
	if @dbObject.delete
		dependentClasses = @dbObject.objectType.dependentClasses
		dependentClasses.keys.each { |aClass|
			field = dependentClasses[aClass]
			collection = @objectStore.getFiltered( aClass.name, @dbObject,
																						 field.name )
			collection.each { |dependentObject|
				if field.deleteCascade
					dependentObject.delete = true
				else
					dependentObject.send( field.name + '=', nil )
				end
				@objectStore.commit(dependentObject)
			}
		}
	end
	@dbBridge.commit @dbObject
	unless @dbObject.pkId
		@dbObject.pkId = @dbBridge.lastPkIdInserted
	end
	@dbObject.postCommitTrigger
end

#getLastCommitObject



55
56
57
58
59
60
61
62
63
# File 'lib/lafcadio/objectStore/Committer.rb', line 55

def getLastCommit
	if @dbObject.delete
		DomainObject::COMMIT_DELETE
	elsif @dbObject.pkId
		DomainObject::COMMIT_EDIT
	else
		DomainObject::COMMIT_ADD
	end
end

#setCommitTypeObject



18
19
20
21
22
23
24
25
26
# File 'lib/lafcadio/objectStore/Committer.rb', line 18

def setCommitType
	if @dbObject.delete
		@commitType = DELETE
	elsif @dbObject.pkId
		@commitType = UPDATE
	else
		@commitType = INSERT
	end
end