/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 - 2 0 1 9 Ġhttps :// www . val ik tor . org Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ*/ Ċ Ċ package Ġorg . val ik tor . constraints Ċ Ċ import Ġorg . val ik tor . Constraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġblank Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠBl ank Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġnot Ġblank Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠNot Blank Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġletter Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠLetter Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġnot Ġletter Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠNot Letter Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġdigit Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠDig it Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġnot Ġdigit Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠNot Digit Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġletter Ġor Ġdigit Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠLetter Or Digit Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġnot Ġletter Ġor Ġdigit Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠNot Letter Or Digit Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġuppercase Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠUpper Case Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġlowercase Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠLower Case Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġmatches Ġwith Ġa Ġpattern Ċ Ġ* Ċ Ġ* Ġ@ property Ġpattern Ġspecifies Ġthe Ġpattern Ġvalue Ġthat Ġshould Ġmatch Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠMat ches ( val Ġpattern : ĠString ) Ġ: ĠConstraint Ġ{ ĊĠĠĠ Ġconstructor ( regex : ĠRegex ) Ġ: Ġthis ( regex . pattern ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġdoesn 't Ġmatch Ġwith Ġa Ġpattern Ċ Ġ* Ċ Ġ* Ġ@ property Ġpattern Ġspecifies Ġthe Ġpattern Ġvalue Ġthat Ġshouldn 't Ġmatch Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠNot Match ( val Ġpattern : ĠString ) Ġ: ĠConstraint Ġ{ ĊĠĠĠ Ġconstructor ( regex : ĠRegex ) Ġ: Ġthis ( regex . pattern ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġcontains Ġa Ġpattern Ċ Ġ* Ċ Ġ* Ġ@ property Ġpattern Ġspecifies Ġthe Ġpattern Ġvalue Ġthat Ġshould Ġcontain Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠContains Regex ( val Ġpattern : ĠString ) Ġ: ĠConstraint Ġ{ ĊĠĠĠ Ġconstructor ( regex : ĠRegex ) Ġ: Ġthis ( regex . pattern ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġdoesn 't Ġcontain Ġa Ġpattern Ċ Ġ* Ċ Ġ* Ġ@ property Ġpattern Ġspecifies Ġthe Ġvalue Ġpattern Ġthat Ġshouldn 't Ġcontain Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠNot Contain Regex ( val Ġpattern : ĠString ) Ġ: ĠConstraint Ġ{ ĊĠĠĠ Ġconstructor ( regex : ĠRegex ) Ġ: Ġthis ( regex . pattern ) Ċ } Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġstarts Ġwith Ġanother Ġvalue Ċ Ġ* Ċ Ġ* Ġ@ property Ġprefix Ġspecifies Ġthe Ġvalue Ġthat Ġshould Ġstart Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠStart sWith ( val Ġprefix : ĠString ) Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġdoesn 't Ġstart Ġwith Ġanother Ġvalue Ċ Ġ* Ċ Ġ* Ġ@ property Ġprefix Ġspecifies Ġthe Ġvalue Ġthat Ġshouldn 't Ġstart Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠNot Start With ( val Ġprefix : ĠString ) Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġends Ġwith Ġanother Ġvalue Ċ Ġ* Ċ Ġ* Ġ@ property Ġsuffix Ġspecifies Ġthe Ġvalue Ġthat Ġshould Ġend Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠEnd sWith ( val Ġsuffix : ĠString ) Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġdoesn 't Ġend Ġwith Ġanother Ġvalue Ċ Ġ* Ċ Ġ* Ġ@ property Ġsuffix Ġspecifies Ġthe Ġvalue Ġthat Ġnot Ġshouldn 't Ġend Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ data Ġclass ĠNot End With ( val Ġsuffix : ĠString ) Ġ: ĠConstraint Ċ Ċ /** Ċ Ġ* ĠRepresents Ġa Ġconstraint Ġthat Ġvalidate Ġif Ġthe Ġvalue Ġis Ġa Ġvalid Ġe - mail Ċ Ġ* Ċ Ġ* Ġ@ author ĠRod ol pho ĠS . ĠC out o Ċ Ġ* Ġ@ see ĠConstraint Ċ Ġ* Ġ@ since Ġ 0 . 1 . 0 Ċ Ġ*/ Ċ object ĠEmail Ġ: ĠConstraint