aspose file tools*
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
Author

RecordNotFoundException

Chris Popz
Greenhorn

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

Hi,

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.

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

SCJP 1.4, SCJD, OCE EJBD 6
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.


SCJP<br />SCJD
Tai Hu
Greenhorn

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
Hi,

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.

@Tai,
I have a question to your statement:
Originally posted by Tai Hu:
When
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
Greenhorn

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 agree. Here's the link: http://aspose.com/file-tools
 
subject: RecordNotFoundException