[ 
https://issues.apache.org/jira/browse/CAY-1241?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12721741#action_12721741
 ] 

Laurentiu Cocanu commented on CAY-1241:
---------------------------------------

What about this new version?

 /**
     * Creates an expression that matches the primary key of object in 
<code>ObjectId</code>'s <code>IdSnapshot</code> for the argument 
<code>object</code>.     
     */
    public static Expression matchObject(Persistent object) {           
        ObjectId obid = object.getObjectId();           
                Map<String, ?> map = obid.getIdSnapshot();
                
                List<Expression> pairs = new ArrayList<Expression>(map.size());

            for (Map.Entry<String, ?> entry : map.entrySet()) {

                    Expression exp = expressionOfType(Expression.AND);
                    exp.setOperand(0, new ASTObjPath(entry.getKey()));
                    exp.setOperand(1, wrapPathOperand(entry.getValue()));
                    pairs.add(exp);
                }
            
           return joinExp(Expression.AND, pairs);
    }
    
    /**
     * Creates an expression that matches any of the objects contained in the 
list <code>objects</code>
     */   
    public static Expression matchObjects(List<Persistent> objects) {           
        
                List<Expression> pairs = new 
ArrayList<Expression>(objects.size());

            for (Persistent object : objects) {
                    
                    pairs.add(matchObject(object));
                }
            
           return joinExp(Expression.OR, pairs);
    }


Soon I'll come with some unit tests too.

> Add method to ExpressionFactory to match against the primary key of an object 
> or list of objects
> ------------------------------------------------------------------------------------------------
>
>                 Key: CAY-1241
>                 URL: https://issues.apache.org/jira/browse/CAY-1241
>             Project: Cayenne
>          Issue Type: Improvement
>          Components: Cayenne Core Library
>    Affects Versions: 3.0M6
>            Reporter: Øyvind Harboe
>         Attachments: patch.txt
>
>
> It would be helpful to have a method in ExpressionFactory that build an 
> expression using matchDbExp() to match an object's primary keys.
> This can be helpful in excluding a single or list of known objects from the 
> result of a query.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to