Hi Phillip, You may want to take a look at the way we've done things, briefly sketched here ...
http://www.redev.org/archives/000035.cfm Our validate() method is not implicitly invoked by save() ( store() in our case ). Instead, it's the callers responsibilty to call validate() before calling save(). validate() returns a structure indicating the properties that are in error and a text message describing the error ( for eventual display in the presentation layer, typically). If either (a) the validate() method is not invoked, or (b) validate() indicates an error condition, then a subsequent save() throws an exception. It's therefore up to the calling code to ensure that if errors are returned by validate(), that suitable action is taken, such as displaying an error message to the user . Cheers, Andy --- "Phillip Cave" <[EMAIL PROTECTED]> wrote: > > I'm attempting to do the same thing. In this case I have 2 objects (Page and > PageData). When Page.Save() is called, it passes itself to the InsertPage() > method of the PageData object which does the actual database operations. I'm > just confused as to what all of these methods should be returning. If > Page.Save() calls PageData.Validate() before PageData.InsertPage() and there > are actual validation errors, what would PageData.Validate() return to > Page.Save() (I would assume either an array of validation errors or some > sort of message object)... Furthermore, what in turn does Page.Save () return > to the calling program (assuming the object was not saved because there were > validation errors)? > > Thanks, > Phillip > > -----Original Message----- > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf > Of Justin Balog > Sent: Friday, October 03, 2003 9:25 AM > To: '[EMAIL PROTECTED]' > Subject: RE: [CFCDev] Data validation > > > > Just to throw in my very humble 2 cents, I do not have save() as a method of > any of my objects. I don't believe an object should be able to persist > itself. (Kind of like the terminator). I create persister objects that > handle saving to the dB. These persister objects take the type of object to > persist with a setObjToPerisit() getObjectToPersist(). That way if my data > platform changes, I don't have to revisit the objects themselves, I just > have to write a new persister method for that type of object. In my > application each object has a corresponding persistor type object that has a > bunch of persist methods saveSQLServer, saveACCESS, saveWDDX, saveCSV, > saveORACLE, etc. Just a thought. > > Take care, > > Justin > > -----Original Message----- > From: Phillip Cave [mailto:[EMAIL PROTECTED] > Sent: Friday, October 03, 2003 7:51 AM > To: [EMAIL PROTECTED] > Subject: [CFCDev] Data validation > > > > Where is the best place to handle data validation in an object? Should an > object's Save() method be responsible for validating it's internal members > before actually saving or should the calling program call a Validate() > method before attempting to save? > > Any advice is appreciated. > > Thanks, > Phillip > > -- > > Phillip Cave > Director, ColdFusion Development > Macromedia Certified ColdFusion Developer Carol/Trevelyan Strategy Group > 202.448.5212 > > ---------------------------------------------------------- > You are subscribed to cfcdev. To unsubscribe, send an email to > [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' > in the message of the email. > > CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, > Corporation (www.mindtool.com). > > An archive of the CFCDev list is available at > www.mail-archive.com/[EMAIL PROTECTED] > ---------------------------------------------------------- > You are subscribed to cfcdev. To unsubscribe, send an email to > [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' > in the message of the email. > > CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, > Corporation (www.mindtool.com). > > An archive of the CFCDev list is available at > www.mail-archive.com/[EMAIL PROTECTED] > > ---------------------------------------------------------- > You are subscribed to cfcdev. To unsubscribe, send an email > to [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' > in the message of the email. > > CFCDev is run by CFCZone (www.cfczone.org) and supported > by Mindtool, Corporation (www.mindtool.com). > > An archive of the CFCDev list is available at www.mail- archive.com/[EMAIL PROTECTED] ---------------------------------------------------------- You are subscribed to cfcdev. To unsubscribe, send an email to [EMAIL PROTECTED] with the word 'unsubscribe cfcdev' in the message of the email. CFCDev is run by CFCZone (www.cfczone.org) and supported by Mindtool, Corporation (www.mindtool.com). An archive of the CFCDev list is available at www.mail-archive.com/[EMAIL PROTECTED]
