package Ġde . ps dev . dev drawer . database Ċ Ċ import Ġandroidx . recyclerview . widget . Diff Util Ċ import Ġandroidx . room .* Ċ import Ġde . ps dev . dev drawer . app widget . Package Hash Info Ċ import Ġjava . util .* Ċ Ċ @ Entity ( ĊĠĠĠ ĠtableName Ġ= Ġ" filters ", ĊĠĠĠ Ġforeign Keys Ġ= Ġ[ ĊĠĠĠĠĠĠĠ ĠForeign Key ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentity Ġ= ĠWidget Profile :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparent Columns Ġ= Ġ[" id "], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġchild Columns Ġ= Ġ[" profile _ id "], ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonDelete Ġ= ĠForeign Key . CASCADE , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonUpdate Ġ= ĠForeign Key . CASCADE ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ] Ċ ) Ċ data Ġclass ĠPackage Filter ( ĊĠĠĠ Ġ@ PrimaryKey ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" id ") ĊĠĠĠ Ġval Ġid : ĠString Ġ= ĠUUID . randomUUID (). toString (), ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" type ") ĊĠĠĠ Ġval Ġtype : ĠFilter Type Ġ= ĠFilter Type . PACKAGE _ NAME , ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" filter ") ĊĠĠĠ Ġval Ġfilter : ĠString , ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" description ") ĊĠĠĠ Ġval Ġdescription : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ Column Info ( name Ġ= Ġ" profile _ id ", Ġindex Ġ= Ġtrue ) ĊĠĠĠ Ġval Ġprofile Id : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠDIFF _ CALLBACK Ġ= Ġobject : ĠDiff Util . Item Callback < Package Filter >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Items The Same ( old Item : ĠPackage Filter , Ġnew Item : ĠPackage Filter ): ĠBoolean Ġ= Ġold Item . id Ġ== Ġnew Item . id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġare Contents The Same ( old Item : ĠPackage Filter , Ġnew Item : ĠPackage Filter ): ĠBoolean Ġ= Ġold Item . filter Ġ== Ġnew Item . filter ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ delegate : Ignore ĊĠĠĠ Ġprivate Ġval Ġfilter Regex : ĠRegex Ġby Ġlazy Ġ{ Ġfilter . replace ("* ", Ġ" .* "). to Regex () Ġ} ĊĊĠĠĠ Ġfun Ġmatches ( package Hash Info : ĠPackage Hash Info ): ĠBoolean Ġ= Ġwhen Ġ( type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFilter Type . PACKAGE _ NAME Ġ-> Ġfilter Regex . matches ( package Hash Info . packageName ) ĊĠĠĠĠĠĠĠ ĠFilter Type . SIGNATURE Ġ-> Ġfilter Ġ== Ġpackage Hash Info . signature Hash Sha 2 5 6 ĊĠĠĠ Ġ} Ċ Ċ } ĊĊ