It took me a loooooong time to complete the whole thing - the better the feeling when it's finally completed.
I guess the effective time working on the assignement must have been 200 hours, but I spent a lot of time besides in readings, tutorials and prototypes. Professionnally, I'm not writing a lot of Java (I'm mostly in the databases fields) and I had a pretty steep learning curve.
Score in details:
General Considerations (maximum = 100): 100
Documentation (maximum = 70): 70
O-O Design (maximum = 30): 30
GUI (maximum = 40): 31
Locking (maximum = 80): 80 Data store (maximum = 40): 40
Network server (maximum = 40): 30
Javaranch threads helped me a lot. And, of course, Andrew Monkhouse and Terry Camerlengo's SCJD Exam with J2SE 5.
I ended up with 41 classes and about 4300 lines of code (incl. comments and javadoc comments, which I made pretty extensively).
Main patterns used: factory (whenever needed), adapter (to bridge the client/server to the RMI server), and singleton (for the class accessing the database file and the one keeping track of the locked records). All of this has already been pretty much discussed in this forum, and I did not bring any revolution, so I won't go into the details. Read Andrew Monhouse's book !
I was glad about the good scores in the doc, because I invested pretty much in explaining my choices and assumptions, and also in my userdoc. Both results in 22kb text files each. I also tryied to make the Javadoc as complete as possible.
I don't know where I lost points in the GUI and in the network server, but this could be that I was penalized for not implementing all the methods in the interface provided - there is a pretty long discussion on this forum about this aspect of the assignment on this thread: https://coderanch.com/t/184224/java-developer-SCJD/certification/Should-lock-methods-callable-client
I think the most useful thing was using JUnit - it was always a good feeling to see the green bar after having left the assignment for a while...
He are a few posts that I found contained some useful information at some points during my development:
design (ken krebs): https://coderanch.com/t/184523/java-developer-SCJD/certification/NX-Notes-design-passed
design (passed - thread with score 100%) https://coderanch.com/t/188904/sr/certification/Passed-SCJD-Points
Design : https://coderanch.com/t/182022/java-developer-SCJD/certification/data-model https://coderanch.com/t/185590/java-developer-SCJD/certification/String-vs-value-object https://coderanch.com/t/183273/java-developer-SCJD/certification/NX-Contractors-Interfaces-design https://coderanch.com/t/183897/java-developer-SCJD/certification/NX-Someone-explain-facade-me https://coderanch.com/t/179821/java-developer-SCJD/certification/Design-questions-RMI https://coderanch.com/t/188154/java-developer-SCJD/certification/URLyBird-Why-not-come-debate
Locking, synchronization : https://coderanch.com/t/179988/java-developer-SCJD/certification/Lock-Unlock https://coderanch.com/t/179582/java-developer-SCJD/certification/passed https://coderanch.com/t/187302/java-developer-SCJD/certification/URLyBIRD-lock https://coderanch.com/t/185302/java-developer-SCJD/certification/NX-UrlyBird-reserve-requirement https://coderanch.com/t/189118/java-developer-SCJD/certification/UrlyBird-locking-no-cookie https://coderanch.com/t/189169/java-developer-SCJD/certification/Locking-strategy-URLyBird-ReentrantLock https://coderanch.com/t/189213/java-developer-SCJD/certification/RecordNotFoundException-locking https://coderanch.com/t/188135/java-developer-SCJD/certification/Multithreaded-connections-timeouts
Delete flag: https://coderanch.com/t/188141/java-developer-SCJD/certification/URLyBird-mark-record-deleted-one https://coderanch.com/t/189075/java-developer-SCJD/certification/DB-URLyBird-catches-SCJD https://coderanch.com/t/189047/java-developer-SCJD/certification/Parsing-Data-File
Use of singleton: https://coderanch.com/t/179686/java-developer-SCJD/certification/Tricky-DataServer-Thread-safe https://coderanch.com/t/189057/java-developer-SCJD/certification/URLyBird-Singleton-pattern https://coderanch.com/t/180998/java-developer-SCJD/certification/Data-wrapper
Use of a shutdown hook: https://coderanch.com/t/184802/java-developer-SCJD/certification/stop-rmi-server
Exception handling: https://coderanch.com/t/188723/java-developer-SCJD/certification/RMI-Adapter-Pattern-URLyBird
Find method https://coderanch.com/t/189120/java-developer-SCJD/certification/RecordNotFoundException-find-method
Should lock methods be callable by the client: https://coderanch.com/t/184224/java-developer-SCJD/certification/Should-lock-methods-callable-client
Cheers - Nicolas