This week's book giveaway is in the OO, Patterns, UML and Refactoring forum.
We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line!
See this thread for details.
The moose likes Developer Certification (SCJD/OCMJD) and the fly likes RecordNotFoundException Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

JavaRanch » Java Forums » Certification » Developer Certification (SCJD/OCMJD)
Bookmark "RecordNotFoundException" Watch "RecordNotFoundException" New topic


Chris Popz

Joined: Feb 19, 2007
Posts: 14
The spec says:
Any method that throw RecordNotFoundException should do so if a specified record does not exist or is marked as deleted in the database file

Now, to check if the record is deleted is done simply by checking the flag value. But how about if the record is missing? Currently I'm thinking of something like:

Would this "check" cover both "deleted" and "missing"? Or how do you fellow ranchers solve this?
Romeo Son
Ranch Hand

Joined: Mar 12, 2007
Posts: 92


When you delete a record, you do so by marking it with the delete flag in the file. So when you read a record, you should read first its flag and see if it is the valid flag or the deleted flag.
If the file pointer is beyond the end of the file, for example recNo = 100, of course the record is missing.
My original dbFile doesn't have deleted records, but you need to implement the behavior.

[ May 08, 2007: Message edited by: Romeo Son ]

Mark Smyth
Ranch Hand

Joined: Feb 04, 2004
Posts: 288
I threw an unchecked IllegalArguement exception if the record number was < 0 or if it was beyond the bounds of the file, I only throw a RecordNotFoundException if a record has been marked as deleted.

Tai Hu

Joined: Apr 27, 2007
Posts: 9
My recNo is an sequence starting from 0 (same as position in the db file). Then I stored all valid and deleted recNos into 2 separated sortedSet. When
recNo < 0 || recNo > validRecNos.last() + 1 || deletedRecNos.contains(recNo), I through a RecordNotFoundException
Lucy Hummel
Ranch Hand

Joined: Apr 07, 2005
Posts: 232

I also store all valid record numbers in a static attribute so that I know which record numbers are valid. If the record number is not stored, I throw the RecordNotFoundException.

I have a question to your statement:
Originally posted by Tai Hu:
recNo < 0 || recNo > validRecNos.last() + 1 || deletedRecNos.contains(recNo), I through a RecordNotFoundException

I do not get why you have the second operator

----------------------------------<br />| SCJP, SCWCD, SCBCD, SCEA, SCJD |<br />----------------------------------
Tai Hu

Joined: Apr 27, 2007
Posts: 9
Actually the second operator should be recNo > validRecNo.last() I stored all the valid recNo into a SortedSet. So the validRecNo.last() represent the maximum recNo. If a given recNo is larger than the maximum recNo, it is out of range.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link:
subject: RecordNotFoundException
It's not a secret anymore!