Revisited the persistence layer.

Simplified schema to focus on user and node.
Now possible to have sqlite via ODBC and/or mysql support, and select using configuration file.
Updated demo example.
This commit is contained in:
2015-01-27 19:48:37 +01:00
parent db9e40cec4
commit 7d5869f3b9
71 changed files with 2665 additions and 3313 deletions

View File

@@ -3,8 +3,8 @@ note
CMS abstraction for CMS content entity, named "node".
]"
status: "draft"
date: "$Date$"
revision: "$Revision$"
date: "$Date: 2015-01-27 19:15:02 +0100 (mar., 27 janv. 2015) $"
revision: "$Revision: 96542 $"
class
CMS_NODE
@@ -83,8 +83,8 @@ feature -- Access
author: detachable CMS_USER
-- Author of current node.
collaborators: detachable LIST[CMS_USER]
-- Users contributed to current Node.
-- collaborators: detachable LIST[CMS_USER]
-- -- Users contributed to current Node.
feature -- status report
@@ -177,18 +177,18 @@ feature -- Element change
auther_set: author = u
end
add_collaborator (a_user: CMS_USER)
-- Add collaborator `a_user' to the collaborators list.
local
lst: like collaborators
do
lst := collaborators
if lst = Void then
create {ARRAYED_SET [CMS_USER]} lst.make (1)
collaborators := lst
end
lst.force (a_user)
end
-- add_collaborator (a_user: CMS_USER)
-- -- Add collaborator `a_user' to the collaborators list.
-- local
-- lst: like collaborators
-- do
-- lst := collaborators
-- if lst = Void then
-- create {ARRAYED_SET [CMS_USER]} lst.make (1)
-- collaborators := lst
-- end
-- lst.force (a_user)
-- end
note
copyright: "2011-2014, Javier Velilla, Jocelyn Fiat, Eiffel Software and others"

View File

@@ -2,8 +2,8 @@ note
description: "[
Interface representing a USER in the CMS system.
]"
date: "$Date$"
revision: "$Revision$"
date: "$Date: 2015-01-27 19:15:02 +0100 (mar., 27 janv. 2015) $"
revision: "$Revision: 96542 $"
class
CMS_USER
@@ -13,19 +13,38 @@ inherit
DEBUG_OUTPUT
create
make
make,
make_with_id -- MAYBE: export to CMS_STORAGE
feature {NONE} -- Initialization
make (a_name: READABLE_STRING_32)
-- Create an object with name `a_name'.
require
a_name_not_empty: not a_name.is_whitespace
do
name := a_name
create creation_date.make_now_utc
initialize
ensure
name_set: name = a_name
end
make_with_id (a_id: INTEGER_64)
require
a_id_valid: a_id > 0
do
id := a_id
name := {STRING_32} ""
initialize
ensure
id_set: id = a_id
end
initialize
do
create creation_date.make_now_utc
end
feature -- Access
id: INTEGER_64
@@ -35,7 +54,10 @@ feature -- Access
-- User name.
password: detachable READABLE_STRING_32
-- User password.
-- User password (plain text password).
hashed_password: detachable READABLE_STRING_8
-- Hashed user password.
email: detachable READABLE_STRING_32
-- User email.
@@ -113,8 +135,20 @@ feature -- Change element
-- Set `password' with `a_password'.
do
password := a_password
hashed_password := Void
ensure
password_set: password = a_password
hashed_password_void: hashed_password = Void
end
set_hashed_password (a_hashed_password: like hashed_password)
-- Set `hashed_password' with `a_hashed_password'.
do
hashed_password := a_hashed_password
password := Void
ensure
password_void: password = Void
hashed_password_set: hashed_password = a_hashed_password
end
set_email (a_email: like email)
@@ -178,6 +212,10 @@ feature -- Change element: data
end
end
invariant
id_or_name_set: id > 0 or else not name.is_whitespace
note
copyright: "2011-2014, Javier Velilla, Jocelyn Fiat, Eiffel Software and others"
license: "Eiffel Forum License v2 (see http://www.eiffel.com/licensing/forum.txt)"