package Ġkv j . task w . data Ċ Ċ import Ġjava . util . Date Ċ import Ġjava . util . Locale Ċ import Ġjava . util . TimeZone Ċ import Ġjava . util . UUID Ċ import Ġjava . text . SimpleDateFormat Ċ Ċ import Ġorg . json . JSONArray Ċ import Ġorg . json . JSONObject Ċ Ċ import Ġandroid . os . Parcelable Ċ Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ Ċ @ Parcel ize Ċ data Ġclass ĠTask ( ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġaccount : ĠUUID ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġuuid : ĠUUID ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġid : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġdescription : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġentry : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġstatus : ĠStatus ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġannotations : ĠList < Annotation > Ġ= ĠArrayList (), ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġdepends : ĠList < UUID > Ġ= ĠArrayList (), ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġtags : ĠList < String > Ġ= ĠArrayList (), ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġur gency : ĠDouble ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġpriority : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġproject : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġdue : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġrecur : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġuntil : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġwait : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġscheduled : ĠDate ? Ġ= Ġnull , ĊĠĠĠ Ġ@ Jvm Field Ġvar Ġstart : ĠDate ? Ġ= Ġnull Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġenum Ġclass ĠStatus Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ENDING , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCOMP LETED , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWAIT ING , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRE CUR RING , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDE LETED , ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Parcel ize ĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠAnnotation (@ Jvm Field Ġval Ġentry : ĠDate , Ġ@ Jvm Field Ġval Ġdescription : ĠString ) Ġ: ĠParcel able Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfrom JSON ( json : ĠJSONObject ) Ġ= ĠAnnotation ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentry Ġ= Ġget Date ( json . getString (" entry ")) !! , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġjson . getString (" description ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġget Date ( string : ĠString ?): ĠDate ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġformat Ġ= ĠSimpleDateFormat (" yyyy MM dd ' T ' HH mm ss ", ĠLocale . getDefault ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġformat . time Zone Ġ= ĠTime Zone . getTime Zone (" UTC ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġformat . parse ( string ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġ< K > ĠgetList ( array : ĠJSONArray ?, Ġinit : Ġ( array : ĠJSONArray , Ġindex : ĠInt ) Ġ-> ĠK ): ĠList < K > Ġ= Ġwhen Ġ( array ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> ĠlistOf () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠList ( array . length ()) Ġ{ Ġinit ( array , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠgetStatus ( string : ĠString ) Ġ= Ġwhen Ġ( string ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" pending " Ġ-> ĠStatus . PENDING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" completed " Ġ-> ĠStatus . COMPLETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" waiting " Ġ-> ĠStatus . WAIT ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" recurring " Ġ-> ĠStatus . REC UR RING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" deleted " Ġ-> ĠStatus . DELETED ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠStatus . PENDING ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġfrom JSON ( json : ĠJSONObject , Ġaccount : ĠUUID ) Ġ= ĠTask ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaccount Ġ= Ġaccount , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuuid Ġ= ĠUUID . fromString ( json . getString (" uuid ")), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġjson . getInt (" id "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġjson . getString (" description "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġentry Ġ= Ġget Date ( json . getString (" entry ")) !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Ġ= ĠgetStatus ( json . getString (" status ")), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġannotations Ġ= ĠgetList ( json . opt JSONArray (" annotations ")) Ġ{ Ġarray , Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAnnotation . from JSON ( array . getJSONObject ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdepends Ġ= ĠgetList ( json . opt JSONArray (" depends ")) Ġ{ Ġarray , Ġindex Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUUID . fromString ( array . getString ( index )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtags Ġ= ĠgetList ( json . opt JSONArray (" tags ")) Ġ{ Ġarray , Ġindex Ġ-> Ġarray . getString ( index ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġur gency Ġ= Ġjson . getDouble (" ur gency "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpriority Ġ= Ġjson . opt String (" priority ", Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproject Ġ= Ġjson . opt String (" project ", Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdue Ġ= Ġget Date ( json . opt String (" due ", Ġnull )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrecur Ġ= Ġjson . opt String (" recur ", Ġnull ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuntil Ġ= Ġget Date ( json . opt String (" until ", Ġnull )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwait Ġ= Ġget Date ( json . opt String (" wait ", Ġnull )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscheduled Ġ= Ġget Date ( json . opt String (" scheduled ", Ġnull )), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstart Ġ= Ġget Date ( json . opt String (" start ", Ġnull )) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } ĊĊ