package Ġcom . world pay . access . checkout . client . validation . config Ċ Ċ import Ġandroid . widget . EditText Ċ import Ġandroidx . lifecycle . Lifecycle Owner Ċ import Ġcom . world pay . access . checkout . client . session . BaseUrl Sanit iser . sanit ise Ċ import Ġcom . world pay . access . checkout . client . validation . listener . Access Checkout Card Validation Listener Ċ import Ġcom . world pay . access . checkout . util . Property Validation Util . validate NotNull Ċ Ċ /** Ċ Ġ* ĠAn Ġimplementation Ġof Ġthe Ġ[ Validation Config ] Ġthat Ġrepresents Ġthe Ġcard Ġvalidation Ġconfiguration . Ċ Ġ* Ċ Ġ* ĠThis Ġconfiguration Ġshould Ġbe Ġbuild Ġto Ġregister Ġthe Ġrelevant Ġfields Ġand Ġthe Ġlisteners . Ċ Ġ* Ċ Ġ* Ġ@ property [ pan ] Ġ[ EditText ] Ġthat Ġrepresents Ġthe Ġpan Ġui Ġelement Ċ Ġ* Ġ@ property [ expiry Date ] Ġ[ EditText ] Ġthat Ġrepresents Ġthe Ġexpiry Ġdate Ġui Ġelement Ċ Ġ* Ġ@ property [ cv c ] Ġ[ EditText ] Ġthat Ġrepresents Ġthe Ġc vc Ġui Ġelement Ċ Ġ* Ġ@ property [ baseUrl ] Ġ[ String ] Ġthat Ġrepresents Ġthe Ġbase Ġurl Ġto Ġuse Ġwhen Ġcalling ĠWorld pay Ġservices Ċ Ġ* Ġ@ property [ validation Listener ] Ġ[ Access Checkout Card Validation Listener ] Ġthat Ġrepresents Ġthe Ġvalidation Ġlistener Ġthat Ġshould Ġbe Ġnotified Ġon Ġvalidation Ġchanges Ċ Ġ* Ġ@ property [ lifecycle Owner ] Ġ[ Lifecycle Owner ] Ġof Ġthe Ġapplication Ġso Ġthat Ġvalidation Ġstate Ġcan Ġbe Ġhandled Ġduring Ġlifecycle Ġchanges Ċ Ġ*/ Ċ class ĠCard Validation Config Ġprivate Ġconstructor ( ĊĠĠĠ Ġval Ġpan : ĠEditText , ĊĠĠĠ Ġval Ġexpiry Date : ĠEditText , ĊĠĠĠ Ġval Ġc vc : ĠEditText , ĊĠĠĠ Ġval Ġaccepted Card Br ands : ĠArray < String >, ĊĠĠĠ Ġval ĠbaseUrl : ĠString , ĊĠĠĠ Ġval Ġvalidation Listener : ĠAccess Checkout Card Validation Listener , ĊĠĠĠ Ġval Ġlifecycle Owner : ĠLifecycle Owner , ĊĠĠĠ Ġval Ġenable Pan Formatting : ĠBoolean Ċ ) Ġ: ĠValidation Config Ġ{ ĊĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġpan : ĠEditText ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġexpiry Date : ĠEditText ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġc vc : ĠEditText ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġaccepted Card Br ands : ĠArray < String > Ġ= Ġempty Array () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠbaseUrl : ĠString ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġvalidation Listener : ĠAccess Checkout Card Validation Listener ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlifecycle Owner : ĠLifecycle Owner ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġenable Pan Formatting : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġpan Ġui Ġelement ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ pan ] Ġ[ EditText ] Ġthat Ġrepresents Ġthe Ġpan Ġui Ġelement ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġpan ( pan : ĠEditText ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . pan Ġ= Ġpan ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġexpiry Ġdate Ġui Ġelement ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ expiry Date ] Ġ[ EditText ] Ġthat Ġrepresents Ġthe Ġexpiry Ġdate Ġui Ġelement ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġexpiry Date ( expiry Date : ĠEditText ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . expiry Date Ġ= Ġexpiry Date ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġc vc Ġui Ġelement ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ cv c ] Ġ[ EditText ] Ġthat Ġrepresents Ġthe Ġc vc Ġui Ġelement ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġc vc ( cv c : ĠEditText ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . cv c Ġ= Ġc vc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġlist Ġof Ġcard Ġbr ands Ġto Ġaccept Ġfor Ġvalidation . ĠAny Ġun re cogn ised Ġcard Ġbrand Ġwill Ġbe Ġaccepted Ġat Ġall Ġtimes . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ accepted Card Br ands ] Ġ[ Array ] Ġof Ġ[ String ] Ġrepresenting Ġthe Ġcard Ġbr ands Ġto Ġaccept ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġaccepted Card Br ands ( accepted Card Br ands : ĠArray < String >): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . accepted Card Br ands Ġ= Ġaccepted Card Br ands ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġbase Ġurl Ġto Ġuse Ġwhen Ġcalling ĠWorld pay Ġservices ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ baseUrl ] Ġ[ String ] Ġthat Ġrepresents Ġthe Ġbase Ġurl ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠbaseUrl ( baseUrl : ĠString ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . baseUrl Ġ= ĠbaseUrl ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġvalidation Ġlistener Ġthat Ġshould Ġbe Ġnotified Ġon Ġvalidation Ġchanges ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ validation Listener ] Ġ[ Access Checkout Card Validation Listener ] Ġthat Ġrepresents Ġthe Ġvalidation Ġlistener ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġvalidation Listener ( validation Listener : ĠAccess Checkout Card Validation Listener ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . validation Listener Ġ= Ġvalidation Listener ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠSets Ġthe Ġlifecycle Ġowner Ġof Ġthe Ġapplication Ġso Ġthat Ġvalidation Ġstate Ġcan Ġbe Ġhandled Ġduring Ġlifecycle Ġchanges ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param [ lifecycle Owner ] Ġ[ Lifecycle Owner ] Ġthat Ġrepresents Ġthe Ġlifecycle Ġowner Ġof Ġthe Ġapplication ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġlifecycle Owner ( lifecycle Owner : ĠLifecycle Owner ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . lifecycle Owner Ġ= Ġlifecycle Owner ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEnables Ġthe Ġpan Ġformatting Ġon Ġthe Ġview ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġenable Pan Formatting (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . enable Pan Formatting Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuilds Ġthe Ġvalidation Ġconfiguration Ġby Ġreturning Ġan Ġinstance Ġof Ġthe Ġ[ Card Validation Config ] ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġ[ Card Validation Config ] Ġimplementation Ġthat Ġcan Ġbe Ġused Ġto Ġinitialise Ġvalidation ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ throws Ġ[ IllegalArgumentException ] Ġis Ġthrown Ġwhen Ġa Ġproperty Ġis Ġmissing ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠCard Validation Config Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate NotNull ( pan , Ġ" pan Ġcomponent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate NotNull ( expiry Date , Ġ" expiry Ġdate Ġcomponent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate NotNull ( cv c , Ġ" cv c Ġcomponent ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate NotNull ( baseUrl , Ġ" base Ġurl ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate NotNull ( validation Listener , Ġ" validation Ġlistener ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate NotNull ( lifecycle Owner , Ġ" lifecycle Ġowner ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsanit ised BaseUrl Ġ= Ġsanit ise ( baseUrl ) Ġas ĠString ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCard Validation Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpan Ġ= Ġpan Ġas ĠEditText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexpiry Date Ġ= Ġexpiry Date Ġas ĠEditText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc vc Ġ= Ġc vc Ġas ĠEditText , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaccepted Card Br ands Ġ= Ġaccepted Card Br ands , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠbaseUrl Ġ= Ġsanit ised BaseUrl , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalidation Listener Ġ= Ġvalidation Listener Ġas ĠAccess Checkout Card Validation Listener , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Owner Ġ= Ġlifecycle Owner Ġas ĠLifecycle Owner , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenable Pan Formatting Ġ= Ġenable Pan Formatting ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ