package Ġcom . ava quo . st arry . queries Ċ Ċ import Ġcom . ava quo . st arry . ids . IDs Ċ import Ġcom . ava quo . st arry . ids . Table Ċ import Ġcom . ava quo . st arry . world . Store Ċ Ċ /** Ċ Ġ* ĠA Ġsearch Ġfor Ġan Ġentity Ġbased Ġon Ġspecific Ġterms . Ċ Ġ* Ġ@ param Ġstore ĠReference Ġto Ġthe Ġworld 's Ġstorage Ċ Ġ* Ġ@ param Ġterms ĠThe Ġlist Ġof ĠTerms Ġused Ġto Ġcompare Ġto Ġa Ġgiven Ġentity . Ċ Ġ*/ Ċ open Ġclass ĠFilter ( ĊĠĠĠ Ġprivate Ġval Ġstore : ĠStore , ĊĠĠĠ Ġval Ġterms : ĠMutable List < Term > Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġrobust Ġsearch Ġtool Ġfor Ġfinding Ġspecific Ġentities Ġin Ġthe Ġworld Ġbased Ġon Ġits Ġindividual Ġelements . ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġlist Ġof Ġall Ġentities Ġmatching Ġthe Ġgiven Ġterms . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġsearch (): ĠIDs Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfound Entities : ĠIDs Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġstore . tables . map Ġ{ Ġtable Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( store . getEntity ( table [ 0 ]). type . contains All ( terms . map Ġ{ Ġit . id Type Ġ})) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Entities Ġ+= Ġtable ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġterms . map Ġ{ Ġterm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( term . parameter Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfound Entities Ġ-= Ġtrim Entities ( term . parameter , Ġtable ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġfound Entities ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHelper Ġfunction Ġto Ġfind Ġnon - matching Ġentities . ĊĠĠĠĠ Ġ* Ġ@ param Ġparameter ĠThe Ġspecific Ġdata Ġto Ġbe Ġcompared Ġwith . ĊĠĠĠĠ Ġ* Ġ@ param Ġtable ĠA Ġlist Ġof Ġall Ġentities Ġwhich Ġare Ġbeing Ġchecked ĊĠĠĠĠ Ġ* Ġ@ return ĠA Ġlist Ġof Ġall Ġentities Ġwhich Ġdo Ġnot Ġmatch Ġthe Ġspecified Ġparameter . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġtrim Entities ( parameter : ĠAny , Ġtable : ĠTable ): ĠIDs Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtrim Entities : ĠIDs Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġtable . map Ġ{ Ġe Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Invalid Parameter ( store . getEntity ( e ). ids , Ġparameter )) Ġtrim Entities Ġ+= Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrim Entities ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠChecks Ġif Ġa Ġsingle Ġentity Ġcontains Ġthe Ġdesired Ġparameter Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġis Invalid Parameter ( elements : ĠIDs , Ġparameter : ĠAny ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġelements . map Ġ{ Ġif Ġ( store . getElement ( it ) Ġ== Ġparameter ) Ġreturn Ġfalse Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} Ċ }