Another design choice I see go both ways is whether to perform validation in
the save() method or to call each method separately. Example controller
functions could be (pseudo code):

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -

*SEPARATE SAVE & VALIDATE
*var UserService=getBean('UserService');
var FormVariables=getAllValues();

var ValidationResult='';
var SaveResult='';

set ValidationResult=UserService.validate(FormVariables); // returns an
error collection object

if ValidationResult.hasErrors()
     setValue('ReturnObject', ValidationResult);
     addResult('Fail');
else
     set SaveResult=UserService.save(FormVariables); // returns a populated
user bean object
     setValue('ReturnObject', SaveResult);
     addResult('Success');
end

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -

*COMBINED SAVE & VALIDATE V1.0
*var UserService=getBean('UserService');
var FormVariables=getAllValues();

var UserBean=UserService.newUser();
var SaveResult='';

set UserBean.setMemento(FormValues);
set SaveResult=UserService.save(UserBean); // returns true if saved
successfully, or false if validation errors exist (the error collection
would be saved in the bean itself for retrieval later)

setValue('ReturnObject', UserBean);

if SaveResult is True
     addResult('Success');
else
     addResult('Fail');
end

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -

*COMBINED SAVE & VALIDATE V2.0
*var UserService=getBean('UserService');
var FormVariables=getAllValues();

var SaveResult=UserService.save(FormVariables); // returns a complex result
object with properties: STATUS ('Success', ValidationError') and PAYLOAD
(that contains either a UserBean or ErrorCollection depending on the STATUS)

setValue('ReturnObject', SaveResult.getPayload());

if SaveResult.getStatus() is 'Success'
     addResult('Success');

else SaveResult.getStatus() is 'Validation'
     addResult('Fail');
end

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - -

CONS OF KEEPING THEM SEPARATE:

   - Controller has to be smarter, which is bad, because there will be
   more code duplication if you change the presentation layer to flex, for
   example.
   - Function coupling: Coders have to "remember" to always validate()
   before saving() - an unnecessary additional complexity (unless, of course,
   there are times in your app where you save() by defining all values yourself
   (thereby knowing the values are correct) rather than from user input)

CONS OF COMBINING THEM COMBINED

   - Requires complex and unnatural result handling (either by affecting
   the bean by reference, or using a special RESULT object)


Cheers,
Baz

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CFCDev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cfcdev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to