On 05/05/2010, at 4:17 PM, Johann Werner wrote:
> if you want to write your own comparator look at ERXComparisonSupport from
> Wonder how it should be written. Unfortunately you have to register your
> comparator for a specific class type (e.g. String.class) so it is used
> automatically in place of the default comparator but this means you can't
> specify one for solely your number attribute. Perhaps someone has more ideas?
Thanks Johann.
Maybe "WODisplayGroup" in the subject is turning people off here. :-) Say I
just want an EOSortOrdering that can solve this problem:
>> 1. I have an 'Invoice' entity with a 'number' attribute. The attribute's
>> type is VARCHAR. This is completely intentional, as the client may want the
>> "number" to contain letters at some point. (Pretend the attribute name is
>> "identifier" if it hurts your brain. :-)
>>
>> 2. I want to display the Invoice objects in a WODisplayGroup in a custom
>> order. At the moment, that order is simple: all values for Invoice.number
>> are currently actual numbers. So, for now, I want to cast them to integers,
>> and sort them numerically. (This may change later, as letters may be
>> appended.)
>>
>> 3. Using a standard (array of) EOSortOrdering (Invoice.NUMBER.ascs()), the
>> "numbers" are obviously sorted in ASCII order. {1, 10, 11, 2...} For now,
>> what I want is {1, 2, 3, ... 10, 11, ...}.
It only needs to work for in-memory sorts.
>> What am I missing here? I can write an NSComparator for these
>> number-as-string keys, if that's what's required, but then what do I do with
>> that? What I want is the EOSortOrdering for the WODisplayGroup (don't I?),
>> I don't see where the comparator would fit in.
>>
>> As a workaround, I can add this to Invoice.java:
>>
>> public Integer numberAsInteger() {
>> return new Integer(number());
>> }
>>
>> and then pass:
>>
>> new EOSortOrdering("numberAsInteger", EOSortOrdering.CompareAscending)
>>
>> to the WODisplayGroup. But that's only going to work while I know the
>> attribute values are integers-as-strings. What I need is to be able to
>> customise the comparison myself to guard against the format of the values
>> changing in the future.
>>
>> (There's an old thread here:
>>
>> http://lists.apple.com/archives/webobjects-dev/2004/Oct/msg00271.html
>>
>> which poses a very similar problem. What I need is for Chuck to expand on
>> his response: "3. Create a new comparator that does what you want." :-)
>> Where do I put that comparator, Chuck?)
I can write the code to do the comparison, I just don't understand how to plumb
it all together.
--
Paul.
http://logicsquad.net/
_______________________________________________
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]