Есть ли более понятный и понятный способ выразить это?
List<LocationVO> listLocation = listLocationAll.stream().filter(l -> {
boolean ok = true;
if ( filter.getClient_id() != null && filter.getClient_id().longValue() != l.getParent_client_id() ) {
ok = false;
}
if ( filter.getLocation_id() != null && filter.getLocation_id().longValue() != l.getLocation_id() ) {
ok = false;
}
if (filter.getLocation_type() != null && (filter.getLocation_type().equals(l.getLocation_type()) == false) ) {
ok = false;
}
return ok;
}).collect(Collectors.toList());
LocationVO cotains:
public class LocationVO implements Serializable {
private static final long serialVersionUID = 1L;
private long location_id;
private long parent_client_id;
private String name;
private String location_type;
...
}
Фильтр имеет тип LocationFilter и содержит:
public class LocationFilter implements Serializable {
private Long client_id;
private Long location_id;
private String location_type;
}
Первый оператор if: если для идентификатора клиента был установлен фильтр -> не содержит никакого LocationVO, у которого связанный клиент не имеет этого идентификатора
Второй оператор if: если для местоположения был установлен фильтр ->удалить / отфильтровать все LocationVO, у которых нет этого идентификатора
Третий оператор if: отфильтровать все VO, которые не имеют location_type фильтра.
((Я думаю, ни один из них не устарел ((как уже упоминалось в комментариях))))