Class OrgFilterOrOptimizer

java.lang.Object
com.evolveum.midpoint.repo.sqale.filtering.OrgFilterOrOptimizer
All Implemented Interfaces:
FilterProcessor<OrFilter>

public class OrgFilterOrOptimizer extends Object implements FilterProcessor<OrFilter>
Partially collapses ORs produced by orgRelation authorization. The generic OR processor would turn every subtree OrgFilter into its own correlated EXISTS. This optimizer groups compatible subtree org branches by target relation and replaces multi-org groups with one semijoin-style EXISTS using ancestor_oid in (...). Branches outside the optimized groups are preserved and processed through the normal sqale path. Example: an OR like isChildOf(orgA) OR id(orgA) OR isChildOf(orgB) OR id(orgB) is rewritten to one subtree check using ancestor_oid IN (orgA, orgB) plus one object OID check using oid IN (orgA, orgB). Non-compatible branches remain in the OR and are processed normally.