I just cleared SCJD URLyBird assignment.
Here's my score:
General Con: 100 90
Documentation: 70 70
OOD: 30 30
GUI: 40 31
Locking: 80 80
Data Store: 40 40
Network Server: 40 40
Total: 400 381
Breakdown of my choices:
-3-tier layering (thin client layer, service layer, db layer)
-Networking with RMI (easier to use, simpler resulting code for junior level programmer understanding)
-Control database record lock owner by running thread
-Initialize DBSchema class at startup by reading database file header. Helps make the code more flexible if schema changes.
-UI implemented with the MVP pattern. UI components are kept simple, search fields are free text fields, table not sortable.
-48 hours rule not implemented, I decided that would restrict the software too much, users manually enforce this in their business process.
-primary key of the record is the index position in the file (preferred simple solution again)
-Locking: due to DBMain interface had to assume that client code to DBMain is well-behaved and does always follow the right method call sequence.
This well-behaveness is enforced in the service layer which is assumed to be the sole client to DBMain.
-javadoc, followed rigourously all javadoc best practices.
-reviewed code with checkstyle plugin with sun coding convention template.
I'd like to thank you all for the useful information you provided in this forum.