package Ġcom . j ose lu is qu int ana . domain Ċ Ċ import Ġcom . j ose lu is qu int ana . data . O omp a Lo omp a . O omp a Lo omp a Ċ import Ġio . reactivex . Single Ċ Ċ class ĠFilter O omp a Lo omp as UseCase Ġ{ ĊĊĠĠĠ Ġfun Ġexecute ( o omp a Lo omp as : ĠList < O omp a Lo omp a >, Ġfilter : ĠFilter ): ĠSingle < List < O omp a Lo omp a >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSingle . from Callable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġo omp a Lo omp as . filter Ġ{ Ġshould Filter ( filter , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshould Filter ( filter : ĠFilter , Ġo omp a Lo omp a : ĠO omp a Lo omp a ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġgender Filter Empty Ġ= Ġ! filter . male Ġ&& Ġ! filter . female ĊĊĠĠĠĠĠĠĠ Ġ// ĠFilter Ġby Ġgender Ġonly Ġwhen Ġthere Ġare Ġone Ġor Ġmore Ġfiltered Ġoptions . ĊĠĠĠĠĠĠĠ Ġif Ġ(! gender Filter Empty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . male Ġ&& Ġo omp a Lo omp a . gender ?. equals (" M ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . female Ġ&& Ġo omp a Lo omp a . gender ?. equals (" F ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprof ession Filter Empty Ġ= Ġ! filter . developer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! filter . metal worker ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! filter . bre wer ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! filter . ge mc utter ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġ! filter . med ic ĊĊĠĠĠĠĠĠĠ Ġ// ĠFilter Ġby Ġprof ession Ġonly Ġwhen Ġthere Ġare Ġone Ġor Ġmore Ġfiltered Ġoptions . ĊĠĠĠĠĠĠĠ Ġif Ġ(! prof ession Filter Empty ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . developer Ġ&& Ġo omp a Lo omp a . prof ession ?. equals (" Developer ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . metal worker Ġ&& Ġo omp a Lo omp a . prof ession ?. equals (" Metal worker ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . bre wer Ġ&& Ġo omp a Lo omp a . prof ession ?. equals (" Bre wer ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . ge mc utter Ġ&& Ġo omp a Lo omp a . prof ession ?. equals (" Gem c utter ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! filter . med ic Ġ&& Ġo omp a Lo omp a . prof ession ?. equals (" Med ic ") Ġ?: Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ } Ċ