Persistence code samples

From EiffelStudio: an EiffelSoftware project
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Here the main classes of the framework are sketched.

You can download the source code here (TODO: provide a link to the sources)

Simplified BON diagram

PERSISTENCE_MANAGER

class
	PERSISTENCE_MANAGER
 
feature -- Access
 
	medium: PERSISTENCE_MEDIUM -- the chosen medium
 
	format: PERSISTENCE_FORMAT	-- the chosen format
 
feature -- Basic operations
 
	store (an_object:ANY)
			-- persists an_object using the format and medium stored by current object
		require
			an_object_exists:an_object /= Void
			medium_exists: medium /= Void
		do
			format.store(an_object,medium)
		end
 
	retrieve:ANY
			-- retrieves an_object using the medium and format stored by current object
		require
			medium_exists: medium /= Void
		do
			Result:=format.retrieve(medium)
		end
end

BINARY_SERIALIZATION_MANAGER

class
	BINARY_SERIALIZATION_MANAGER
 
inherit
	PERSISTENCE_MANAGER
 
create
	make
 
feature -- Creation
 
	make (file_name: STRING)
			-- Creation procedure
		require
			file_name_exists: file_name /= Void
		do
			create {FILE_MEDIUM} medium.make (file_name)
			create {INDEPENDENT_BINARY_FORMAT} format
		ensure
			medium_exists: medium /= Void
			format_exists: format /= Void
		end
 
end

PERSISTENCE_FORMAT

BINARY_FORMAT

INDEPENDENT_BINARY_FORMAT

class
	INDEPENDENT_BINARY_FORMAT
 
inherit
	BINARY_FORMAT
 
feature -- Access
 
	optimized_for_retrieval:BOOLEAN
 
feature -- Status setting
 
	set_optimized_for_retrieval(is_optimized_for_retrieval:BOOLEAN)
	do
		optimized_for_retrieval:=is_optimized_for_retrieval
	ensure
		optimized_for_retrieval_set:optimized_for_retrieval=is_optimized_for_retrieval
	end
 
feature -- Basic operations
 
	store_now(object_to_store:ANY)
	do
		store_handler.independent_store(object_to_store,serializer,optimized_for_retrieval)
	end
 
end

PERSISTENCE_MEDIUM

FILE_MEDIUM