Alan,

5) runs init() on which bean? The one you defined in step 2?

Dan

On Wed, Aug 27, 2008 at 5:24 AM, Alan Livie
<[EMAIL PROTECTED]> wrote:
>
> Yip, your approach is pretty much how I do it.
>
> 1) getUser() is called in UserService() ( we could also be talking about an 
> AuthenticationService here but lets keep it simple :-) )
> 2) the getUser() method creates a new User bean / business object and sets 
> the username and password properties
> 3) It then delegates to your UserDAO's read() method, passing it the bean.
> 4) UserDAO's read() method runs the sql SELECT * FROM users WHERE ..... query.
> 5) If a record is found it converts the record into a struct and runs init() 
> on the bean, passing it the struct. The read method returns void.
> 6) The UserService's getUser() method returns the loaded bean
>
> As far as the bean's validate methods are concerned I only use them before 
> saving the bean. ie if the html form is processed I init() the User bean with 
> the form data, call UserService.save(User) which does an <cfif 
> User.validate() then UserDAO.save(User). The service returns a result (either 
> a Result object that Brian uses or an array of structs with all the error 
> info on field, message, error type etc) This lets you either redirect the 
> user back to the form, show the errors or to a success page etc.
>
> If the validation for Users and Administrators was different your validate() 
> method could do an <cfif IsAdministrator() validateAdministrator() etc. Your 
> validate() method would also call isPasswordValid() etc
>
> Your question about what if no records are returned is worth looking at. My 
> usual use case for the above process is calling getXXXX() and passing it an 
> id so it should find a record. I think for login stuff an 
> AuthenticationService is a good thing that just concentrates and getting 
> username and password, calling UserGateway. If one record is returned, the 
> authenticationService returns true, else it returns false. Then your 
> controller method can redirect to login page or go to the page its meant to 
> be going to.
>
> Hope this makes sense. Its worth remembering this is just one way of doing it 
> and it seems to work fine for me. A friend of mine runs save() from his bean 
> rather than his Service and injects DAO's into his beans. It works well for 
> him so he's sticking with that.
>
> Alan
> ________________________________________
> From: [email protected] [EMAIL PROTECTED] On Behalf Of Matthew [EMAIL 
> PROTECTED]
> Sent: 27 August 2008 05:23
> To: CFCDev
> Subject: [CFCDEV] Re: CF, DAOs, CRUD and OO
>
> Hi Alan
>
> Thanks for the detailed response - very helpful.
>
> Just one question regarding "Your User.cfc bean / business object
> would enforce your business rules, ie isPasswordValid(),
> isAdministrator(), validateUser()..." I don't get how this would
> work... let me paint a picture of how I understand it working (lets
> forget about the factory for now);
>
> 1. Call getUser() in UserService (passing in username and password for
> validating)
> 2. So does the UserService call validateUser() in UserBean... but I
> though Beans are objects with just getters and setters (i.e. no
> querying).
> I thought the process would have been:
> 1. Call getUser() in UserService (passing in username and password for
> validating)
> 2. UserService init's a UserBean (passing in username and password)
> 3. UserService passes UserBean to Read() in UserDAO (passing in an
> half-baked-bean)
> 4. UserDAO runs query looking for record (calls getUsername() and
> getPassword() from the half-baked-bean which was passed in).
> 5. If a record was found then re-run the Init() function on the half-
> baked-bean passing in query results as arguments i.e. if
> (q.recordcount) { arguments.userBean.init(q.Firstname,q.Lastname)} and
> then return the fully-baked-bean.
> 5b. I'm not to sure what you should do if no recordcount. Perhaps this
> is your point that you return the bean to UserService regardless and
> then run validateUser() on UserBean to check that it's a fully-baked-
> bean.
> Am I way off?
> Cheers
> Matthew
>
>
> >
>



-- 
--------------
Dan O'Keefe

--~--~---------~--~----~------------~-------~--~----~
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