It's going to be a long anxious and nervous wait now. See you guys again in 4 - 6 weeks time.
I would like to thank Roel De Nijs and Roberto Perillo for your guidance. You guys have really been a great help on this forum. I have the book 'SCJD Exam with J2SE5 2nd edition' with me when I was doing this assignment. It has helped too. Thanks to Andrew Monkhouse and Terry Camerlengo too!
Let's party. First round on me. cheers!
P/S: Quote from the email
You have received a passing score. Passing grades do not receive a score, just the pass.
That means no score? I would really like to see which part I did not do well. Any ideas?
Congratulations! If you took the essay exam May 4, and you already got a grade... That's really fast!
They don't tell you your score anymore. A few months back you got a total score (and no per section break down), but now you'll just get "Pass" (if you fail, you would get your score, so you know which part you have to improve)
* Database schema is hard-coded; since we have only one database file, I've decided to keep it simple.
* Data class is a Singleton when constructed using DBFactory. Data class has a default access modifier constructor, which programmers outside the package would not be able to instantiate this class. So, the DBFactory must be used to construct this Singleton. Programmers that are working on suncertify.db package should know if DBFactory is used, Singleton Data class is retrieved instead of instantiating multiple Data class.
* Re-use of deleted records. DataFileAccess has a utility method next() which when called returns the next available record number.
* Did not implement add, modify and delete records function because they are not requirements of the assignment. Initially, I planned to display the records which date available has passed but that means an add room function has to be added because no rooms can be booked as the date of the records all are older than present date. As a result, to keep I decided not to implement any other functions other than the one mentioned in the requirement, which is book and search rooms.
* No record caching; query and updates directly to file database
* Uses wait() and notifyAll() on LockManager class which is a Singleton object; I decided not to use the concurrent API because I would like to understand the basic of locking using the low level methods before going to higher level methods.
* Decided to use notifyAll() instead of notify(); using notify() method adds complexity to the code as I would need to code it in a way that unique object has to be created and mapped to the record number that is being locked. This method will undoubtly be more efficient and consume less CPU cycles than using notifyAll() method. However, I decided to use wait() and notifyAll() on the Singleton LockManager object to simplify the code.
* Searching is filtered two times - one at data layer and one at business layer. Data layer looks for startsWith. Business layer looks for equals.
* Data implements DB interface. No SubDB interface created. Initially planned to use a SubDB interface but then as Roel advised, I should code agasinst the interface as much as possible.
* Uses a VO/POJO instead of String.
* Uses RMI. My design here is I have one class - RoomServiceImpl. The diagram is something like this - RoomServiceImpl implements RemoteRoomService and RoomService. RemoteRoomService implements RoomService and Remote. RemoteFactoryImpl implements RemoteFactory. RemoteFactory implements Remote. Two concrete class - RemoteServiceImpl and RemoteFactoryImpl.
That's about it. Hope it helps.
@Roel: That's not fast. Apparently they didn't receive my submission too and I resend. But anyway, I'm a happy man now.
Allan Cheong wrote:@Roel: That's not fast. Apparently they didn't receive my submission too and I resend. But anyway, I'm a happy man now.
My mistake: I thought you took the essay exam July 4, but it is May 4 and indeed that's quiet a long wait you had to sit through. Apparently getting up early each day seems not so good for my attention
Roel De Nijs wrote:Hi Allan,
They don't tell you your score anymore. A few months back you got a total score (and no per section break down), but now you'll just get "Pass"
So Roel, just to confirm, upcoming assignment submitter will no more get scores if they pass this certification, right? So we won't be able to know where we did right and wrong (which area further to improve in future) as well as to put the score in the resume (if it's really good score)