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]