Not only readability, but also picking the right options. For me, code completion on a method name is the quickest way to work through chained query options. An enum argument is also workable, but extra typing. But a generic type like int or boolean makes it difficult to figure out what to specify without looking up the documentation.
On Fri, Nov 21, 2014 at 10:02 AM, Andrus Adamchik <and...@objectstyle.org> wrote: > enum also makes it needlessly verbose :-/ > > But yeah, I take your point. > > >> On Nov 21, 2014, at 5:56 PM, Michael Gentry <mgen...@masslight.net> wrote: >> >> I'd avoid true/false for that purpose. We had the same thing in >> orderings before I changed it to an enum. I'd specify it in the >> method name or use an enum that makes sense when reading it. >> >> mrg >> >> >> On Fri, Nov 21, 2014 at 9:47 AM, Andrus Adamchik <and...@objectstyle.org> >> wrote: >>>> So are you thinking something like: >>>> Artist.ARTIST_NAME.contains("Van")? >>> >>> yep. >>> >>>> Also, what about >>>> case-insensitive? >>> >>> Probably as a second true/false argument? I started to dislike the look of >>> "likeIgnoreCase" recently :) >>> >>> Property.contains(string); >>> Property.contains(string, true); >>> Property.contains(string, false); >>> >>> >>> Andrus >>> >>> >>>> On Nov 21, 2014, at 5:33 PM, Michael Gentry <mgen...@masslight.net> wrote: >>>> >>>> I 'like' this. >>>> >>>> So are you thinking something like: >>>> Artist.ARTIST_NAME.contains("Van")? Also, what about >>>> case-insensitive? >>>> >>>> mrg >>>> >>>> >>>> On Fri, Nov 21, 2014 at 7:19 AM, Andrus Adamchik <and...@objectstyle.org> >>>> wrote: >>>>> Another API idea that I just had while analyzing boilerplate code of the >>>>> client Cayenne apps. An argument to Property.like(..) (or second argument >>>>> to ExpressionFactory.likeExp(..)) requires a full pattern to match >>>>> against. So people would often write their own utility code to wrap a >>>>> String in "%" signs. Cayenne can easily take care of this via the >>>>> following methods: >>>>> >>>>> >>>>> Property.contains(string); >>>>> // same as Property.like("%" + string + "%"); >>>>> >>>>> Property.startsWith(string); >>>>> // same as Property.like(string + "%"); >>>>> >>>>> Property.endsWith(string); >>>>> // same as Property.like("%" + string); >>>>> >>>>> In addition to saving the user from String concatenation, these new >>>>> methods can do proper symbol escaping, making "like" much safer to use. >>>>> >>>>> Andrus >>>> >>> >> >