Gerard Klijs
12/07/2019, 2:11 PMprivate fun filterFunction(direction: DType?, iban: String?, minAmount: Int?,
maxAmount: Int?, descrIncluded: String?): Predicate<Transaction> {
val predicates: MutableList<Predicate<Transaction>> = ArrayList()
direction?.let { predicates.add(Predicate { t: Transaction -> t.direction == direction }) }
iban?.let { predicates.add(Predicate { t: Transaction -> t.iban.equals(iban) }) }
minAmount?.let { predicates.add(Predicate { t: Transaction -> t.amount >= minAmount }) }
maxAmount?.let { predicates.add(Predicate { t: Transaction -> t.amount <= maxAmount }) }
descrIncluded?.let { predicates.add(Predicate { t: Transaction -> t.descr.contains(descrIncluded, true) }) }
return Predicate { transaction: Transaction ->
predicates.all { predicate: Predicate<Transaction> -> predicate.test(transaction) }
}
}
Edgars
12/07/2019, 2:22 PMval predicates = listOfNotNull(
direction?.let { Predicate { t: Transaction -> t.direction == direction } },
// and so on and so forth
)
Gerard Klijs
12/07/2019, 2:37 PMEdgars
12/07/2019, 2:39 PMPredicate { t -> t.direction == direction }
And in the example I gave above, in the let
lambda, direction
is accessible by it
.