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 >