Yes, I just didn't paste the rest of the class. Here it is in its entirety:

package com.k12.totalview.ui.delegates;

import com.webobjects.appserver.WOComponent;
import com.webobjects.directtoweb.D2W;
import com.webobjects.directtoweb.InspectPageInterface;
import com.webobjects.directtoweb.NextPageDelegate;
import com.webobjects.eocontrol.EOEnterpriseObject;

import er.directtoweb.pages.ERD2WInspectPage;
import er.directtoweb.pages.ERD2WQueryPage;

public class QueryToListOrInspectNextPageDelegate implements NextPageDelegate {

    public WOComponent nextPage(WOComponent sender) {
        WOComponent nextPage;
        if (((ERD2WQueryPage) sender).queryDataSource()
                                     .fetchObjects()
                                     .count() == 1) {
            EOEnterpriseObject eo = (EOEnterpriseObject) ((ERD2WQueryPage) 
sender).queryDataSource()
                                                                                
  .fetchObjects()
                                                                                
  .lastObject();
            InspectPageInterface ipi = D2W.factory()
                                          
.inspectPageForEntityNamed(eo.entityName(),
                                                                     
sender.session());
            ((ERD2WInspectPage) ipi).setObject(eo);
            nextPage = (WOComponent) ipi;
        } else {
            nextPage = ((ERD2WQueryPage) sender).nextPage();
        }
        return nextPage;
    }

}


On Oct 12, 2010, at 3:38 PM, David Holt wrote:

> Hi David,
> 
> Are you putting this delegate in its own class?
> 
> David
> 
> On 2010-10-11, at 2:13 PM, David Avendasora wrote:
> 
>> 
>> On Oct 11, 2010, at 4:58 PM, David Avendasora wrote:
>> 
>>> 
>>> On Oct 11, 2010, at 4:48 PM, Ramsey Gurley wrote:
>>> 
>>>> 
>>>> On Oct 11, 2010, at 4:28 PM, David Avendasora wrote:
>>>> 
>>>>> Hey Ramsey,
>>>>> 
>>>>> I'm using the branch delegate in other places where the user is given a 
>>>>> choice of what the next page should be, but I thought that since I'm 
>>>>> figuring it out on-the-fly during the request that nextPageDelegate was 
>>>>> the way to go. I've revised my NPD and here's what it looks like now:
>>>>> 
>>>>> public WOComponent nextPage(WOComponent sender) {
>>>>>    WOComponent nextPage;
>>>>>    if (((ERD2WQueryPage) sender).queryDataSource()
>>>>>              .fetchObjects()
>>>>>              .count() == 1) {
>>>>>        InspectPageInterface ipi = 
>>>>> D2W.factory().inspectPageForEntityNamed(Student.ENTITY_NAME, 
>>>>> sender.session());
>>>>>        ((ERD2WInspectPage) ipi).setObject((Student) ((ERD2WQueryPage) 
>>>>> sender).queryDataSource().fetchObjects().lastObject());
>>>> 
>>>> You may want to consider getting your object first, then using 
>>>> object.entityName() in your factory method to make this more generally 
>>>> reusable.
>>> 
>>> See, now that's just genius. This can be a delegate that works for any EO, 
>>> not just Student. Brilliant!
>> 
>> One rule:
>> 
>> 100 : pageConfiguration like 'Query*' => nextPageDelegate = 
>> com.my.application.delegates.QueryToListOrInspectNextPageDelegate 
>> [er.directtoweb.ERDDelayedObjectCreationAssignment]
>> 
>> Applies this logic to all searches, for any Entity.
>> 
>> D2W is awesome!
>> 
>> Dave
>> 
>> 
>>> 
>>>>>        nextPage = (WOComponent) ipi;
>>>>>    } else {
>>>>>        nextPage = ((ERD2WQueryPage) sender).nextPage();
>>>> 
>>>> Does that last line work?  I would have thought the logic in your original 
>>>> would be required.
>>> 
>>> Yep! Works great. :-) When I wrote it I was worried that it would end up in 
>>> an endless loop with sender.nextPage() simply calling this delegate, but it 
>>> works perfectly. Maybe I'm just lucky.
>>> 
>>> Dave
>>> 
>>>> 
>>>> Ramsey
>>>> 
>>>>>    }
>>>>>    return nextPage;
>>>>> }
>>>>> 
>>>>> 
>>>>> Dave
>>>>> 
>>>>> On Oct 11, 2010, at 9:55 AM, Ramsey Gurley wrote:
>>>>> 
>>>>>> Looks good to me Dave. I think any "better" way than something that 
>>>>>> works will be a matter of opinion (^_^)  Personally I like branch 
>>>>>> delegates, but in this case, the next page delegate is only called by 
>>>>>> the queryAction. So you know the call to next page comes from the find 
>>>>>> button.
>>>>>> 
>>>>>> Ramsey
>>>>>> 
>>>>>> On Oct 11, 2010, at 6:57 AM, David Avendasora wrote:
>>>>>> 
>>>>>>> Okay, after a nights sleep, I got it working, but how I did it seems 
>>>>>>> hackish (shocking, I know). Is the nextPage() method below from my 
>>>>>>> delegate the best way to do this?
>>>>>>> 
>>>>>>> public WOComponent nextPage(WOComponent sender) {
>>>>>>>  WOComponent nextPage;
>>>>>>>  if (((ERD2WQueryPage) sender).queryDataSource()
>>>>>>>            .fetchObjects()
>>>>>>>            .count() == 1) {
>>>>>>>      InspectPageInterface ipi = D2W.factory()
>>>>>>>                                    
>>>>>>> .inspectPageForEntityNamed(Student.ENTITY_NAME,
>>>>>>>                                                               
>>>>>>> sender.session());
>>>>>>>      ((ERD2WInspectPage) ipi).setObject((EOEnterpriseObject) 
>>>>>>> ((ERD2WQueryPage) sender).queryDataSource()
>>>>>>>                                                                         
>>>>>>>               .fetchObjects()
>>>>>>>                                                                         
>>>>>>>               .lastObject());
>>>>>>>      nextPage = (WOComponent) ipi;
>>>>>>>  } else {
>>>>>>>      ListPageInterface lpi = D2W.factory()
>>>>>>>                                 
>>>>>>> .listPageForEntityNamed(Student.ENTITY_NAME,
>>>>>>>                                                         
>>>>>>> sender.session());
>>>>>>>      ((ERD2WListPage) lpi).setDataSource(((ERD2WQueryPage) 
>>>>>>> sender).queryDataSource());
>>>>>>>      nextPage = (WOComponent) lpi;
>>>>>>> 
>>>>>>>  }
>>>>>>>  return nextPage;
>>>>>>> }
>>>>>>> 
>>>>>>> On Oct 10, 2010, at 8:39 PM, David Avendasora wrote:
>>>>>>> 
>>>>>>>> Hi All,
>>>>>>>> 
>>>>>>>> When a user performs a query, if the results contain exactly one 
>>>>>>>> object I want to return an Inspect page for that object instead of a 
>>>>>>>> List page.
>>>>>>>> 
>>>>>>>> I assume I'm going to want to implement a NextPageDelegate, but I'm 
>>>>>>>> not sure how to do that. I've looked around but I can't seem to find a 
>>>>>>>> good example. Does anyone have an example NextPageDelegate that I can 
>>>>>>>> use as a starting point?
>>>>>>>> 
>>>>>>>> I promise to create a Wiki page documenting how to do this for future 
>>>>>>>> mes.
>>>>>>>> 
>>>>>>>> Thanks!
>>>>>>>> 
>>>>>>>> Dave _______________________________________________
>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com
>>>>>>>> 
>>>>>>>> This email sent to [email protected]
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>> Webobjects-dev mailing list      ([email protected])
>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/ramsey%40xeotech.com
>>>>>>> 
>>>>>>> This email sent to [email protected]
>>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> 
>>>>> 
>>>>> 
>>>> 
>>>> 
>>>> 
>>> 
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be ignored.
>>> Webobjects-dev mailing list      ([email protected])
>>> Help/Unsubscribe/Update your Subscription:
>>> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com
>>> 
>>> This email sent to [email protected]
>>> 
>>> 
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/programmingosx%40mac.com
>> 
>> This email sent to [email protected]
> 
> 
> 

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to