... Finally...
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