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

        

Reply via email to