package Ġcontacts . core . entities . custom Ċ Ċ import Ġcontacts . core . Abstract Custom Data Field Ċ import Ġcontacts . core . entities . Custom Data Entity Ċ import Ġcontacts . core . entities . MimeType Ċ import Ġcontacts . core . entities . operation . Abstract Data Operation Ċ Ċ /** Ċ Ġ* ĠBase Ġtype Ġof Ġall Ġcustom Ġ[ Abstract Data Operation ] s . Ċ Ġ*/ Ċ abstract Ġclass ĠAbstract Custom Data Operation Ċ < F Ġ: ĠAbstract Custom Data Field , ĠE Ġ: ĠCustom Data Entity >( ĊĠĠĠ Ġis Profile : ĠBoolean , Ġinclude Fields : ĠSet < F > Ċ ) Ġ: ĠAbstract Data Operation < F , ĠE >( is Profile , Ġinclude Fields ) Ġ{ ĊĊĠĠĠ Ġ// ĠOverride Ġthis Ġto Ġcast Ġtype Ġfrom ĠMime Type Ġto ĠMime Type . Custom ĊĠĠĠ Ġabstract Ġoverride Ġval ĠmimeType : ĠMime Type . Custom ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSets Ġthe Ġcustom Ġ[ data ] Ġvalues Ġinto Ġthe Ġoperation Ġvia Ġthe Ġprovided Ġ[ setValue ] Ġfunction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġset Custom Data ( ĊĠĠĠĠĠĠĠ Ġdata : ĠE , ĠsetValue : Ġ( field : ĠF , Ġvalue : ĠAny ?) Ġ-> ĠUnit ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠInv okes Ġthe Ġabstract Ġset Custom Data Ġfunction , Ġwhich Ġuses Ġthe Ġtype Ġof ĊĠĠĠĠ Ġ* ĠAbstract Custom Data Field Ġin Ġthe ĠsetValue Ġfunction Ġinstead Ġof ĠData Field . ĠThis ĊĠĠĠĠ Ġ* Ġen forces Ġconsumers Ġto Ġuse Ġtheir Ġcustom Ġdata Ġfield Ġinstead Ġof ĠAPI Ġfields . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġset Values From Data ( data : ĠE , ĠsetValue : Ġ( field : ĠF , Ġvalue : ĠAny ?) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Custom Data ( data , ĠsetValue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġinstances Ġof Ġ[ Abstract Custom Data Operation ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinterface ĠFactory < F Ġ: ĠAbstract Custom Data Field , ĠE Ġ: ĠCustom Data Entity > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġinstances Ġof Ġ[ Abstract Custom Data Operation ] Ġwith Ġthe Ġgiven Ġ[ is Profile ]. ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠOnly Ġthe Ġfields Ġspecified Ġin Ġ[ include Fields ] Ġwill Ġbe Ġused Ġin Ġinsert / update Ġoperations . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( is Profile : ĠBoolean , Ġinclude Fields : ĠSet < F >): ĠAbstract Custom Data Operation < F , ĠE > ĊĠĠĠ Ġ} Ċ }