package Ġau . com . di us . p act . model . matching rules Ċ Ċ import Ġau . com . di us . p act . model . P act Spec Version Ċ Ċ class ĠMatch ing Rules Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġrules Ġ= ĠHashMap < String , ĠCategory >() ĊĊĠĠĠ Ġfun Ġadd Category ( category : ĠString ): ĠCategory Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! rules . containsKey ( category )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrules [ category ] Ġ= ĠCategory ( category ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġrules [ category ] !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Category ( category : ĠCategory ): ĠCategory Ġ{ ĊĠĠĠĠĠĠĠ Ġrules [ category . name ] Ġ= Ġcategory ĊĠĠĠĠĠĠĠ Ġreturn Ġcategory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġrules Ġare Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrules . all Ġ{ Ġit . value . isEmpty () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġrules Ġare Ġnot Ġempty ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis NotEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrules . any Ġ{ Ġit . value . isNotEmpty () Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġhas Category ( category : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrules . containsKey ( category ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Categories (): ĠSet < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrules . keys ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" Matching Rules ( rules =$ rules )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcopy (): ĠMatch ing Rules Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmatching Rules Ġ= ĠMatch ing Rules () ĊĊĠĠĠĠĠĠĠ Ġrules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmatching Rules . add Category ( it . value Ġ/* . copy () */) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmatching Rules ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto Map ( p act Spec Version : ĠP act Spec Version ): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( p act Spec Version Ġ< ĠP act Spec Version . V 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto V 2 Map () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġto V 3 Map () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto V 3 Map (): ĠMap < String , ĠMap < String , ĠAny ? >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠMap < String , ĠAny ? >>() ĊĊĠĠĠĠĠĠĠ Ġrules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . key ] Ġ= Ġit . value . toMap ( P act Spec Version . V 3 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto V 2 Map (): ĠMap < String , ĠAny ?> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= ĠHashMap < String , ĠAny ?> () ĊĊĠĠĠĠĠĠĠ Ġrules . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . toMap ( P act Spec Version . V 2 ). forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . key ] Ġ= Ġit . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Category ( category : ĠString ): ĠCategory ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrules . get ( category ) ĊĠĠĠ Ġ} Ċ }