/* Ċ Ġ* Ġ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 . sample Ċ Ċ import Ġorg . val ik tor . Constraint Violation Exception Ċ import Ġorg . val ik tor . functions . is Between Ċ import Ġorg . val ik tor . functions . is LessThan OrEqualTo Ċ import Ġorg . val ik tor . i 1 8 n . to Message Ċ import Ġorg . val ik tor . validate Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Local Time Ċ import Ġjava . util . Locale Ċ Ċ data Ġclass ĠEmployee ( ĊĠĠĠ Ġval Ġdate OfBirth : ĠLocalDate , ĊĠĠĠ Ġval Ġwork StartTime : ĠLocal Time , ĊĠĠĠ Ġval Ġwork EndTime : ĠLocal Time Ċ ) Ġ{ ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvalidate ( this ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( Employee :: date OfBirth ). is LessThan OrEqualTo ( LocalDate . now (). minus Years ( 1 8 L )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( Employee :: work StartTime ). is Between ( start Ġ= ĠLocal Time . of ( 8 , Ġ 0 , Ġ 0 ), Ġend Ġ= ĠLocal Time . of ( 1 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate ( Employee :: work EndTime ). is Between ( start Ġ= ĠLocal Time . of ( 1 8 , Ġ 0 , Ġ 0 ), Ġend Ġ= ĠLocal Time . of ( 2 0 , Ġ 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ ĠEmployee ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdate OfBirth Ġ= ĠLocalDate . now (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork StartTime Ġ= ĠLocal Time . of ( 7 , Ġ 0 , Ġ 0 ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwork EndTime Ġ= ĠLocal Time . of ( 2 1 , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġcatch Ġ( ex : ĠConstraint Violation Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġex . constraint Vi olations ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Message ( locale Ġ= ĠLocale . EN GL ISH ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġ"${ it . property }: Ġ${ it . message }" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach (:: println ) ĊĠĠĠ Ġ} Ċ }