Hi all,
Long time no see, but i was on a 10-day vacation to Bulgaria

I needed to relax a bit after 4-5 months hard work on the
scjd assignment. I submitted my assignment on May 15th and took the essay exam 45 minutes after submitting the assignment. Just before leaving for 10 days I checked the certification manager, but no score yet. So I didn't know if I deserved the little vacation. But I checked Monday (my last but one vacation day) the certification manager and was delighted to see the P, and I was completely

to see that I passed with the perfect score and according to the report I did an excellent job, so that means the little vacation was certainly deserved

The date taken is June 12, so I guess it is the date when the assignment was graded (exactly 4 weeks after taking the essay exam).
So first of all let me thank some people who helped me a lot with the assignment (and i wasn't able to get such a score without their highly appreciated help):
Andrew Monkhouse for the excellent book and sample project he providedRoberto Perillo for his excellent guidance, clear explanations and his superb data locking test class (that test class, maybe together with the small app to read the data file should be made sticky or a link should be put into scjd faq or reading materials)K. Tsang, pramod karnani, Anne Grace, Pete Palmer and all the other ranchers for answering my questions and sharing their thoughts to some enlightning discussions.
No need to give the per section score, because that's quiet obvious, but I will shortly describe how I handled my assignment: I started January 2009 with the SCJD-assignment and started with the Data-class (implementing sun's interface) and i made my own test providing 100% test coverage: a test-case for each possible situation (normal run of method, exceptions that could be thrown,...). Then i used Roberto Perillo's test-case to make sure my locking mechanism won't result in a deadlock. Each time when i made a change to Data I ran those tests again, to make sure changes don't have any effect on the program. I chose to use a seperate business layer, so i made my local implementation (+ full coverage test) and my RMI implementation (+ full coverage test + a test to see if my booking process is flawless). And then I created my GUI. During development i used a wip (=work in progress)-package and if my class was finished i javadoc'ed it completely and moved it to the appropriate package. So a finished class is really finished and i don't have to spend extra time to javadoc afterwards.
I created also an
ant build file to create my submission jar (based on a build file found on this forum) and also a test-case to see if all required files are present and in the correct directory. If people are interested I will share/post my test to see if booking process is working ok, the ant build file and the test case to validate the submission jar, just let me know.
Some facts and figures about the code i submitted:
- 43
java files in total with almost all in gui and db
- userguide = 16kb (295 lines, max 80 chars per line, with a lot of white space because it's a userguide so it should be very readible)
- choices = 36kb (519 lines, max 80 chars per line, with almost no white space, just seperating the different sections, these sections are almost the same as the different marking areas mentioned in the instructions file)
Finally I will give a quick overview about things I did (or did not):
Data class
created my own interface (extending the sun interface)used a record cachereused deleted record numberssingleton with all methods marked synchronized
GUI
kept it very simple (no use of icons for example)used simple text boxes for the search criteria (with enter-enabled searching)used mnemonics on every button, menu, menu-itemlimited the number of characters in the input fields (according to the database schema)blocked invalid characters (for example: no characters in port number field)disabled buttons whenever they where not applicable (for example: booking an already booked room) or when the provided information by the user was not validused custom table model
Network
used rmigenerated stubs (not needed anymore from Java 5, but it is a must in the instructions and I didn't want to fail automatically so i didn't take the risk of not generating them and mentioned exactly the same in my choices.txt)
Other
used a business service (exposing just 2 business methods)used logging in my Data class and my 2 business service implementations: just writing a message at the start (with parameters if applicable) and at the end (with result if applicable) of each methoddid not implement the 48 hours rule
That's all folks! If i forgot something important or you want to know something, just ask and i will try to answer your question.
Kind regards,
Roel
[edit] changed/extended the list with my do's and don'ts
[edit] exactly 10 days (not business days) after my score appeared in the certification manager, the result appeared also in the sun certification database (and the certification date is May 15, the day I took the essay exam)