Yep.

> Am 17.07.2017 um 17:50 schrieb Lon Varscsak <lon.varsc...@gmail.com>:
> 
> Is your key “customerNameForSorting”?
> 
> On Mon, Jul 17, 2017 at 7:40 AM, Musall, Maik <m...@selbstdenker.ag> wrote:
> 
>> Hi John,
>> 
>>> Am 17.07.2017 um 16:08 schrieb John Huss <johnth...@gmail.com>:
>>> 
>>> Expressions will work with non-modeled properties as long as the methods
>>> look like getters - have the "get" prefix and no arguments.
>> 
>> Unfortunately not:
>> 
>> Caused by: java.lang.IllegalArgumentException: Property
>> 'getCustomerNameForSorting' is not readable
>>        at org.apache.cayenne.reflect.BeanAccessor.<init>(
>> BeanAccessor.java:92)
>>        at org.apache.cayenne.reflect.PropertyUtils.createSegmentAccessor(
>> PropertyUtils.java:115)
>>        at org.apache.cayenne.reflect.PropertyUtils.
>> getOrCreateSegmentAccessor(PropertyUtils.java:102)
>>        at org.apache.cayenne.reflect.PropertyUtils$PathAccessor.
>> getValue(PropertyUtils.java:232)
>>        at org.apache.cayenne.reflect.PropertyUtils.getProperty(
>> PropertyUtils.java:124)
>>        at org.apache.cayenne.CayenneDataObject.readSimpleProperty(
>> CayenneDataObject.java:161)
>>        at org.apache.cayenne.CayenneDataObject.readNestedProperty(
>> CayenneDataObject.java:127)
>>        at org.apache.cayenne.CayenneDataObject.readNestedProperty(
>> CayenneDataObject.java:147)
>>        at org.apache.cayenne.exp.parser.ASTObjPath.evaluateNode(
>> ASTObjPath.java:60)
>>        at org.apache.cayenne.exp.parser.SimpleNode.evaluate(
>> SimpleNode.java:417)
>> 
>> Signature is: public String getCustomerNameForSorting()
>> 
>> 
>>> But I would use this:
>>> 
>>> Collections.sort(list, (a,b) -> a.getSomeProp().compareTo(b.
>> getSomeProp()));
>> 
>> Thought of that, but it would require me to re-implement the path segment
>> tokenization and everything.
>> 
>> Maik
>> 
>> 
>>> On Mon, Jul 17, 2017 at 8:08 AM Musall, Maik <m...@selbstdenker.ag>
>> wrote:
>>> 
>>>> Hi all,
>>>> 
>>>> I have a UI with a list of objects and user-configurable filters and
>>>> sorting criteria. Most of the sorting criteria are plain db path
>>>> expressions, so I can just feed them into Ordering.orderedList(objects).
>>>> 
>>>> A couple of them however are path expressions with the last segment
>> being
>>>> not a Property, but a method name that is supposed to be invoked, which
>>>> would then return a String, after which the list is to be ordered. This
>>>> worked fine in the past using EOF and EOSortOrdering, but Cayenne's
>>>> ordering throws an ExpressionException on evaluate().
>>>> 
>>>> What is the usual way in Cayenne to deal with this?
>>>> 
>>>> Thanks
>>>> Maik
>>>> 
>>>> 
>> 
>> 

Reply via email to