Server:
i gave a small GUI for starting/ stopping server. Once start button is presses it contacts a RemoteServerManager which creates an instance of RemoteServerImpl. This Impl class will in turn create an instance of RemoteDataExtension.
RemoteDataExtension extends DataExtension which in turn extends Data. DataExtension will provide implementation of searchcriteria and other methods needed in both modes.
lock, unlock will be placed in RemoteDataExtension. I wont lock records for local client. locking was done in server.
When server shuts down it will issue a lock(-1).
Client:
My client will call a helper class which depending on modes(local/remote) which decides the class (DataExtension->local or RemoteServerImpl ->remote) to be contected with.
I will display the mode in status bar.
My search critiria can hold any no of combinations. I can add any no. of criteria without affecting my search criteria code. it will simply work.
My gui was once screen GUI. i had 3 panels
panel 1 i had drop downs for search criteria.
panel 2 jtable
panel 3 ticket reservation components.
I think what ever flow i did was good.
I had extra generic class for Error handling(Logger.java). Then Util.java for displaying alert and other generic stuff. i had a properites file for setting properties and logging mode. A class to read data from properties file. [ i guess these was too much for a small project like fbn . i might have lost points for these extra stuff. i explained why i did that ]
My directory structure was under scjd\starting i had build, docs, etc, lib, suncertify[ client, db, interfaces, server,util].
My documentation was good i briefed everything i did including the reason for using import a.b.c; instead of a.b.*; I gave simple class diagram.
locking :
i used in-memory array for storing data.(might have lost points for this too) when clients updates any record it gets updated in 2 places. so that when a new client comes we can serve him quickly.
moreover i will lock the records only after ensuring i have enough seats to be booked avoiding expensing synch operations.
i guess i didnt miss anything. pls feel free to tell me the mistakes i made.
- Reshma