Class CLIENT
class CLIENT
inherit
DISPLAYABLE
feature
actual_customer: CUSTOMER
actual_good: GOOD
actual_order: ORDER
customers: ARRAY [CUSTOMER];
goods: ARRAY [GOOD];
orders: ARRAY [ORDER];
save_customer (c: CUSTOMER) is
do
server.save_customer (c);
end;
save_good (c: GOOD) is
do
server.save_good (c)
end;
save_order (c: ORDER) is
do
server.save_order (c)
end
---- create new items ------------
empty_order is
do
!!actual_order.make
end
empty_customer is
do
!!actual_customer.make
end
empty_good is
do
!!actual_good.make
end
server: SERVER
open is
-- load and initialize the server
-- and the attached data base
local
f: FILE
fs: FILE_SYSTEM
do
!!fs.make
if fs.file_exists ("store") then
!!f.make_open_read_write ("store");
!!server.make (f);
server ?= server.retrieved (f);
if server /= void then
print ("Object retrieved ");
else
print ("Could not load the object")
end
else
!!f.make_create_read_write ("store");
!!server.make (f);
server.init_store;
server.flush;
end -- if exists
orders := server.orders;
customers := server.customers;
goods := server.goods;
end
end -- class CLIENT
Class SERVER
class SERVER
inherit
STORABLE
creation
make
feature
make (f: FILE) is
do
my_file := f
end
save_customer (c: CUSTOMER) is
do
search (customers, c.number);
-- if not found, assign next free number
if not found then
c.set_number (customers.upper+1)
end
customers.force (c, c.number)
print ("customer was saved with number");
io.put_integer (c.number);
end
save_good (c: GOOD) is
do
search (goods, c.number);
-- if not found, assign next free number
if not found then
c.set_number (goods.upper+1)
end
goods.force (c, c.number)
print ("good was saved with number");
io.put_integer (c.number);
end
save_order (c: ORDER) is
do
search (orders, c.number);
-- if not found, assign next free number
if not found then
c.set_number (orders.upper+1)
end
orders.force (c, c.number)
print ("order was saved with number");
io.put_integer (c.number);
end
search (a: ARRAY [DB_ITEM]; c: INTEGER) is
do
from
index := a.lower
found := false
until
found or else index > a.upper
loop
if a.item(index).number = c then
found := true
else
index := index + 1
end -- if
end -- loop
end -- do
init_store is
do
!!customers.make (1, 0);
!!goods.make (1, 0);
!!orders.make (1, 0);
end
customers : ARRAY [CUSTOMER]
goods : ARRAY [GOOD]
orders : ARRAY [ORDER]
flush, close is
-- store the databases
require
my_file /= void
do
basic_store (my_file)
end
feature {NONE} -- only for implementation purposes
index: INTEGER
found: BOOLEAN
my_file: FILE
end -- class SERVER
Copyright ©
Object Tools -- info@object-tools.com
Last updated: $Date: 2005/02/02 11:51:14 $