/** Ċ < s late _ header > Ċ author : ĠK ish ore ĠRed dy Ċ url : Ġhttps :// github . com / k ish orer ed dy / scala - s late Ċ copyright : Ġ 2 0 1 5 ĠK ish ore ĠRed dy Ċ license : Ġhttps :// github . com / k ish orer ed dy / scala - s late / blob / master / LICENSE . md Ċ desc : Ġa Ġscala Ġmicro - framework Ċ usage : ĠPlease Ġrefer Ġto Ġlicense Ġon Ġgithub Ġfor Ġmore Ġinfo . Ċ </ s late _ header > Ċ Ġ*/ ĊĊ Ċ package Ġs late kit . examples ĊĊ Ċ // < doc : import _ required > Ċ import Ġs late kit . common . Field Ċ import Ġs late kit . entities . core .* Ċ import Ġs late kit . entities . repos . Entity Repo InMemory Ċ // </ doc : import _ required > Ċ Ċ // < doc : import _ examples > Ċ import Ġs late kit . common . Result Ex Ċ import Ġs late kit . common . Success Ċ import Ġs late kit . common . db . Db Ċ import Ġs late kit . common . db . Db Con String Ċ import Ġs late kit . core . cmds . Cmd Ċ import Ġs late kit . entities . databases . vendors . MySql Converter Ċ import Ġs late kit . entities . databases . vendors . MySql Entity Repo Ċ import Ġs late kit . meta . models . Model Mapper Ċ Ċ // </ doc : import _ examples > ĊĊ Ċ class ĠExample _ Entities _ Service Ġ: ĠCmd (" service ") Ġ{ ĊĊĠĠĠ Ġ// < doc : setup > ĊĠĠĠ Ġ// ĠExample Ġentity Ġthat Ġthe ĠRepo Ġwith Ġmanage Ġvia ĠCRUD Ġoperations ĊĊĠĠĠ Ġ// ĠExample Ġentity Ġthat Ġthe ĠRepo Ġwith Ġmanage Ġvia ĠCRUD Ġoperations ĊĠĠĠ Ġdata Ġclass ĠUser ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġid : ĠLong Ġ= Ġ 0 L , ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ property : Field ( required Ġ= Ġtrue , Ġlength Ġ= Ġ 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġemail : ĠString Ġ= Ġ"", ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ property : Field ( required Ġ= Ġtrue , Ġlength Ġ= Ġ 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfirstName : ĠString Ġ= Ġ"", ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ property : Field ( required Ġ= Ġtrue , Ġlength Ġ= Ġ 3 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠlastName : ĠString Ġ= Ġ"", ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ property : Field ( required Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Male : ĠBoolean Ġ= Ġfalse , ĊĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ property : Field ( required Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġage : ĠInt Ġ= Ġ 3 5 ĊĊĠĠĠ Ġ) Ġ: ĠEntity With Id , ĠEntity Up datable < User > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġsets Ġthe Ġid Ġon Ġthe Ġentity Ġand Ġreturns Ġthe Ġentity Ġwith Ġupdated Ġid . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġid ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġwith Id ( id : ĠLong ): ĠUser Ġ= Ġcopy ( id Ġ= Ġid ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġ 1 . ĠSetup Ġthe Ġmapper ĊĠĠĠ Ġval Ġmodel Ġ= ĠModelMapper . load Schema ( User :: class ) ĊĠĠĠ Ġval Ġmapper Ġ= ĠEntity Mapper ( model , ĠMySql Converter ) ĊĊĠĠĠ Ġ// ĠCASE Ġ 1 : ĠIn - memory Ġ( Ġnon - pers isted Ġ) Ġrepository Ġhas Ġlimited Ġfunctionality ĊĠĠĠ Ġ// Ġbut Ġis Ġvery Ġuseful Ġfor Ġrapid Ġpro tot yp ing Ġof Ġa Ġdata Ġmodel Ġwhen Ġyou Ġare Ġtrying Ġto ĊĠĠĠ Ġ// Ġfigure Ġout Ġwhat Ġfields / properties Ġshould Ġexist Ġon Ġthe Ġmodel ĊĠĠĠ Ġval Ġrepo Ġ= ĠEntity Repo InMemory < User >( User :: class ) ĊĊĠĠĠ Ġ// ĠCASE Ġ 1 A : ĠExplicit ly Ġsetup Ġthe Ġtype Ġof Ġid Ġ( Ġlong Ġ) Ġand Ġmapper Ġto Ġuse ĊĠĠĠ Ġval Ġrepo Setup 2 Ġ= ĠEntity Repo InMemory < User >( User :: class , ĠLong :: class , Ġmapper ) ĊĊĠĠĠ Ġ// ĠCASE Ġ 2 : ĠMy - sql Ġ( Ġpersisted Ġ) Ġrepository Ġcan Ġbe Ġeasily Ġsetup ĊĠĠĠ Ġ// ĠMore Ġexamples Ġof Ġdatabase Ġsetup / entity Ġregistration Ġavailable Ġin ĠSetup / Registration Ġdocs . ĊĠĠĠ Ġ// Ġ 1 . ĠFirst Ġsetup Ġthe Ġdatabase ĊĠĠĠ Ġval Ġdb Ġ= ĠDb ( Db Con String (" com . mysql . jdbc . Driver ", Ġ" jdbc : mysql :// localhost / user _ db ", Ġ" root ", Ġ" abcdefgh i ")) ĊĊĠĠĠ Ġ// Ġ 3 . ĠNow Ġcreate Ġthe Ġrepo Ġwith Ġdatabase Ġand Ġmapper ĊĠĠĠ Ġval Ġrepo MySql Ġ= ĠMySql Entity Repo < User >( db , ĠUser :: class , ĠLong :: class , Ġmapper ) ĊĊĠĠĠ Ġ// ĠCASE Ġ 3 : ĠYou Ġcan Ġalso Ġextend Ġfrom ĠEntity Repository MySql ĊĠĠĠ Ġclass ĠUserService ( repo : ĠEntity Repo < User >) Ġ: ĠEntity Service < User >( Entities (), Ġrepo ) ĊĠĠĠ Ġ// </ doc : setup > ĊĊĊĠĠĠ Ġoverride Ġprotected Ġfun Ġexecute Internal ( args : ĠArray < String >? ): ĠResult Ex < Any > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// < doc : examples > ĊĠĠĠĠĠĠĠ Ġ// ĠThe ĠService Ġlayer Ġinitialized Ġwith Ġan Ġrepository Ġ. ĊĠĠĠĠĠĠĠ Ġ// ĠPurpose Ġof Ġthe Ġservice Ġlayer Ġis Ġto : ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠDelegate Ġto Ġunderlying Ġrepository Ġfor ĠCRUD Ġoperations Ġafter Ġapplying Ġany Ġbusiness Ġlogic . ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠProvide Ġa Ġlayer Ġto Ġinsert Ġbusiness Ġlogic Ġduring Ġother Ġoperations . ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 . ĠHas Ġsome ( Ġnot Ġall Ġ) Ġmethods Ġthat Ġmatch Ġthe Ġrepository ĠCRUD , ĠFind , ĠDelete Ġmethods ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠSub cl assed Ġto Ġperform Ġmore Ġcomplex Ġbusiness Ġlogic Ġthat Ġmay Ġstill Ġinvolve Ġusing Ġthe Ġrepo . ĊĠĠĠĠĠĠĠ Ġ// ĊĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠUserService ( repo ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 1 : ĠCreate Ġ 3 - 4 Ġusers Ġfor Ġshowing Ġuse - cases ĊĠĠĠĠĠĠĠ Ġservice . create ( User ( firstName Ġ= Ġ" In di ana ", ĠlastName Ġ= Ġ" doe - 0 1 ")) ĊĠĠĠĠĠĠĠ Ġservice . create ( User ( firstName Ġ= Ġ" j ane " ĠĠ Ġ, ĠlastName Ġ= Ġ" doe - 0 2 ")) ĊĠĠĠĠĠĠĠ Ġservice . create ( User ( firstName Ġ= Ġ" john " ĠĠ Ġ, ĠlastName Ġ= Ġ" doe - 0 3 ")) ĊĠĠĠĠĠĠĠ Ġservice . create ( User ( firstName Ġ= Ġ" j ane " ĠĠ Ġ, ĠlastName Ġ= Ġ" doe - 0 4 ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 2 : ĠGet Ġby Ġid ĊĠĠĠĠĠĠĠ Ġprint One (" 2 ", Ġservice . get ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 3 : ĠUpdate ĊĠĠĠĠĠĠĠ Ġval Ġitem 2 Ġ= Ġservice . get ( 2 ) ĊĠĠĠĠĠĠĠ Ġitem 2 ?. let Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġupdated Ġ= Ġitem . copy ( firstName Ġ= Ġ" user _ two ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġservice . update ( updated ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 4 : ĠGet Ġall ĊĠĠĠĠĠĠĠ Ġprint All (" all ", Ġservice . getAll ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 5 : ĠGet Ġrecent Ġusers Ġ( Ġ 0 3 , Ġ 0 4 Ġ) ĊĠĠĠĠĠĠĠ Ġprint All (" recent ", Ġservice . recent ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 6 : ĠGet Ġoldest Ġusers Ġ( Ġ 0 1 , Ġ 0 2 Ġ) ĊĠĠĠĠĠĠĠ Ġprint All (" ol dest ", Ġservice . ol dest ( 2 )) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 7 : ĠGet Ġfirst Ġone Ġ( Ġoldest Ġ- Ġ 0 1 Ġ) ĊĠĠĠĠĠĠĠ Ġprint One (" first ", Ġservice . first ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 8 : ĠGet Ġlast Ġone Ġ( Ġrecent Ġ- Ġ 0 4 Ġ) ĊĠĠĠĠĠĠĠ Ġprint One (" last ", Ġservice . last ()) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 9 : ĠDelete Ġby Ġid ĊĠĠĠĠĠĠĠ Ġservice . delete ById ( 4 ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠCASE Ġ 1 0 : ĠGet Ġtotal Ġ( Ġ 4 Ġ) ĊĠĠĠĠĠĠĠ Ġprintln ( service . count ()) ĊĊĠĠĠĠĠĠĠ Ġ// </ doc : examples > ĊĠĠĠĠĠĠĠ Ġreturn ĠSuccess ("") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġprint All ( tag : ĠString , Ġmodels : ĠList < User >): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠ Ġprintln ( tag . toUpperCase ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( model Ġin Ġmodels ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprint One ( null , Ġmodel ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġprint One ( tag : ĠString ?, Ġmodel : User ?): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġtag ?. let Ġ{ Ġt Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( t . toUpperCase ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmodel ?. let Ġ{ Ġm Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" User : Ġ" Ġ+ Ġm . id Ġ+ Ġ", Ġ" Ġ+ Ġm . firstName Ġ+ Ġ", Ġ" Ġ+ Ġm . lastName ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ/* Ċ // < doc : output > Ċ ``` bat ĊĠĠĠĠ 2 ĊĠĠĠ ĠUser : Ġ 2 , Ġj ane , Ġdo e - 0 2 ĊĊĠĠĠ ĠALL ĊĠĠĠ ĠUser : Ġ 1 , Ġj ohn , Ġdo e - 0 1 ĊĠĠĠ ĠUser : Ġ 3 , Ġj ohn , Ġdo e - 0 3 ĊĠĠĠ ĠUser : Ġ 4 , Ġj ane , Ġdo e - 0 4 ĊĠĠĠ ĠUser : Ġ 2 , Ġuser _ two , Ġdo e - 0 2 ĊĊĠĠĠ ĠREC ENT ĊĠĠĠ ĠUser : Ġ 4 , Ġj ane , Ġdo e - 0 4 ĊĠĠĠ ĠUser : Ġ 3 , Ġj ohn , Ġdo e - 0 3 ĊĊĠĠĠ ĠO L DEST ĊĠĠĠ ĠUser : Ġ 1 , Ġj ohn , Ġdo e - 0 1 ĊĠĠĠ ĠUser : Ġ 2 , Ġuser _ two , Ġdo e - 0 2 ĊĊĠĠĠ ĠFIRST ĊĠĠĠ ĠUser : Ġ 1 , Ġj ohn , Ġdo e - 0 1 ĊĊĠĠĠ ĠLAST ĊĠĠĠ ĠUser : Ġ 4 , Ġj ane , Ġdo e - 0 4 ĊĠĠĠĠ 3 Ċ ``` Ċ // </ doc : output > Ċ */ Ċ } Ċ