package Ġcom . nat ig bab ay ev . checkpoint . core . rules . length Ċ Ċ import Ġcom . nat ig bab ay ev . checkpoint . core . Default Rule Ċ Ċ /** Ċ Ġ* ĠRule Ġfor Ġvalidating Ġif Ġgiven Ġinput 's Ġlength Ġis Ġin Ġgiven Ġrange . Ċ Ġ*/ Ċ class ĠLength Range Rule Ġprivate Ġconstructor ( ĊĠĠĠ Ġoverride Ġval Ġcallback : ĠCallback < CharSequence > ?, ĊĠĠĠ Ġprivate Ġval Ġmin Length : ĠInt , ĊĠĠĠ Ġprivate Ġval ĠmaxLength : ĠInt Ċ ) Ġ: ĠDefault Rule < CharSequence >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠisValid ( input : ĠCharSequence ): ĠBoolean Ġ= Ġinput . length Ġin Ġmin Length .. maxLength ĊĊĠĠĠ Ġclass ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġcallback : ĠCallback < CharSequence >? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġmin Length : ĠInt Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠmaxLength : ĠInt Ġ= ĠInt . MAX _ VALUE ĊĊĠĠĠĠĠĠĠ Ġfun Ġwhen Invalid ( callback : ĠCallback < CharSequence > ?) Ġ= Ġapply Ġ{ Ġthis . callback Ġ= Ġcallback Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġlength Ġprovides Ġminimum Ġlength . ĠIf Ġnot Ġprovided , Ġmin Length Ġwill Ġbe Ġset Ġto Ġ 0 . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġmin Length ( length : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . min Length Ġ= Ġlength Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġlength Ġprovides Ġmax Ġlength . ĠIf Ġnot Ġprovided , Ġmin Length Ġwill Ġbe Ġset Ġto Ġ[ Int . MAX _ VALUE ] ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun ĠmaxLength ( length : ĠInt ) Ġ= Ġapply Ġ{ Ġthis . maxLength Ġ= Ġlength Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild () Ġ= ĠLength Range Rule ( min Length Ġ= Ġmin Length , ĠmaxLength Ġ= ĠmaxLength , Ġcallback Ġ= Ġcallback ) ĊĠĠĠ Ġ} Ċ } Ċ