/* Ċ Ġ* ĠCopyright Ġ 2 0 2 1 - 2 0 2 1 ĠP avel ĠP one c , Ġhttps :// github . com / pp one c Ċ Ġ* Ċ Ġ* Ġ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 . uj orm . kotlin . demo Ċ Ċ import Ġorg . uj orm . kotlin . Model Provider Ċ import Ġorg . uj orm . kotlin . model . Department Ċ import Ġorg . uj orm . kotlin . model . User Ċ import Ġorg . uj orm . kotlin . model . user Ċ import Ġjava . time . LocalDate Ċ Ċ /** ĠSample Ġof Ġusage Ġ*/ Ċ fun Ġmain () Ġ{ ĊĠĠĠ Ġuse C riter ions () ĊĠĠĠ Ġuse Properties () ĊĠĠĠ Ġuse Entity Builder () Ċ } Ċ Ċ /** ĠSample Ġof Ġusage Ġ*/ Ċ fun Ġuse C riter ions () Ġ{ ĊĠĠĠ Ġval Ġ_ user Ġ= ĠModel Provider . user ĊĊĠĠĠ Ġval Ġcr n 1 Ġ= Ġ_ user . nickname ĠE Q Ġ" P avel " ĊĠĠĠ Ġval Ġcr n 2 Ġ= Ġ_ user . id ĠGT Ġ 1 ĊĠĠĠ Ġval Ġcr n 3 Ġ= Ġ_ user . id ĠLT Ġ 9 9 ĊĠĠĠ Ġval Ġcr n 4 Ġ= Ġcr n 1 ĠOR Ġ( cr n 2 ĠAND Ġcr n 3 ) ĊĠĠĠ Ġval Ġcr n 5 Ġ= Ġcr n 1 . not () ĠOR Ġ( cr n 2 ĠAND Ġcr n 3 ) ĊĠĠĠ Ġassert ( cr n 1 . toString () Ġ== Ġ""" User : Ġnickname ĠE Q Ġ" P avel """ ") ĊĠĠĠ Ġassert ( cr n 2 . toString () Ġ== Ġ""" User : Ġid ĠGT Ġ 1 """) ĊĠĠĠ Ġassert ( cr n 4 . toString () Ġ== Ġ""" User : Ġ( nickname ĠE Q Ġ" P avel ") ĠOR Ġ(( id ĠGT Ġ 1 ) ĠAND Ġ( id ĠLT Ġ 9 9 )) """) ĊĠĠĠ Ġassert ( cr n 5 . toString () Ġ== Ġ""" User : Ġ( NOT Ġ( nickname ĠE Q Ġ" P avel ")) ĠOR Ġ(( id ĠGT Ġ 1 ) ĠAND Ġ( id ĠLT Ġ 9 9 )) """) ĊĊĠĠĠ Ġval Ġuser Ġ= ĠUser ( id Ġ= Ġ 1 1 , Ġnickname Ġ= Ġ" X aver ", Ġborn Ġ= ĠLocalDate . now ()) ĊĠĠĠ Ġval Ġno Valid : ĠBoolean Ġ= Ġcr n 1 ( user ) ĊĠĠĠ Ġval ĠisValid : ĠBoolean Ġ= Ġcr n 4 ( user ) ĊĠĠĠ Ġassert (! no Valid , Ġ{ Ġ" cr n 1 ( user )" Ġ}) ĊĠĠĠ Ġassert ( isValid , Ġ{ Ġ" cr n 4 ( user )" Ġ}) Ċ } Ċ Ċ /** ĠSample Ġof Ġusage Ġ*/ Ċ fun Ġuse Properties () Ġ{ ĊĠĠĠ Ġval Ġ_ user Ġ= ĠModel Provider . user ĊĠĠĠ Ġval Ġuser Ġ= ĠUser ( id Ġ= Ġ 1 1 , Ġnickname Ġ= Ġ" X aver ", Ġborn Ġ= ĠLocalDate . now ()) ĊĊĠĠĠ Ġval ĠuserName : ĠString Ġ= Ġ_ user . nickname ( user ) Ġ// ĠGet Ġa Ġname Ġof Ġthe Ġuser ĊĠĠĠ Ġval ĠuserId : ĠInt Ġ= Ġ_ user . id ( user ) ĊĠĠĠ Ġval Ġparent : ĠUser ? Ġ= Ġ_ user . inv ited From ( user ) ĊĠĠĠ Ġ// val Ġparent Name Ġ: ĠString Ġ= Ġ_ user . name . parent ( user ) Ġ// ĠTODO : Ġreading Ġthe Ġrelations ĊĠĠĠ Ġassert ( userName Ġ== Ġ" X aver ", Ġ{ Ġ" userName " Ġ}) ĊĠĠĠ Ġassert ( userId Ġ== Ġ 1 1 , Ġ{ Ġ" userId " Ġ}) ĊĠĠĠ Ġassert ( parent Ġ== Ġnull , Ġ{ Ġ" userId " Ġ}) ĊĊĠĠĠ Ġ_ user . nickname ( user , Ġ" James ") Ġ// ĠSet Ġa Ġname Ġto Ġthe Ġuser ĊĠĠĠ Ġ_ user . inv ited From ( user , Ġnull ) ĊĠĠĠ Ġassert (_ user . id . name Ġ== Ġ" id ", Ġ{ Ġ" property Ġname " Ġ}) ĊĠĠĠ Ġassert (_ user . id . toString () Ġ== Ġ" id ", Ġ{ Ġ" property Ġname " Ġ}) ĊĠĠĠ Ġassert (_ user . id . info () Ġ== Ġ" User . id ", Ġ{ Ġ" property Ġname " Ġ}) ĊĠĠĠ Ġassert (_ user . id () Ġ== Ġ" User . id ", Ġ{ Ġ" property Ġname " Ġ}) ĊĊĠĠĠ Ġval Ġproperties Ġ= ĠModel Provider . user ._ properties ĊĠĠĠ Ġassert ( properties . size Ġ== Ġ 5 , Ġ{ Ġ" Count Ġof Ġproperties " Ġ}) ĊĠĠĠ Ġassert ( properties [ 0 ]. name Ġ== Ġ" id ", Ġ{ Ġ" property Ġname " Ġ}) ĊĠĠĠ Ġassert ( properties [ 1 ]. name Ġ== Ġ" nickname ", Ġ{ Ġ" property Ġname " Ġ}) ĊĠĠĠ Ġassert ( properties [ 2 ]. name Ġ== Ġ" born ", Ġ{ Ġ" property Ġname " Ġ}) ĊĊĠĠĠ Ġ// ĠValue Ġtype ĊĠĠĠ Ġassert (_ user . id . value Class Ġ== ĠInt :: class ) ĊĠĠĠ Ġassert (_ user . born . value Class Ġ== ĠLocalDate :: class ) ĊĊĠĠĠ Ġ// ĠEntity Ġtype Ġ( alias Ġdomain Ġtype ) ĊĠĠĠ Ġassert (_ user . id . entity Class Ġ== ĠUser :: class ) ĊĠĠĠ Ġassert (_ user . born . entity Class Ġ== ĠUser :: class ) Ċ } Ċ Ċ /** ĠCreate Ġnew Ġobject Ġby Ġa Ġconstructor Ġ( for Ġimmutable Ġobjects ) Ġ*/ Ċ fun Ġuse Entity Builder () Ġ{ ĊĠĠĠ Ġval Ġ_ user Ġ= ĠModel Provider . user ĊĠĠĠ Ġval Ġuser Ġ: ĠUser Ġ= Ġ_ user . builder () ĊĠĠĠĠĠĠĠ Ġ. set (_ user . id , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ. set (_ user . nickname , Ġ" John ") ĊĠĠĠĠĠĠĠ Ġ// . set (_ user . name , Ġnull ) Ġ// ĠComp il ator Ġfails ĊĠĠĠĠĠĠĠ Ġ. set (_ user . born , ĠLocalDate . now ()) ĊĠĠĠĠĠĠĠ Ġ. set (_ user . department , ĠDepartment ( 2 , Ġ" B ")) ĊĠĠĠĠĠĠĠ Ġ. set (_ user . inv ited From , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġassert ( user . id Ġ== Ġ 1 ) ĊĠĠĠ Ġassert ( user . nickname Ġ== Ġ" John ") Ċ } Ċ