You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Bruno P. Kinoshita (JIRA)" <ji...@apache.org> on 2013/05/14 03:51:15 UTC
[jira] [Commented] (FUNCTOR-26) functors filtering on bean
properties using(== ,!=, >,>=.>.>=. isNull, Like,..... )
[ https://issues.apache.org/jira/browse/FUNCTOR-26?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13656630#comment-13656630 ]
Bruno P. Kinoshita commented on FUNCTOR-26:
-------------------------------------------
Sounds like an useful improvement for [functor]. Perhaps we could find another name for that; not sure if PropertyPredicate is the best name for that. As a side note, JDK8's Predicate [1] is a functional interface with the test(A) method and or/xor/and default methods, all of them returning a new Predicate. Allowing similar fluent API as your patch :)
[1] http://download.java.net/jdk8/docs/api/java/util/function/Predicate.html
> functors filtering on bean properties using(== ,!=, >,>=.>.>=. isNull, Like,..... )
> -------------------------------------------------------------------------------------
>
> Key: FUNCTOR-26
> URL: https://issues.apache.org/jira/browse/FUNCTOR-26
> Project: Commons Functor
> Issue Type: Improvement
> Reporter: Anil K.Kinge
> Assignee: Brent Worden
> Attachments: functors.propertypredicates.new.diff
>
>
> In my current project I created a set of new Predicates that I call as Property Predicates. These predicates can used to filter a collection based on property values.
> For example we have :
> Class Foo{
> String name;
> Int age;
> Address address;
> }
> Address{
> String street;
> String zip;
> }
> Collection<Foo> myFoos ;
> And we want to find all the Foo in myFoos with name that starts with A, and age > 40 and who are living at Zip 07095 we can create a Predicate like follows:
> Predicate p = new PropertyLikePredicate("name","A*")
> .andGreaterThan("age",40)
> .andEquals(address.zip,"07095");
> Note: Like supports wildcards '*' and '?'
> What is even better is that these predicates work with collections too. What I mean is if we have :
> FooBar{
> String name;
> Collection<Address> addresses;
> }
> And you want to locate someone with a zip 07095 as part of anyof its' addresses all we need is to create a predicate :
> Predicate p = new PropertyEqualsPredicate("addresses[].zip","07095");
> My Predicate chain currently supports the following features:
> 1. andEquals
> 2. orEquals
> 3. andNotEquals
> 4. orNotEquals
> 5. andLike
> 6. orLike
> 7. andGreatorThan
> 8. orGreatorThan
> 9. andGreatorThanOrEquals
> 10. orGreatorThanOrEquals
> 11. andLessThan
> 12. orLessThan
> 13. andLessThanOrEquals
> 14. orLessThanOrEquals
> 15. isNull
> 16. isNotNull
> 17. orNull
> 18. orNotNull
> 19. orNullOrEmpty
> 20. orNotNullOrEmpty
> 21. andNullOrEmpty
> 22. andNotNullOrEmpty
> All features have accompanying testcases. In my opinion this is a powerful addition to the functors and I would like to contribute this work to the commons-collection.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira