On Jun 21, 2010, at 8:39 AM, Marc Guenther wrote:

> Hi,
> 
> On 20.06.2010, at 18:47, Andrew R. Kinnie wrote:
> 
>> [...] So now I have Booking.PERFORMANCE_KEY + "." + 
>> Performance.PERFORMANCE_TYPE_KEY + "." + PerformanceType.NAME_KEY
> 
> Last year I cobbled together a little extension to the ERXKey stuff, which 
> allows you to create ERXKey paths like this:
> 
>  Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME()

I like that!  I was thinking of using the model info to try and implement 
something like:

Booking.keyPathTo(PerformanceType.NAME).

Though it would probably have to be more verbose:
Booking.keyPathTo(PerformanceType, PerformanceType.NAME).

Or is that
Booking.keyPathTo(PerformanceType().NAME()).


Chuck

> which is almost as clear to read as the hardcoded version:
> 
>> Though really, hardcoding it as performance.performancType.name seems MUCH 
>> clearer.  :-/
> 
> but it will catch typos :) and allows you to auto-complete through key paths, 
> which is really nice.
> 
> 
> So you can create an ascending sort ordering like this:
> 
>  Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME().ascs()
> 
> or a qualifier:
> 
>  Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME().eq(someName)
> 
> 
> It also has the added benefit of being type safe, so for example a
> 
>  myBooking.valueForKeyPath(Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME())
> 
> will return a String, or the hypothetical to-many keypath
> 
>  myBooking.valueForKeyPath(Booking.ITEMS.NAME())
> 
> would return an NSArray<String>. Calling it on the wrong object type or with 
> valueForKey() is a compiler error:
> 
>  
> mySomethingElse.valueForKeyPath(Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME())
>  // won't compile
>  myBooking.valueForKey(Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME()) // 
> won't compile
> 
> The valueInObject() method also works:
> 
>  Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME().valueInObject(myBooking)
> 
> and returns a String, as expected. Giving it an NSArray instead
> 
>  Booking.PERFORMANCE.PERFORMANCE_TYPE().NAME().valueInObject(allBookings)
> 
> of course returns an NSArray<String>. So you don't need arrayValueInObject() 
> anymore. Ditto for
> 
> Booking.ITEMS.NAME().valueInObject(myBooking)
> 
> which returns an NSArray<String> because of the to-many relation in the key 
> path.
> 
> 
> I never came around to posting this, cause:
> - it's based on a legacy eogenerator template
> - it does incompatible changes to Wonder's ERXKey (adds another type)
> 
> but if there is interest, I can clean this up, update to the current Wonder 
> implementation and current eogenerator and post it.
> 
> We are using it for over a year now, and it works great.
> 
> Marc
> 
> _______________________________________________
> 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/chill%40global-village.net
> 
> This email sent to [email protected]

-- 
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall 
knowledge of WebObjects or who are trying to solve specific problems.    
http://www.global-village.net/products/practical_webobjects







Attachment: smime.p7s
Description: S/MIME cryptographic signature

 _______________________________________________
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