Hi,
So I cleaned it up a little bit...
I created as assignment that has methods like this:
protected NSDictionary<String, Object> resolveBindings(D2WContext context,
NSDictionary bindings) {
NSMutableDictionary<String, Object> resolvedBindings = new
NSMutableDictionary<String, Object>();
for(Object key : bindings.allKeys()) {
String aKey = (String) key;
Object value = context.valueForKeyPath((String)
bindings.objectForKey(aKey));
if(value != null) {
resolvedBindings.takeValueForKey(value, aKey);
}
}
return resolvedBindings;
}
@Override
public Object fireNow(D2WContext c) {
Object result = null;
Object value = value();
if(value != null && value instanceof NSDictionary) {
result = resolveBindings(c, (NSDictionary) value);
}
return result;
}
And then I updated my restritedChoiceList method to look like this:
EOEditingContext ec = ERXEC.newEditingContext();
EOEntity entity = d2wContext().entity();
EORelationship relationship = entity.relationshipNamed((String)
d2wContext().valueForKey("propertyKey"));
NSDictionary bindings =
(NSDictionary)d2wContext().valueForKey("restrictingFetchSpecificationBindings");
ec.lock();
try {
return EOUtilities.objectsWithFetchSpecificationAndBindings(ec,
relationship.destinationEntity().name(), fetchSpecName,
bindings);
} finally {
ec.unlock();
}
And it works...
Any comments/advice would be appreciated!
Thanks,
Johnny
On May 4, 2013, at 1:20 PM, Johnny Miller <[email protected]> wrote:
> Hi Bastian,
>
> I was thinking the same thing but ERDDelayedKeyValueAssignment with the
> qualifier format just blew up. It returned an error that didn't make much
> sense like couldn't resolve componentName or something to that effect.
>
> So I did something that is pretty lame. I created two keys - one for the
> left side one for the right (this is my subclass of
> ERD2WQueryToOneRelationship) i.e.
>
> String key =
> (String)d2wContext().valueForKey("restrictingFetchSpecificationKey");
> Object value =
> d2wContext().valueForKey("restrictingFetchSpecificationValue");
> NSDictionary<String, Object> bindings = null;
>
> if(key != null && value != null) {
> bindings = new NSDictionary<String, Object>(
> new NSArray<Object>(new Object[] {value}),
> new NSArray<String>(new String[] {key}));
> }
>
> ec.lock();
> try {
> return
> EOUtilities.objectsWithFetchSpecificationAndBindings(ec,
> relationship.destinationEntity().name(),
> fetchSpecName, bindings);
> } finally {
> ec.unlock();
> }
>
> And that works but it's pretty ugly. I guess I could create a custom
> assignment that creates a NSDictionary? I guess I will look at
> ERDDelayedExtraQualifierAssignment for a start.
>
> Thank you!
>
> Johnny
>
> On May 4, 2013, at 9:19 AM, Bastian Triller <[email protected]> wrote:
>
>> Maybe an ERDDelayedKeyValueAssignment for restrictingfetchspecification with
>> extraRestrictingQualifier as value?
>>
>> On Sat, May 04, 2013 at 08:22:10AM -1000, Johnny Miller wrote:
>>> Yeah, I'm wondering if there is a way to do a restrictingfetchspecification
>>> where I pass in an object at runtime i.e. a session object. I'm going to
>>> try to subclass erd2wlistpage and use
>>> eoutilities.objectswithfetchspecificationandbindings and create a key in
>>> the d2wcontext that I can use for the bindings.
>>>
>>> Do you know how to create a nsdictionary from a rule?
>>>
>>> Thanks,
>>>
>>> Johnny
>>>
>>> Sent from my iPad
>>>
>>> On May 4, 2013, at 12:32 AM, Theodore Petrosky <[email protected]> wrote:
>>>
>>>> Johnny,
>>>>
>>>> So in my Entity Modeler I have a fetchSpecifiction called 'activeUsers' on
>>>> my Users entity, then in my rules I have:
>>>>
>>>> 110 : (pageConfiguration like '*Embedded*' and propertyKey = 'user') =>
>>>> restrictingFetchSpecification = "activeUsers"
>>>> [com.webobjects.directtoweb.Assignment]
>>>>
>>>> my popup contains only the list from the fethchSpecification.
>>>>
>>>> does that help?
>>>>
>>>> Ted
>>>>
>>>>
>>>> --- On Fri, 5/3/13, Tim Worman <[email protected]> wrote:
>>>>
>>>>> From: Tim Worman <[email protected]>
>>>>> Subject: Re: D2W restrictingFetchSpecification Question
>>>>> To: "Johnny Miller" <[email protected]>
>>>>> Cc: "WebObjects-Dev Apple" <[email protected]>
>>>>> Date: Friday, May 3, 2013, 11:19 PM
>>>>> Hi Johnny:
>>>>>
>>>>> I haven't used the restrictingFetchSpecification before. But
>>>>> I have used a query data source delegate that implements
>>>>> ERDQueryDataSourceDelegateInterface. There's an example on
>>>>> the wiki on the wiki in the D2W flow control article. You
>>>>> may already know about that option - but throwing it out
>>>>> just in case.
>>>>>
>>>>> http://wiki.wocommunity.org/display/documentation/D2W+Flow+Control
>>>>>
>>>>> Tim
>>>>>
>>>>> On May 3, 2013, at 8:12 PM, Johnny Miller <[email protected]>
>>>>> wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> I want to add an automatic qualifier binding to a
>>>>> number of my list pages.
>>>>>>
>>>>>> And I'm just not quite getting how to use the
>>>>> restrictingFetchSpecification key.
>>>>>>
>>>>>> If I want my qualifier to be based upon an object in my
>>>>> session how do I create the qualifier? I see that I
>>>>> can put a variable in the qualifier that gets created in the
>>>>> EOModel but how do I tell D2W to substitute the variable
>>>>> with my session object at runtime?
>>>>>>
>>>>>> Thanks in advance,
>>>>>>
>>>>>> Aloha,
>>>>>> Mr. Johnny Miller
>>>>>> Web Development Manager
>>>>>> Kahalawai Media Company
>>>>>> Lahaina, HI 96761
>>>>>> tel: (808) 661-7962 | mobile: (808) 283-0791
>>>>>> website | e-mail
>>>>>>
>>>>>> _______________________________________________
>>>>>> Do not post admin requests to the list. They will be
>>>>> ignored.
>>>>>> Webobjects-dev mailing list ([email protected])
>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.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:
>>>>> https://lists.apple.com/mailman/options/webobjects-dev/tedpet5%40yahoo.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:
>>> https://lists.apple.com/mailman/options/webobjects-dev/bastian.triller%40gmail.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:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com
This email sent to [email protected]