package Ġcontacts . entities . custom . hand lename Ċ Ċ import Ġcontacts . core . entities .* Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ Ċ /** Ċ Ġ* ĠWhat Ġis Ġa Ġhandle Ġname ? ĠIn Ġthe Ġonline Ġworld , Ġa Ġhandle Ġis Ġanother Ġword Ġfor Ġa Ġusername . ĠIt Ġcan Ġrefer Ċ Ġ* Ġto Ġthe Ġname Ġyou Ġuse Ġin Ġchat Ġrooms , Ġweb Ġfor ums , Ġand Ġsocial Ġmedia Ġservices Ġlike ĠTwitter . Ċ Ġ* Ċ Ġ* Ġhttps :// tech terms . com / definition / handle Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġdifferent Ġfrom Ġa Ġnick Ġname . ĠSt ay Ġhip ! Ċ Ġ* Ċ Ġ* ĠA ĠRaw Contact Ġmay Ġhave Ġmultiple Ġhandle Ġnames . Ċ Ġ*/ Ċ sealed Ġinterface ĠHandle Name Entity Ġ: ĠCustom Data Entity Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġhandle Ġname . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhandle : ĠString ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ handle ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// ĠDeleg ated Ġproperties Ġare Ġnot Ġallowed Ġon Ġinterfaces Ġ=( ĊĠĠĠ Ġ// Ġoverride Ġvar Ġprimary Value : ĠString ? Ġby Ġthis :: handle ĊĠĠĠ Ġoverride Ġval Ġprimary Value : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhandle ĊĊĠĠĠ Ġoverride Ġval ĠmimeType : ĠMime Type . Custom ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠHandle Name MimeType ĊĊĠĠĠ Ġoverride Ġval Ġis Blank : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġproperties Are All Null Or Blank ( handle ) ĊĊĠĠĠ Ġ// ĠWe Ġhave Ġto Ġcast Ġthe Ġreturn Ġtype Ġbecause Ġwe Ġare Ġnot Ġusing Ġrecursive Ġgeneric Ġtypes . ĊĠĠĠ Ġoverride Ġfun Ġred acted Copy (): ĠHandle Name Entity Ċ } Ċ Ċ /* ĠDEV ĠNOT ES : ĠNe cessary ĠAb stractions Ċ Ġ* Ċ Ġ* ĠWe Ġonly Ġcreate Ġab stractions Ġwhen Ġthey Ġare Ġnecessary ! Ċ Ġ* Ċ Ġ* ĠA part Ġfrom ĠHandle Name Entity , Ġthere Ġis Ġonly Ġone Ġinterface Ġthat Ġextends Ġit ; ĠMutable Handle Name Entity . Ċ Ġ* Ċ Ġ* ĠThe ĠMutable Handle Name Entity Ġinterface Ġis Ġused Ġfor Ġlibrary Ġconstructs Ġthat Ġrequire Ġan ĠHandle Name Entity Ċ Ġ* Ġthat Ġcan Ġbe Ġmut ated Ġwhether Ġit Ġis Ġalready Ġinserted Ġin Ġthe Ġdatabase Ġor Ġnot . ĠThere Ġare Ġtwo Ċ Ġ* Ġvariants Ġof Ġthis ; ĠMutable Handle Name Ġand ĠNew Handle Name . ĠWith Ġthis , Ġwe Ġcan Ġcreate Ġconstructs Ġthat Ġcan Ċ Ġ* Ġkeep Ġa Ġreference Ġto ĠMutable Handle Name ( s ) Ġor ĠNew Handle Name ( s ) Ġthrough Ġthe ĠMutable Handle Name Entity Ċ Ġ* Ġabstraction / facade . Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġwhy Ġthere Ġare Ġno Ġinterfaces Ġfor ĠNew Handle Name Entity , ĠExisting Handle Name Entity , Ġand Ċ Ġ* ĠImmutable Handle Name Entity . ĠThere Ġare Ġcurrently Ġno Ġlibrary Ġfunctions Ġor Ġconstructs Ġthat Ġrequire Ġthem . Ċ Ġ* Ċ Ġ* ĠPlease Ġupdate Ġthis Ġdocumentation Ġif Ġnew Ġab stractions Ġare Ġcreated . Ċ Ġ*/ Ċ Ċ /** Ċ Ġ* ĠA Ġmutable Ġ[ Handle Name Entity ]. Ġ` Ċ Ġ*/ Ċ sealed Ġinterface ĠMutable Handle Name Entity Ġ: ĠHandle Name Entity , ĠMutable Custom Data Entity Ġ{ ĊĊĠĠĠ Ġoverride Ġvar Ġhandle : ĠString ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ handle ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ// ĠDeleg ated Ġproperties Ġare Ġnot Ġallowed Ġon Ġinterfaces Ġ=( ĊĠĠĠ Ġ// Ġoverride Ġvar Ġprimary Value : ĠString ? Ġby Ġthis :: handle ĊĠĠĠ Ġoverride Ġvar Ġprimary Value : ĠString ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhandle ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhandle Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠWe Ġhave Ġto Ġcast Ġthe Ġreturn Ġtype Ġbecause Ġwe Ġare Ġnot Ġusing Ġrecursive Ġgeneric Ġtypes . ĊĠĠĠ Ġoverride Ġfun Ġred acted Copy (): ĠMutable Handle Name Entity Ċ } Ċ Ċ /** Ċ Ġ* ĠAn Ġexisting Ġimmutable Ġ[ Handle Name Entity ]. Ċ Ġ*/ Ċ @ Parcel ize Ċ data Ġclass ĠHandle Name Ġinternal Ġconstructor ( ĊĊĠĠĠ Ġoverride Ġval Ġid : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġraw Contact Id : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġcontact Id : ĠLong , ĊĊĠĠĠ Ġoverride Ġval Ġis Primary : ĠBoolean , ĊĠĠĠ Ġoverride Ġval Ġis Super Primary : ĠBoolean , ĊĊĠĠĠ Ġoverride Ġval Ġhandle : ĠString ?, ĊĊĠĠĠ Ġoverride Ġval Ġis Red acted : ĠBoolean Ċ Ċ ) Ġ: ĠHandle Name Entity , ĠExisting Custom Data Entity , ĊĠĠĠ ĠImmutable Custom Data Entity With Mutable Type < Mutable Handle Name > Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġmutable Copy () Ġ= ĠMutable Handle Name ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġid , ĊĠĠĠĠĠĠĠ Ġraw Contact Id Ġ= Ġraw Contact Id , ĊĠĠĠĠĠĠĠ Ġcontact Id Ġ= Ġcontact Id , ĊĊĠĠĠĠĠĠĠ Ġis Primary Ġ= Ġis Primary , ĊĠĠĠĠĠĠĠ Ġis Super Primary Ġ= Ġis Super Primary , ĊĊĠĠĠĠĠĠĠ Ġhandle Ġ= Ġhandle , ĊĊĠĠĠĠĠĠĠ Ġis Red acted Ġ= Ġis Red acted ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġred acted Copy () Ġ= Ġcopy ( ĊĠĠĠĠĠĠĠ Ġis Red acted Ġ= Ġtrue , ĊĊĠĠĠĠĠĠĠ Ġhandle Ġ= Ġhandle ?. red act () ĊĠĠĠ Ġ) Ċ } Ċ Ċ /** Ċ Ġ* ĠAn Ġexisting Ġmutable Ġ[ Handle Name Entity ]. Ċ Ġ*/ Ċ @ Parcel ize Ċ data Ġclass ĠMutable Handle Name Ġinternal Ġconstructor ( ĊĊĠĠĠ Ġoverride Ġval Ġid : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġraw Contact Id : ĠLong , ĊĠĠĠ Ġoverride Ġval Ġcontact Id : ĠLong , ĊĊĠĠĠ Ġoverride Ġval Ġis Primary : ĠBoolean , ĊĠĠĠ Ġoverride Ġval Ġis Super Primary : ĠBoolean , ĊĊĠĠĠ Ġoverride Ġvar Ġhandle : ĠString ?, ĊĊĠĠĠ Ġoverride Ġval Ġis Red acted : ĠBoolean Ċ Ċ ) Ġ: ĠHandle Name Entity , ĠExisting Custom Data Entity , ĠMutable Handle Name Entity Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġred acted Copy () Ġ= Ġcopy ( ĊĠĠĠĠĠĠĠ Ġis Red acted Ġ= Ġtrue , ĊĊĠĠĠĠĠĠĠ Ġhandle Ġ= Ġhandle ?. red act () ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠA Ġnew Ġmutable Ġ[ Handle Name Entity ]. Ċ Ġ*/ Ċ @ Parcel ize Ċ data Ġclass ĠNew Handle Name Ġ@ Jvm Over loads Ġconstructor ( ĊĊĠĠĠ Ġoverride Ġvar Ġhandle : ĠString ? Ġ= Ġnull , ĊĊĠĠĠ Ġoverride Ġval Ġis Red acted : ĠBoolean Ġ= Ġfalse Ċ Ċ ) Ġ: ĠHandle Name Entity , ĠNew Custom Data Entity , ĠMutable Handle Name Entity Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġred acted Copy () Ġ= Ġcopy ( ĊĠĠĠĠĠĠĠ Ġis Red acted Ġ= Ġtrue , ĊĊĠĠĠĠĠĠĠ Ġhandle Ġ= Ġhandle ?. red act () ĊĠĠĠ Ġ) Ċ } Ċ