That would probably be ideal, since certain things like case sensitivity and 
collations apply only to Strings. But since case sensitivity is already a part 
of Ordering I propose the following solution. Quite simple, just checks if the 
values are strings and if so, uses a collator specified either per Ordering 
instance or globally:

https://github.com/godurkodi/cayenne/commit/61738f56dad753da07040b0f44de7bf3f297c680

Any comment?

Cheers,
- hugi


> On 11. jan. 2017, at 22:42, Andrus Adamchik <and...@objectstyle.org> wrote:
> 
> I am +1 in principle. Just need to figure out a clean implementation that can 
> distinguish between String and other types of properties. Perhaps the initial 
> solution may be a "StringOrdering extends Ordering" that takes the collator 
> and overrides comparison method? 
> 
> Andrus
> 
> 
>> On Jan 11, 2017, at 5:12 PM, Hugi Thordarson <h...@karlmenn.is> wrote:
>> 
>> Hi all.
>> 
>> It looks like Cayenne's Ordering uses String.compareTo() when sorting String 
>> values in memory using orderList() and orderedList() — and there doesn’t 
>> seem to be any way to change that behaviour. This means sorting of 
>> international strings in memory is somewhat broken.
>> 
>> Do you think it would be a good idea to add support for:
>> 
>> 1) Specifying a default java.text.Collator to use for new Ordering instances.
>> 2) Specifying a java.text.Collator for an instance of Ordering.
>> 
>> What do you think?
>> 
>> Cheers,
>> - hugi
> 

Reply via email to