/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 . android . build . gradle . internal . incremental Ċ Ċ import Ġcom . google . gson . stream . Json Reader Ċ import Ġcom . google . gson . stream . Json Writer Ċ import Ġjava . io . File Ċ import Ġjava . io . Reader Ċ import Ġjava . io . Writer Ċ Ċ class ĠA pk Change List ( val Ġchanges : ĠIterable < Changed Item >, Ġval Ġde letions : ĠIterable < Changed Item >) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCHANGE _ LIST _ FN Ġ= Ġ"__ adt _ change _ list __. json " ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġchange List FileName ( apk File : ĠFile ): ĠString = ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapk File . name Without Extension Ġ+ ĠCHANGE _ LIST _ FN ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġwrite ( source : ĠCapt uring Changes A pk Creator , Ġwriter : ĠWriter ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Writer Ġ= ĠJson Writer ( writer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source . changed Items . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . name (" changed ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . begin Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . changed Items . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . name ( it . path ). value ( it . lastModified ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . end Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . end Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source . deleted Items . size Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . name (" deleted ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . begin Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource . deleted Items . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . name ( it . path ). value ( 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . end Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . end Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Writer . end Object () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġread ( reader : ĠReader ): ĠA pk Change List Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Reader Ġ= ĠJson Reader ( reader ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchanged Items Ġ= Ġmutable ListOf < Changed Item >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeleted Items Ġ= Ġmutable ListOf < Changed Item >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( json Reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġjson Reader . next Name () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġ" changed ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . begin Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( json Reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Items . add ( Changed Item ( json Reader . next Name (), Ġjson Reader . next Long ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . end Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . end Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġ" deleted ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . begin Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile ( json Reader . hasNext ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . begin Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeleted Items . add ( Changed Item ( json Reader . next Name (), Ġjson Reader . next Long ())) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . end Object () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjson Reader . end Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠA pk Change List ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchanged Items . toList (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeleted Items . toList () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠChanged Item ( ĊĠĠĠĠĠĠĠ Ġval Ġpath : ĠString , ĊĠĠĠĠĠĠĠ Ġval Ġlast Modified : ĠLong ĊĠĠĠ Ġ) Ċ } Ċ