Class Filters<E>
- java.lang.Object
-
- org.fest.assertions.api.filter.Filters<E>
-
- Type Parameters:
E
- the type of element of group to filter.
public class Filters<E> extends java.lang.Object
Filters the elements of a given
or array according to the specified filter criteria.Iterable
Filter criteria can be expressed either by a
Condition
or a pseudo filter language on elements properties.Note that the given
Iterable
or array is not modified, the filters are performed on a copy.With
Condition
:List<Player> players = ...; Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP"){ public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose)
With pseudo filter language on element properties :assertThat(filter(players).with("pointsPerGame").greaterThan(20) .and("assistsPerGame").greaterThan(7) .get()).containsOnly(james, rose);
- Author:
- Joel Costigliola, Mikhail Mazursky
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description Filters<E>
and(java.lang.String propertyName)
Alias ofwith(String)
for synthetic sugar to write things like :.Filters<E>
being(Condition<? super E> condition)
Filter the underlying group, keeping only elements satisfying the givenCondition
.
Same ashaving(Condition)
- pick the method you prefer to have the most readable code.Filters<E>
equalsTo(java.lang.Object propertyValue)
Filters the underlying iterable to keep object with property (specified bywith(String)
) equals to given value.static <E> Filters<E>
filter(E[] array)
Creates a new
with the array to filter.Filters
static <E> Filters<E>
filter(java.lang.Iterable<E> iterable)
Creates a new
with theFilters
Iterable
to filter.java.lang.Iterable<E>
get()
Returns the resulting filtered Iterable<E> (even if the constructor parameter type was an array).Filters<E>
having(Condition<? super E> condition)
Filter the underlying group, keeping only elements satisfying the givenCondition
.
Same asbeing(Condition)
- pick the method you prefer to have the most readable code.Filters<E>
in(java.lang.Object... propertyValues)
Filters the underlying iterable to keep object with property (specified bywith(String)
) equals to one of the given values.Filters<E>
notEqualsTo(java.lang.Object propertyValue)
Filters the underlying iterable to keep object with property (specified bywith(String)
) not equals to given value.Filters<E>
notIn(java.lang.Object... propertyValues)
Filters the underlying iterable to keep object with property (specified bywith(String)
) not in the given values.Filters<E>
with(java.lang.String propertyName)
Sets the name of the property used for filtering, it may be a nested property like"adress.street.name"
.Filters<E>
with(java.lang.String propertyName, java.lang.Object propertyValue)
Filter the underlying group, keeping only elements with a property equals to given value.
-
-
-
Method Detail
-
filter
public static <E> Filters<E> filter(java.lang.Iterable<E> iterable)
Creates a new
with theFilters
Iterable
to filter.Chain this call to express filter criteria either by a
Condition
or a pseudo filter language on elements properties.Note that the given
Iterable
is not modified, the filters are performed on a copy.- With
Condition
:List<Player> players = ...; Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP"){ public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose)
- With pseudo filter language on element properties :assertThat(filter(players).with("pointsPerGame").greaterThan(20) .and("assistsPerGame").greaterThan(7).get()) .containsOnly(james, rose);
- Parameters:
iterable
- theIterable
to filter.- Returns:
- the created
.Filters
- Throws:
java.lang.NullPointerException
- if the given iterable isnull
.
-
filter
public static <E> Filters<E> filter(E[] array)
Creates a new
with the array to filter.Filters
Chain this call to express filter criteria either by a
Condition
or a pseudo filter language on elements properties.Note that the given array is not modified, the filters are performed on an
Iterable
copy of the array.With
Condition
:List<Player> players = ...; Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP"){ public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose);
With pseudo filter language on element properties :assertThat(filter(players).with("pointsPerGame").greaterThan(20) .and("assistsPerGame").greaterThan(7) .get()).containsOnly(james, rose);
- Parameters:
array
- the array to filter.- Returns:
- the created
.Filters
- Throws:
java.lang.NullPointerException
- if the given array isnull
.
-
being
public Filters<E> being(Condition<? super E> condition)
Filter the underlying group, keeping only elements satisfying the givenCondition
.
Same ashaving(Condition)
- pick the method you prefer to have the most readable code.List<Player> players = ...; Condition<Player> potentialMVP = new Condition<Player>("is a possible MVP") { public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).being(potentialMVP).get()).containsOnly(james, rose);
-
having
public Filters<E> having(Condition<? super E> condition)
Filter the underlying group, keeping only elements satisfying the givenCondition
.
Same asbeing(Condition)
- pick the method you prefer to have the most readable code.List<Player> players = ...; Condition<Player> mvpStats = new Condition<Player>("is a possible MVP") { public boolean matches(Player player) { return player.getPointsPerGame() > 20 && player.getAssistsPerGame() > 7; }; }; // use filter static method to build Filters assertThat(filter(players).having(mvpStats).get()).containsOnly(james, rose);
-
with
public Filters<E> with(java.lang.String propertyName, java.lang.Object propertyValue)
Filter the underlying group, keeping only elements with a property equals to given value.Let's, for example, filter Employees with name "Alex" :
filter(employees).with("name", "Alex").get();
which is shortcut of :filter(employees).with("name").equalsTo("Alex").get();
- Parameters:
propertyName
- the name of the property whose value will compared to given value. It may be a nested property.propertyValue
- the expected property value.- Returns:
- this
Filters
to chain other filter operations. - Throws:
org.fest.util.IntrospectionError
- if an element in the givenIterable
does not have a property with a given propertyName.java.lang.NullPointerException
- if the given propertyName isnull
.
-
with
public Filters<E> with(java.lang.String propertyName)
Sets the name of the property used for filtering, it may be a nested property like"adress.street.name"
.The typical usage is to chain this call with a comparison method, for example :
filter(employees).with("name").equalsTo("Alex").get();
- Parameters:
propertyName
- the name of the property used for filtering. It may be a nested property.- Returns:
- this
Filters
to chain other filter operation. - Throws:
java.lang.NullPointerException
- if the given propertyName isnull
.
-
and
public Filters<E> and(java.lang.String propertyName)
Alias ofwith(String)
for synthetic sugar to write things like :.filter(employees).with("name").equalsTo("Alex").and("job").notEqualsTo("lawyer").get();
- Parameters:
propertyName
- the name of the property used for filtering. It may be a nested property.- Returns:
- this
Filters
to chain other filter operation. - Throws:
java.lang.NullPointerException
- if the given propertyName isnull
.
-
equalsTo
public Filters<E> equalsTo(java.lang.Object propertyValue)
Filters the underlying iterable to keep object with property (specified bywith(String)
) equals to given value.Typical usage :
filter(employees).with("name").equalsTo("Luke").get();
- Parameters:
propertyValue
- the filter value.- Returns:
- this
Filters
to chain other filter operation. - Throws:
java.lang.NullPointerException
- if the property name to filter on has not been set.
-
notEqualsTo
public Filters<E> notEqualsTo(java.lang.Object propertyValue)
Filters the underlying iterable to keep object with property (specified bywith(String)
) not equals to given value.Typical usage :
filter(employees).with("name").notEqualsTo("Vader").get();
- Parameters:
propertyValue
- the filter value.- Returns:
- this
Filters
to chain other filter operation. - Throws:
java.lang.NullPointerException
- if the property name to filter on has not been set.
-
in
public Filters<E> in(java.lang.Object... propertyValues)
Filters the underlying iterable to keep object with property (specified bywith(String)
) equals to one of the given values.Typical usage :
filter(players).with("team").in("Bulls", "Lakers").get();
- Parameters:
propertyValues
- the filter values.- Returns:
- this
Filters
to chain other filter operation. - Throws:
java.lang.NullPointerException
- if the property name to filter on has not been set.
-
notIn
public Filters<E> notIn(java.lang.Object... propertyValues)
Filters the underlying iterable to keep object with property (specified bywith(String)
) not in the given values.Typical usage :
filter(players).with("team").notIn("Heat", "Lakers").get();
- Parameters:
propertyValues
- the filter values.- Returns:
- this
Filters
to chain other filter operation. - Throws:
java.lang.NullPointerException
- if the property name to filter on has not been set.
-
get
public java.lang.Iterable<E> get()
Returns the resulting filtered Iterable<E> (even if the constructor parameter type was an array).- Returns:
- the Iterable<E> containing the filtered elements.
-
-