Re: limiting a fetch in a D2W list page
Re: limiting a fetch in a D2W list page
- Subject: Re: limiting a fetch in a D2W list page
- From: David LeBer <email@hidden>
- Date: Mon, 14 May 2012 11:39:20 -0400
Because session() returns a WOSession and you need to cast it to a Session otherwise it complains that it doesn't know what the user() method is.
And apologies for bug ridden code typed directly into the email.
D
--
David LeBer
Codeferous Software
On 2012-05-14, at 9:56 AM, Theodore Petrosky wrote:
> wow, I never quite understood why we have to cast to Session nor these parentheses (i had to add one session()) and take one away at the end).
>
> Thank you.
>
> return ERXQ.and(sender.qualifier(), ERXQ.equals("person", ((Session)sender.session()).user()));
>
>
>
> --- On Mon, 5/14/12, David LeBer <email@hidden> wrote:
>
>> From: David LeBer <email@hidden>
>> Subject: Re: limiting a fetch in a D2W list page
>> To: "Theodore Petrosky" <email@hidden>
>> Cc: "WebObjects Development" <email@hidden>
>> Date: Monday, May 14, 2012, 8:49 AM
>> If the PERSON_KEY is the same (ie:
>> 'person') for each of the entities you need to qualify
>> against, you should be able to just use the string "person"
>> in your qualifier.
>>
>> private EOQualifier qualifierFromSender(ERD2WQueryPage
>> sender) {
> return ERXQ.and(sender.qualifier(), ERXQ.equals("person", ((Session)sender.session().user())));
>> }
>>
>> D
>>
>> --
>> David LeBer
>> Codeferous Software
>>
>> On 2012-05-14, at 12:24 AM, Theodore Petrosky wrote:
>>
>>> two things.
>>>
>>> first I need to learn some java. is there a way to do
>> this better?
>>>
>>> private EOQualifier qualifierFromSender(ERD2WQueryPage
>> sender) {
>>>
>>> EOQualifier q = sender.qualifier();
>>>
>> NSLog.out.appendln("* sender.entityName()
>> " + sender.entityName());
>>>
>>> Person sessionPerson = ((Session)
>> sender.session()).user();
>>>
>>> if
>> (sender.entityName().equals("MeetingChecklist")) {
>>> q =
>> ERXQ.and(ERXQ.equals(MeetingChecklist.PERSON_KEY,
>> sessionPerson));
>>> }
>>>
>>> if
>> (sender.entityName().equals("KickOffBrief")) {
>>> q =
>> ERXQ.and(ERXQ.equals(KickOffBrief.PERSON_KEY,
>> sessionPerson));
>>> }
>>>
>>> if
>> (sender.entityName().equals("CreativeBrief")) {
>>> q =
>> ERXQ.and(ERXQ.equals(CreativeBrief.PERSON_KEY,
>> sessionPerson));
>>> }
>>>
>>> return q;
>>> }
>>> it works, but it is ugly.
>>>
>>> I have these three 'if' statements. Each of the
>> entities has a person key. Is there a way to do something
>> like:
>>>
>>> q =
>> ERXQ.and(ERXQ.equals(sender.entityName().PERSON_KEY,
>> sessionPerson));
>>>
>>> obviously this will fail as there is no way for the
>> compiler to know that sender.entityName() has a key called
>> PERSON_KEY. I know it works, but I am trying to learn new
>> stuff.
>>>
>>>
>>> and 'b',
>>>
>>> you said:
>>>
>>>>
>>>> Interesting. I thought that worked. Try setting
>> the
>>>> auxiliaryQualifier instead of the qualifier on your
>> database
>>>> datasource. Does that help?
>>>>
>>>
>>> I am hunting but I don't understand the
>> 'auxiliaryQualifier' reference.
>>>
>>>
>>> --- On Sat, 5/12/12, Ramsey Gurley <email@hidden>
>> wrote:
>>>
>>>> From: Ramsey Gurley <email@hidden>
>>>> Subject: Re: limiting a fetch in a D2W list page
>>>> To: "Theodore Petrosky" <email@hidden>
>>>> Cc: "email@hidden
>> Development" <email@hidden>
>>>> Date: Saturday, May 12, 2012, 12:25 PM
>>>> On May 12, 2012, at 6:24 AM, Theodore
>>>> Petrosky wrote:
>>>>
>>>>> The documentation at D2W+Flow+Control seems to
>> say that
>>>> I can create a 'delegate' copying what is there and
>> create a
>>>> rule that ties my entity to it.
>>>>>
>>>>> as there is no additional qualifier in:
>>>>>
>>>>> private EOQualifier
>> qualifierFromSender(ERD2WQueryPage
>>>> sender) {
>>>>> EOQualifier q =
>> sender.qualifier();
>>>>> // q =
>> ... create
>>>> your OR qualifier here
>>>>>
>>>>
>>>>>
>> NSLog.out.appendln("
>>>> *in the delegate
>> "
>>>> + q );
>>>>>
>>>>> return q;
>>>>> }
>>>>>
>>>>> I only get the NSLog message when I enter the
>> advanced
>>>> search area. I assumed with a delegate assigned to
>> the
>>>> entity, that whenever I viewed the entity, the
>> delegate
>>>> would fire. It doesn't fire if I just click the
>> "Find"
>>>> button (so the delegate is not used). I have to
>> stop
>>>> assuming.
>>>>
>>>> Interesting. I thought that worked. Try setting
>> the
>>>> auxiliaryQualifier instead of the qualifier on your
>> database
>>>> datasource. Does that help?
>>>>
>>>>>
>>>>> also interesting
>> 'ERDDelayedObjectCreationAssignment'
>>>> doesn't exist as a class to choose in the
>> RuleModeler.
>>>>
>>>> Copy paste :)
>>>>
>>>>>
>>>>> Lastly, how can I get the session method user()
>> to
>>>> compare to?
>>>>
>>>> sender.session().valueForKey("user")?
>>>>
>>>>>
>>>>> What am I missing?
>>>>>
>>>>> Ted
>>>>>
>>>>> --- On Fri, 5/11/12, Ramsey Gurley <email@hidden>
>>>> wrote:
>>>>>
>>>>>> From: Ramsey Gurley <email@hidden>
>>>>>> Subject: Re: limiting a fetch in a D2W list
>> page
>>>>>> To: "Theodore Petrosky" <email@hidden>
>>>>>> Cc: email@hidden
>>>>>> Date: Friday, May 11, 2012, 4:14 PM
>>>>>> http://wiki.wocommunity.org/display/WO/D2W+Flow+Control
>>>>>>
>>>>>> See ERDQueryDataSourceDelegateInterface for
>> Query
>>>> pages. I
>>>>>> don't think that works for the QueryAll
>> page, but
>>>> you could
>>>>>> possibly use an editing context delegate in
>> that
>>>> case.
>>>>>>
>>>>>> Ramsey
>>>>>>
>>>>>>
>>>>>> On May 11, 2012, at 1:00 PM, Theodore
>> Petrosky
>>>> wrote:
>>>>>>
>>>>>>> my d2w app has a session user. when a
>> user
>>>> selects a
>>>>>> tab, my MainNavigationController fires a
>> method to
>>>> create
>>>>>> the list page.
>>>>>>>
>>>>>>> the method creates an
>> EODatabaseDataSource and
>>>> then a
>>>>>> fetch spec that limits the result to rows
>> that were
>>>> created
>>>>>> by THIS user.
>>>>>>>
>>>>>>>
>> ERXFetchSpecification<KickOffBrief> fs =
>>>> new
>>>>>>
>>>>
>> ERXFetchSpecification<KickOffBrief>(KickOffBrief.ENTITY_NAME,
>>>>>> ERXQ.equals(KickOffBrief.IS_FILED_KEY,
>>>>>>
>>>>
>> false).and(KickOffBrief.PERSON.eq(session().user())),
>>>>>> null);
>>>>>>>
>>>>>>> How can I add the user qualification to
>> the D2W
>>>> created
>>>>>> search query? Or when I am on a
>> QueryKickOffBrief
>>>> page, how
>>>>>> do I add the
>>>> and(KickOffBrief.PERSON.eq(session().user())
>>>>>> qualifier to the resultant page?
>>>>>>>
>>>>>>> Ted
>>>>>>>
>>>>>>>
>>>>>>>
>>>> _______________________________________________
>>>>>>> Do not post admin requests to the list.
>> They
>>>> will be
>>>>>> ignored.
>>>>>>> Webobjects-dev mailing list
>>
>>>> (email@hidden)
>>>>>>> Help/Unsubscribe/Update your
>> Subscription:
>>>>>>>
>>>>>>> This email sent to email@hidden
>>>>>>
>>>>>>
>>>>>
>>>>>
>> _______________________________________________
>>>>> Do not post admin requests to the list. They
>> will be
>>>> ignored.
>>>>> Webobjects-dev mailing list
>> (email@hidden)
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>
>>>>> This email sent to email@hidden
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Do not post admin requests to the list. They will be
>> ignored.
>>> Webobjects-dev mailing list (email@hidden)
>>> Help/Unsubscribe/Update your Subscription:
>>>
>>> This email sent to email@hidden
>>
>>
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden