package Ġcom . very good security . vgs collect . view . card . validation . rules Ċ Ċ import Ġcom . very good security . vgs collect . view . card . validation . payment . Checksum Algorithm Ċ Ċ /** Ċ Ġ* ĠThis Ġrule Ġprovides Ġa Ġsimplified Ġmechanism Ġto Ġimprove Ġdefault Ġbehavior Ġof Ġthe Ġbank Ġcard Ġnumber Ġfield . Ċ Ġ*/ Ċ class ĠPayment Card Number Rule Ġprivate Ġconstructor ( ĊĠĠĠ Ġinternal Ġval Ġalgorithm : ĠCheck sum Algorithm ?, ĊĠĠĠ Ġlength : ĠArray < Int > ?, ĊĠĠĠ Ġregex : ĠString ?, ĊĠĠĠ Ġinternal Ġval Ġcan Override Default Validation : ĠBoolean Ċ ): ĠValidation Rule ( regex , Ġlength ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġclass Ġprovides Ġan ĠAPI Ġfor Ġset Ġup Ġrules Ġfor Ġvalidation Ġunknown Ġbank Ġcard Ġbr ands . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIt Ġis Ġrecommended Ġif Ġyou Ġmay Ġhave Ġa Ġlot Ġof Ġlocal Ġor Ġspecial Ġbr ands Ġin Ġyou Ġsystem . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠValidation Builder Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġalgorithm Ġfor Ġvalidation Ġcheck Sum . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġalgorithm : ĠCheck sum Algorithm ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġarray Ġof Ġthe Ġcard 's Ġnumber Ġwhich Ġwill Ġsupport . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġlength : ĠArray < Int >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġminimum Ġlength Ġof Ġthe Ġcard 's Ġnumber Ġwhich Ġwill Ġsupport . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmin Length Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe Ġmaximum Ġlength Ġof Ġthe Ġcard 's Ġnumber Ġwhich Ġwill Ġsupport . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠmaxLength Ġ= Ġ- 1 ĊĊĠĠĠĠĠĠĠ Ġ/** ĠDetermines Ġwhether Ġthe ĠCollect ĠSDK Ġcan Ġreplace Ġdefault Ġvalidation Ġrules Ġby Ġconfigured Ġwith ĠValidation Builder . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcan Override Default Validation Ġ= Ġfalse ĊĊĠĠĠĠĠĠĠ Ġ/** ĠThe ĠRegex Ġfor Ġvalidation Ġinput . Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġregex : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConfigure Ġbehavior Ġfor Ġvalidation Ġcheck Sum . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Algorithm ( algorithm : ĠCheck sum Algorithm ): ĠValidation Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . algorithm Ġ= Ġalgorithm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConfigure Ġthe Ġarray Ġof Ġthe Ġcard 's Ġnumber Ġwhich Ġwill Ġsupport . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Allow able Number Length ( length : ĠArray < Int >): ĠValidation Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . length Ġ= Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConfigure Ġminimum Ġlength Ġof Ġthe Ġcard 's Ġnumber Ġwhich Ġwill Ġsupport . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Allow able Min Length ( length : ĠInt ): ĠValidation Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( maxLength Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxLength Ġ= Ġ 1 9 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin Length Ġ= Ġif Ġ( length Ġ> ĠmaxLength ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠmaxLength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠConfigure Ġmaximum Ġlength Ġof Ġthe Ġcard 's Ġnumber Ġwhich Ġwill Ġsupport . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Allow able MaxLength ( length : ĠInt ): ĠValidation Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( min Length Ġ== Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Length Ġ= Ġ 1 3 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( length Ġ< Ġmin Length ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Length Ġ= Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠmaxLength Ġ= Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠDetermines Ġwhether Ġthe ĠCollect ĠSDK Ġcan Ġoverride Ġdefault Ġvalidation Ġrules . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Allow To Override Default Validation ( can Override : ĠBoolean ): ĠValidation Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcan Override Default Validation Ġ= Ġcan Override ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ/** ĠConfigure ĠRegex Ġfor Ġvalidation Ġinput . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġset Regex ( regex : ĠString ): ĠValidation Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . regex Ġ= Ġregex ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĠCreates Ġa Ġrule . Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠPayment Card Number Rule Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! length . isNull OrEmpty () Ġ-> Ġlength ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin Length Ġ!= Ġ- 1 Ġ&& ĠmaxLength Ġ!= Ġ- 1 Ġ-> Ġ( min Length .. maxLength ). toList (). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPayment Card Number Rule ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalgorithm , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġregex , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcan Override Default Validation ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }