package Ġcom . sp ir acle software . android sample . domain . entity Ċ Ċ import Ġcom . sp ir acle software . android sample . domain . entity . Transfer Direction Filter . ALL Ċ import Ġcom . sp ir acle software . android sample . domain . utils . len ient Contains Ċ import Ġjava . time . format . DateTime Formatter Ċ Ċ data Ġclass ĠTransactions Filter ( ĊĠĠĠ Ġval Ġsearch Query : ĠString Ġ= Ġ"", ĊĠĠĠ Ġval Ġdirection Filter : ĠTransfer Direction Filter Ġ= ĠALL , Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** Ġ@ return Ġwhether Ġany Ġfilter Ġis Ġbeing Ġapplied Ġ*/ ĊĠĠĠ Ġfun ĠisActive (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġsearch Query . isNotEmpty () Ġ|| Ġdirection Filter Ġ!= ĠALL ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Filtered ( transactions : ĠList < Transaction >) Ġ= ĊĠĠĠĠĠĠĠ Ġtransactions . filter (:: matches ) ĊĊĠĠĠ Ġprivate Ġfun Ġmatches ( transaction : ĠTransaction ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( direction Filter Ġ!= ĠALL ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( transaction . transfer Direction Ġ!= Ġdirection Filter . direction ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( search Query . isNotBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery Ġ= Ġsearch Query . trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! transaction . matches Search Query ( query )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠTransaction . matches Search Query ( query : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatches Name Ġ= Ġname . len ient Contains ( query ) ĊĠĠĠĠĠĠĠ Ġval Ġmatches Money Ġ= Ġsigned Money . toString (). len ient Contains ( query ) ĊĠĠĠĠĠĠĠ Ġval Ġmatches Date Ġ= Ġprocessing Date . format ( DATE _ FORMAT ). len ient Contains ( query ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmatches Name Ġ|| Ġmatches Money Ġ|| Ġmatches Date ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠDATE _ FORMAT Ġ= ĠDateTime Formatter . of Pattern (" MMMM Ġdd ĠMM Ġy yyy ") !! ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ enum Ġclass ĠTransfer Direction Filter ( ĊĠĠĠ Ġval Ġdirection : ĠTransfer Direction ? Ċ ) Ġ{ ĊĠĠĠ ĠALL ( null ), ĊĠĠĠ ĠIN COM ING _ ONLY ( Transfer Direction . IN COM ING ), ĊĠĠĠ ĠOUT GO ING _ ONLY ( Transfer Direction . OUT GO ING ); Ċ }