package Ġio . customer ly . entity Ċ Ċ /* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠCustomer ly Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . os . Handler Ċ import Ġandroid . os . Looper Ċ import Ġandroid . os . Parcelable Ċ import Ġandroid . view . WindowManager Ċ import Ġio . customer ly . Customer ly Ċ import Ġio . customer ly . dialog fragment . show C ly Survey Dialog Ċ import Ġio . customer ly . sx dependencies . annotations . SX Int Def Ċ import Ġio . customer ly . utils . C ly Activity Lifecycle Callback Ċ import Ġio . customer ly . utils . gg k ext . M ST ime stamp Ċ import Ġio . customer ly . utils . gg k ext . get Typed Ċ import Ġio . customer ly . utils . gg k ext . opt Sequence Ċ import Ġio . customer ly . utils . gg k ext . opt Typed Ċ import Ġkotlinx . android . parcel . Parcel ize Ċ import Ġorg . json . JSONException Ċ import Ġorg . json . JSONObject Ċ Ċ /** Ċ Ġ* ĠCreated Ġby ĠG i ann i Ġon Ġ 1 1 / 0 9 / 1 6 . Ċ Ġ* ĠProject : ĠCustomer ly ĠAndroid ĠSDK Ċ Ġ*/ Ċ Ċ @ M ST ime stamp Ġinternal Ġconst Ġval ĠS UR VE Y _ DISPLAY _ DELAY Ġ= Ġ 5 0 0 0 L Ċ Ċ internal Ġconst Ġval ĠTS UR VE Y _ END _ SUR VE Y Ġ= Ġ- 1 Ċ internal Ġconst Ġval ĠTS UR VE Y _ BUTTON Ġ= Ġ 0 Ċ internal Ġconst Ġval ĠTS UR VE Y _ RADIO Ġ= Ġ 1 Ċ internal Ġconst Ġval ĠTS UR VE Y _ LIST Ġ= Ġ 2 Ċ internal Ġconst Ġval ĠTS UR VE Y _ SCALE Ġ= Ġ 3 Ċ internal Ġconst Ġval ĠTS UR VE Y _ STAR Ġ= Ġ 4 Ċ internal Ġconst Ġval ĠTS UR VE Y _ NUMBER Ġ= Ġ 5 Ċ internal Ġconst Ġval ĠTS UR VE Y _ TEXT _ BOX Ġ= Ġ 6 Ċ internal Ġconst Ġval ĠTS UR VE Y _ TEXT _ AREA Ġ= Ġ 7 Ċ private Ġconst Ġval ĠTS UR VE Y _ LAST Ġ= ĠTS UR VE Y _ TEXT _ AREA ĊĊ Ċ @ SX Int Def ( TS UR VE Y _ END _ SUR VE Y , ĠTS UR VE Y _ BUTTON , ĠTS UR VE Y _ RADIO , ĠTS UR VE Y _ LIST , ĠTS UR VE Y _ SCALE , ĠTS UR VE Y _ STAR , ĠTS UR VE Y _ NUMBER , ĠTS UR VE Y _ TEXT _ BOX , ĠTS UR VE Y _ TEXT _ AREA ) Ċ @ kotlin . annotation . Retention ( Annotation Retention . SOURCE ) Ċ internal Ġannotation Ġclass ĠT Survey Ċ Ċ internal Ġfun ĠJSONObject . parse Survey Choice () Ġ= ĠC ly Survey Choice ( id Ġ= Ġthis . get Typed (" survey _ choice _ id "), Ġvalue Ġ= Ġthis . get Typed (" value ")) Ċ Ċ internal Ġfun ĠJSONObject ?. parse Survey () Ġ: ĠC ly Survey ? Ġ{ ĊĠĠĠ Ġreturn Ġthis . parse Survey Ġ{ Ġid : ĠInt , Ġthank You Y ext : ĠString , Ġstep : ĠInt , Ġseen : ĠBoolean , Ġtype : ĠInt , Ġtitle : ĠString , Ġsubtitle : ĠString , Ġlimit From : ĠInt , Ġlimit To : ĠInt , Ġchoices : ĠArray < C ly Survey Choice >? Ġ-> ĊĠĠĠĠĠĠĠ ĠC ly Survey ( id Ġ= Ġid , Ġthank You Y ext Ġ= Ġthank You Y ext , Ġstep Ġ= Ġstep , Ġseen Ġ= Ġseen , Ġtype Ġ= Ġtype , Ġtitle Ġ= Ġtitle , Ġsubtitle Ġ= Ġsubtitle , Ġlimit From Ġ= Ġlimit From , Ġlimit To Ġ= Ġlimit To , Ġchoices Ġ= Ġchoices ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠJSONObject ?. parse Survey ( use Ġ: Ġ( id : ĠInt , Ġthank You Y ext : ĠString , Ġstep : ĠInt , Ġseen : ĠBoolean , Ġtype : ĠInt , Ġtitle : ĠString , Ġsubtitle : ĠString , Ġlimit From : ĠInt , Ġlimit To : ĠInt , Ġchoices : ĠArray < C ly Survey Choice >? )-> C ly Survey ) Ġ: ĠC ly Survey ? Ġ{ ĊĠĠĠ Ġreturn Ġif ( this Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġ( id , Ġthank You Y ext ) Ġ= Ġthis . opt Typed < JSONObject >( name Ġ= Ġ" survey ") ?. let Ġ{ Ġs Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Remove Explicit Type Arguments ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġs . get Typed < Int >( name Ġ= Ġ" survey _ id ") Ġto Ġs . get Typed < String >( name Ġ= Ġ" th ank you _ text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ 0 Ġto Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġseen Ġ= Ġthis . opt Typed (" seen _ at ", Ġ- 1 L ) Ġ!= Ġ- 1 L ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . opt Typed < JSONObject >( name Ġ= Ġ" question ") ?. let Ġ{ Ġq Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse ( ĠĠĠ Ġ/* Ġid = Ġ*/ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġthank You Y ext = Ġ*/ th ank You Y ext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġstep = Ġ*/ q . opt Typed ( name Ġ= Ġ" step ", Ġfallback Ġ= Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġseen = Ġ*/ seen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġtype = Ġ*/ q . get Typed < Int >( name Ġ= Ġ" type "). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ< Ġ 0 ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ ĠTS UR VE Y _ END _ SUR VE Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ> ĠTS UR VE Y _ LAST ĠĠ Ġ-> ĠTS UR VE Y _ LAST ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġ Ġit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġtitle = Ġ*/ q . get Typed ( name Ġ= Ġ" title "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġsubtitle = Ġ*/ q . get Typed ( name Ġ= Ġ" subtitle "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġlimit From = Ġ*/ q . opt Typed ( name Ġ= Ġ" limit _ from ", Ġfallback Ġ= Ġ- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġlimit To = Ġ*/ q . opt Typed ( name Ġ= Ġ" limit _ to ", Ġfallback Ġ= Ġ- 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġchoices = Ġ*/ q . opt Sequence < JSONObject >( name Ġ= Ġ" choices ") ?. map Ġ{ Ġit . parse Survey Choice () Ġ} ?. toList ()?. to Typed Array () Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse ( ĠĠĠ Ġ/* Ġid = Ġ*/ id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġthank You Y ext = Ġ*/ th ank You Y ext , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġstep = Ġ*/ Int . MAX _ VALUE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġseen = Ġ*/ seen , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġtype = Ġ*/ TS UR VE Y _ END _ SUR VE Y , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġtitle = Ġ*/ "", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġsubtitle = Ġ*/ "", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġlimit From = Ġ*/ - 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġlimit To = Ġ*/ - 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġchoices = Ġ*/ null Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e Ġ: ĠJSON Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ internal Ġdata Ġclass ĠC ly Survey Choice ( val Ġid : ĠInt , Ġval Ġvalue : ĠString ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġthis . value Ċ } Ċ Ċ @ Parcel ize Ċ internal Ġclass ĠC ly Survey Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġval Ġthank You Y ext : ĠString , ĊĠĠĠĠĠĠĠ Ġvar Ġstep : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġseen : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġ@ TS ur vey Ġvar Ġtype : ĠInt , ĊĠĠĠĠĠĠĠ Ġvar Ġtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġvar Ġsubtitle : ĠString , ĊĠĠĠĠĠĠĠ Ġvar Ġlimit From : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġlimit To : ĠInt Ġ= Ġ 0 , ĊĠĠĠĠĠĠĠ Ġvar Ġchoices : ĠArray < C ly Survey Choice > ?, ĊĠĠĠĠĠĠĠ Ġvar Ġis Rejected Or Con clude d : ĠBoolean Ġ= Ġfalse Ċ ) Ġ: ĠParcel able Ġ{ ĊĊĠĠĠ Ġinternal Ġval Ġrequire Answer By Choice : ĠBoolean Ġget () Ġ= Ġwhen ( this . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTS UR VE Y _ BUTTON , ĠTS UR VE Y _ RADIO , ĠTS UR VE Y _ LIST Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ ĠTS UR VE Y _ SCALE , ĠTS UR VE Y _ STAR , ĠTS UR VE Y _ NUMBER , ĊĠĠĠĠĠĠĠ ĠTS UR VE Y _ TEXT _ BOX , ĠTS UR VE Y _ TEXT _ AREA ĠĠĠĠĠĠĠĠ Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġelse Ġ/* ĠTS UR VE Y _ END _ SUR VE Y Ġ*/ ĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ-> Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġval Ġrequire Answer By String : ĠBoolean Ġget () Ġ= Ġwhen ( this . type ) Ġ{ ĊĠĠĠĠĠĠĠ ĠTS UR VE Y _ SCALE , ĠTS UR VE Y _ STAR , ĠTS UR VE Y _ NUMBER , ĊĠĠĠĠĠĠĠ ĠTS UR VE Y _ TEXT _ BOX , ĠTS UR VE Y _ TEXT _ AREA Ġ-> Ġtrue ĊĠĠĠĠĠĠĠ ĠTS UR VE Y _ BUTTON , ĠTS UR VE Y _ RADIO , ĠTS UR VE Y _ LIST Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġelse Ġ/* ĠTS UR VE Y _ END _ SUR VE Y Ġ*/ Ġ-> Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġupdate ( from Ġ: ĠJSONObject ?) Ġ: ĠC ly Survey Ġ{ ĊĠĠĠĠĠĠĠ Ġfrom . parse Survey Ġ{ Ġ_: ĠInt , Ġ_: ĠString , Ġstep : ĠInt , Ġseen : ĠBoolean , Ġtype : ĠInt , Ġtitle : ĠString , Ġsubtitle : ĠString , Ġlimit From : ĠInt , Ġlimit To : ĠInt , Ġchoices : ĠArray < C ly Survey Choice >? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . step Ġ= Ġstep ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . seen Ġ= Ġseen ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . type Ġ= Ġtype ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . subtitle Ġ= Ġsubtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . limit From Ġ= Ġlimit From ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . limit To Ġ= Ġlimit To ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . choices Ġ= Ġchoices ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġpost Display () Ġ{ ĊĠĠĠĠĠĠĠ ĠHandler ( Looper . get Main Looper ()). post Delayed ({ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Activity : ĠActivity ? Ġ= ĠC ly Activity Lifecycle Callback . getLast Displayed Activity () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current Activity Ġ!= Ġnull Ġ&& ĠCustomer ly . isEnabled Activity ( activity Ġ= Ġcurrent Activity )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . display Now ( activity Ġ= Ġcurrent Activity ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCustomer ly . post On Activity Ġ= Ġ{ Ġactivity Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . display Now ( activity Ġ= Ġactivity ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, ĠS UR VE Y _ DISPLAY _ DELAY ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġdisplay Now ( activity : ĠActivity , Ġretry On Failure : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . show C ly Survey Dialog ( survey Ġ= Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCustomer ly . log ( message Ġ= Ġ" Survey Ġsuccessfully Ġdisplayed ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( changed Activity While Running : ĠWindow Manager . Bad Token Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( retry On Failure ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠC ly Activity Lifecycle Callback . getLast Displayed Activity () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . take If Ġ{ ĠCustomer ly . isEnabled Activity ( activity Ġ= Ġit ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . display Now ( activity Ġ= Ġit , Ġretry On Failure Ġ= Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCustomer ly . log ( message Ġ= Ġ" A Ġgeneric Ġerror Ġoccurred ĠCustomer ly Ġwhile Ġdisplaying Ġa ĠSurvey ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġc ly Send Error ( errorCode Ġ= ĠERROR _ CODE __ GENERIC , Ġdescription Ġ= Ġ" A Ġgeneric Ġerror Ġoccurred ĠCustomer ly Ġwhile Ġdisplaying Ġa ĠSurvey ", Ġthrowable Ġ= Ġexception ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }