package Ġcom . stripe . sample store Ċ Ċ import Ġandroid . os . Parcel Ċ import Ġandroid . os . Parcelable Ċ Ċ import Ġjava . util . ArrayList Ċ import Ġjava . util . Currency Ċ import Ġjava . util . Linked HashMap Ċ import Ġjava . util . UUID Ċ Ċ class ĠStore Cart Ġ: ĠParcel able Ġ{ ĊĊĠĠĠ Ġval Ġcurrency : ĠCurrency ĊĠĠĠ Ġprivate Ġval Ġstore Line Items : ĠLinkedHashMap < String , ĠStore Line Item > ĊĊĠĠĠ Ġinternal Ġval Ġline Items : ĠList < Store Line Item > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠArrayList ( store Line Items . values ) ĊĊĠĠĠ Ġinternal Ġval Ġtotal Price : ĠLong ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġtotal Ġ= Ġ 0 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( item Ġin Ġstore Line Items . values ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtotal Ġ+= Ġitem . total Price ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtotal ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġconstructor ( currency : ĠCurrency ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . currency Ġ= Ġcurrency ĊĠĠĠĠĠĠĠ Ġ// ĠLinkedHashMap Ġbecause Ġwe Ġwant Ġiteration Ġorder Ġto Ġbe Ġthe Ġsame . ĊĠĠĠĠĠĠĠ Ġstore Line Items Ġ= ĠLinkedHashMap () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd Store Line Item ( description : ĠString , Ġquantity : ĠInt , Ġunit Price : ĠLong ) Ġ{ ĊĠĠĠĠĠĠĠ Ġadd Store Line Item ( Store Line Item ( description , Ġquantity , Ġunit Price )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġadd Store Line Item ( store Line Item : ĠStore Line Item ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstore Line Items [ UUID . randomUUID (). toString ()] Ġ= Ġstore Line Item ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Line Item ( itemId : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstore Line Items . remove ( itemId ) Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdescribe Contents (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠwriteTo Parcel ( dest : ĠParcel , Ġflags : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdest . writeString ( currency . currency Code ) ĊĠĠĠĠĠĠĠ Ġdest . writeInt ( store Line Items . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin Ġstore Line Items . keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . writeString ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdest . write Parcelable ( store Line Items [ key ], Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġconstructor ( input : ĠParcel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcurrency Ġ= ĠCurrency . getInstance ( input . readString ()) ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġinput . readInt () ĊĠĠĠĠĠĠĠ Ġstore Line Items Ġ= ĠLinkedHashMap () ĊĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġcount ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġinput . readString () !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġinput ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. read Parcelable < Store Line Item >( Store Line Item :: class . java . class Loader ) !! ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstore Line Items [ id ] Ġ= Ġitem ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject ĠCRE ATOR Ġ: ĠParcel able . Creator < Store Cart > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate From Parcel ( parcel : ĠParcel ): ĠStore Cart Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠStore Cart ( parcel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnew Array ( size : ĠInt ): ĠArray < Store Cart ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠarrayOf Null s ( size ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ