cayenne-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Zeigler <robert.zeig...@roxanemy.com>
Subject Re: [jira] [Created] (CAY-1724) Add 'Property' class for easier and better Expression creation
Date Wed, 11 Jul 2012 15:08:11 GMT
Yes, it will be confusing. :)

Robert

On Jul 11, 2012, at 7/119:24 AM , John Huss wrote:

> Hmm, there is already a Property class in org.apache.cayenne.reflect.
> Where would this go?  Perhaps org.apache.cayenne.exp
> or org.apache.cayenne.util?  Will it be confusing to have two classes with
> the same name?
> 
> John
> 
> On Wed, Jul 11, 2012 at 2:04 AM, Andrus Adamchik <andrus@objectstyle.org>wrote:
> 
>> +1. I saw it used on one project and it was a nice concept.
>> 
>> Andrus
>> 
>> On Jul 11, 2012, at 7:30 AM, John Huss (JIRA) wrote:
>> 
>>> John Huss created CAY-1724:
>>> ------------------------------
>>> 
>>>            Summary: Add 'Property' class for easier and better
>> Expression creation
>>>                Key: CAY-1724
>>>                URL: https://issues.apache.org/jira/browse/CAY-1724
>>>            Project: Cayenne
>>>         Issue Type: Improvement
>>>         Components: Core Library
>>>   Affects Versions: 3.2M1
>>>           Reporter: John Huss
>>>           Priority: Minor
>>>        Attachments: Property.java
>>> 
>>> Project Wonder (WebObjects) has a class which is basically just a
>> wrapper around an attribute or relationship name that gives you a way to
>> create Expressions in type-safe manner and with minimal effort.  Also sort
>> orderings can be easily generated.  In Wonder, these "property" objects are
>> part of the entity template so they are generated automatically.
>>> 
>>> So for example:
>>> 
>>> public class _Artist extends CayenneDataObject {
>>>   public static final Property<String> NAME = new
>> Property<String>(NAME_PROPERTY);
>>> ...
>>> }
>>> 
>>> Then client code can do things like:
>>> 
>>> new SelectQuery(Artist.class, NAME.eq("Pablo").andExp(AGE.gt(40)),
>> AGE.descs());
>>> 
>>> This would select all artists with name equal to Pablo and age greater
>> than 40 and order them in descending age order.
>>> 
>>> This concept has been proven to work incredibly well with WebObjects.
>> It's almost as readable as using plain strings but has complete
>> compile-time checking for the property name and the type of the objects it
>> is compared with.
>>> 
>>> A complete implementation is attached.  It's very simple since
>> ExpressionFactory does the work.  If this is accepted, it would make sense
>> to modify the built-in entity templates to generate Property constants for
>> all of the properties.
>>> 
>>> --
>>> This message is automatically generated by JIRA.
>>> If you think it was sent incorrectly, please contact your JIRA
>> administrators:
>> https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
>>> For more information on JIRA, see:
>> http://www.atlassian.com/software/jira
>>> 
>>> 
>>> 
>> 
>> 


Mime
View raw message