/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 , ĠAlibaba ĠGroup ĠHold ing Ġ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 . alibaba . g ai ax . data . cache Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . alibaba . g ai ax . GX Template Engine Ċ import Ġcom . alibaba . g ai ax . data . GX IT emplate Info Source Ċ import Ġcom . alibaba . g ai ax . data . GX IT emplate Source Ċ import Ġcom . alibaba . g ai ax . template . GX Style Convert Ċ import Ġcom . alibaba . g ai ax . template . GX Template Info Ċ import Ġjava . util . concurrent . Concurrent HashMap Ċ Ċ /** Ċ Ġ* Ġ@ suppress Ċ Ġ*/ Ċ class ĠG X Template Info Cache Source ( val Ġcontext : ĠContext ) Ġ: ĠG X IT emplate Info Source Ġ{ ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠG X Style Convert . instance . init ( context . assets ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġdata Cache Ġ= ĠConcurrent HashMap < String , ĠConcurrent HashMap < String , ĠG X Template Info >>() ĊĊĠĠĠ Ġprivate Ġfun Ġexist ( template Biz : ĠString , Ġtemplate Id : ĠString ) Ġ= Ġdata Cache [ template Biz ]?. get ( template Id ) Ġ!= Ġnull ĊĊĠĠĠ Ġoverride Ġfun Ġget Template Info ( template Source : ĠG X IT emplate Source , Ġtemplate Item : ĠG X Template Engine . GX Template Item ): ĠG X Template Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( exist ( template Item . biz Id , Ġtemplate Item . template Id )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata Cache [ template Item . biz Id ]?. get ( template Item . template Id ) Ġ?: Ġthrow ĠIllegalStateException (" Template Ġexist Ġbut Ġreference Ġis Ġnull ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtemplate Ġ= ĠG X Template Info . create Template ( template Source , Ġtemplate Item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtemplate . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġbiz List Ġ= Ġdata Cache [ template Item . biz Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( biz List Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbiz List Ġ= ĠConcurrent HashMap () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Cache [ template Item . biz Id ] Ġ= Ġbiz List ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbiz List [ template Item . template Id ] Ġ= Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Nest Template ( biz List , Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollection Nest Template ( biz List : ĠConcurrent HashMap < String , ĠG X Template Info >, Ġinfo : ĠG X Template Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo . children ?. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbiz List [ it . layer . id ] Ġ= Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . children ?. isNotEmpty () Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollection Nest Template ( biz List , Ġit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }