/******************************************************************************* čĊ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠExact pro Ġ( Exact pro ĠSystems ĠLimited ) čĊ Ġ* čĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); čĊ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . čĊ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat čĊ Ġ* čĊ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* čĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware čĊ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , čĊ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . čĊ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand čĊ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . čĊ Ġ******************************************************************************/ čĊč Ċ package Ġcom . exact pro . th 2 . rpt dat apro vider . entities . filters čĊč Ċ import Ġcom . exact pro . th 2 . rpt dat apro vider . entities . filters . info . Filter Special Type čĊč Ċ class ĠFilter Predicate < T >( private Ġval Ġfilters : ĠList < Filter < T >>, Ġprivate Ġval Ġspecial Types : ĠList < Filter Special Type >) Ġ{ čĊčĊĠĠĠ Ġconstructor ( filters : ĠList < Filter < T >>) Ġ: Ġthis ( čĊĠĠĠĠĠĠĠ Ġfilters Ġ= Ġfilters , čĊĠĠĠĠĠĠĠ Ġspecial Types Ġ= Ġfilters . map Ġ{ Ġit . getInfo (). filter Special Type Ġ} čĊĠĠĠ Ġ) čĊčĊčĊĠĠĠ Ġfun Ġapply ( element : ĠT ): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġif Ġ( isEmpty ()) Ġreturn Ġtrue čĊĠĠĠĠĠĠĠ Ġreturn Ġfilters . all Ġ{ Ġit . match ( element ) Ġ} čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġget Special Types (): ĠList < Filter Special Type > Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġspecial Types čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ{ čĊĠĠĠĠĠĠĠ Ġreturn Ġfilters . isEmpty () čĊĠĠĠ Ġ} č Ċ }