/** Ċ < 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 6 Ġ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 . sample app . batch ĊĊ Ċ import Ġs late kit . common . Result Ex Ċ import Ġs late kit . common . Success Ċ import Ġs late kit . common . args . Args Schema Ċ import Ġs late kit . core . app . App Process Ċ import Ġs late kit . core . app . App Runner Ċ import Ġs late kit . core . common . AppContext Ċ import Ġs late kit . integration . common . App Ent Context Ċ import Ġs late kit . entities . repos . Entity Repo InMemory Ċ import Ġs late kit . providers . logs . log back . Log back Logs Ċ import Ġs late kit . sample app . core . common . App Encrypt or Ċ import Ġs late kit . sample app . core . models . User Ċ import Ġs late kit . sample app . core . services . UserService ĊĊ Ċ /** Ċ Ġ* ĠEntry Ġpoint Ġinto Ġthe Ġsample Ġconsole Ġapplication . Ċ Ġ* Ġset ĠAPP _ HOME =. Ċ Ġ* Ġset ĠAPP _ CLAS SPATH =% APP _ HOME %\ bin \ *; % APP _ HOME %\ lib \ *; % APP _ HOME %\ ext \* Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ- conf . dir =' file :// ./ conf / sample app - batch /' Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ- env = dev Ġ- log . level = info Ġ- config . location Ġ= Ġ" j ars " Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ- env = dev Ġ- log . level = info Ġ- config . location Ġ= Ġ" conf " Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ- env = dev Ġ- log . level = info Ġ- config . location Ġ= Ġ" file :// ./ conf - sample - batch " Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ-- version Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ-- about Ċ Ġ* Ġjava Ġ- cp Ġ"% APP _ CLAS SPATH %" Ġs late kit . sample app . batch . Sample App Batch Kt Ġ? Ċ Ġ* Ċ Ġ* Ġ@ param Ġargs Ċ Ġ*/ Ċ fun Ġmain ( args : ĠArray < String >): ĠUnit Ġ{ ĊĊĠĠĠ ĠApp Runner . run ( ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠThe Ġcustom Ġapp Ġthat Ġextends Ġfrom ĠApp Process ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSample App Batch ( ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 3 . ĠBuild Ġthe ĠApplication Ġcontext Ġfor Ġthe Ġapp . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠNOT ES : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe ĠApp Context Ġ( Ġsee Ġdocs Ġonline Ġand Ġexample Ġapp Ġinfo Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġis Ġa Ġcontainer Ġto Ġstore Ġcore Ġdependencies Ġsuch Ġas ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ- Ġselected Ġenvironment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ- Ġconfig Ġsettings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ- Ġlogger ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ- Ġencrypt or ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠ Ġ- Ġinfo Ġabout Ġapp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThere Ġare Ġdifferent Ġways Ġyou Ġcan Ġbuild Ġup Ġthe Ġcontext : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠMan ually ĠĠĠĠĠ Ġ( Ġexp lict ly Ġsupply Ġthe Ġcomponents Ġ- Ġsee Ġbelow Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠAutomatically Ġ( Ġusing Ġhelper Ġfunctions Ġto Ġthat Ġcheck Ġcommand Ġline Ġargs Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠApp Runner . build ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= Ġargs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenc Ġ= ĠApp Encrypt or , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġschema Ġ= Ġschema , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogs Ġ= ĠLog back Logs (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconverter Ġ= Ġ:: convert ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ) Ċ } ĊĊ Ċ // Ġsetup Ġthe Ġcommand Ġline Ġarguments . Ċ // ĠNOTE : Ċ // Ġ 1 . ĠThese Ġvalues Ġcan Ġcan Ġbe Ġsetup Ġin Ġthe Ġenv . conf Ġfile Ċ // Ġ 2 . ĠIf Ġsupplied Ġon Ġcommand Ġline , Ġthey Ġoverride Ġthe Ġvalues Ġin Ġ. conf Ġfile Ċ // Ġ 3 . ĠIf Ġany Ġof Ġthese Ġare Ġrequired Ġand Ġnot Ġsupplied , Ġthen Ġan Ġerror Ġis Ġdisplay Ġand Ġprogram Ġexits Ċ // Ġ 4 . ĠHelp Ġtext Ġcan Ġbe Ġeasily Ġbuilt Ġfrom Ġthis Ġschema . Ċ val Ġschema Ġ= ĠArgs Schema () ĊĠĠĠĠĠĠĠ Ġ. text (" env ", Ġ" the Ġenvironment Ġto Ġrun Ġin ", Ġfalse , Ġ" dev ", Ġ" dev ", Ġ" dev 1 | qa 1 | stg 1 | pro ") ĊĠĠĠĠĠĠĠ Ġ. text (" region ", Ġ" the Ġregion Ġlinked Ġto Ġapp ", Ġfalse , Ġ" us ", Ġ" us ", Ġ" us | e urope | ind ia | * ") ĊĠĠĠĠĠĠĠ Ġ. text (" config . loc ", Ġ" location Ġof Ġconfig Ġfiles ", Ġfalse , Ġ" jar ", Ġ" jar ", Ġ" jar | conf ") ĊĠĠĠĠĠĠĠ Ġ. text (" log . level ", Ġ" the Ġlog Ġlevel Ġfor Ġlogging ", Ġfalse , Ġ" info ", Ġ" info ", Ġ" debug | info | warn | error ") ĊĊ Ċ /** Ċ Ġ* ĠConverts Ġa Ġbuilt ĠApp Context Ġinto Ġa Ġfinal Ġone Ġfor Ġuse Ġin Ġthis Ġapp . Ċ Ġ* ĠNOTE : ĠThis Ġis Ġallow Ġcustomization Ġof Ġany Ġmember Ġof Ġthe Ġapp Ġcontext : Ċ Ġ* Ġe . g . Ċ Ġ* Ġ- Ġencrypt or Ċ Ġ* Ġ- Ġlogger Ċ Ġ* Ġ- Ġdatabase Ċ Ġ* Ġ- Ġmetadata Ġetc Ċ Ġ* Ċ Ġ* Ġ@ param Ġctx Ċ Ġ* Ġ@ return Ċ Ġ*/ Ċ fun Ġconvert ( ctx : ĠApp Context ): ĠApp Context Ġ{ ĊĠĠĠ Ġreturn Ġctx . copy ( inf Ġ= Ġctx . inf . copy ( url Ġ= Ġ" http :// apps . company abc . com / wiki ")) Ċ } ĊĊ Ċ /** Ċ Ġ* ĠSample Ġconsole Ġapplication . Ċ Ġ* Ċ Ġ* ĠIMPORT ANT Ċ Ġ* Ġ 1 . ĠYou Ġcan Ġfurther Ġextend Ġthe Ġs late ĠApp Process Ġ( Ġrefer Ġto ĠApp Base Ġin ĠSample App . Core Ċ Ġ* Ġ 2 . ĠThe Ġon Init Ġmethod Ġis ĠONLY Ġprovided Ġhere Ġto Ġshow Ġhow Ġthe Ġcontext Ġcan Ġbe Ġset Ġup Ċ Ġ* Ġ 3 . ĠThe ĠApp Base Ġclass Ġ( Ġin ĠSample App . Core Ġ) Ġcan Ġbe Ġused Ġto Ġhave Ġa Ġcommon Ġbase Ġclass Ġwith Ċ Ġ* ĠĠĠ Ġthe Ġon Init Ġmethod Ġalready Ġimplemented Ġfor Ġyour Ġspecific Ġneeds . Ċ Ġ* Ċ Ġ* ĠNOTE ( s ): Ċ Ġ* Ġ 1 . Ġyou Ġcan Ġextend Ġfrom ĠApp Base Ġ( ĠSample App . Core Ġ) Ġto Ġavoid Ġinitializing Ġcontext Ġin Ġon Init Ġhere Ċ Ġ* Ġ 2 . Ġcommand Ġline Ġarguments Ġare Ġoptional Ġbut Ġset Ġup Ġhere Ġfor Ġdemo Ġpurposes Ċ Ġ*/ Ċ class ĠSample App Batch ( context : ĠApp Context ?) Ġ: ĠApp Process ( context ) Ġ{ ĊĠĠĠ Ġval Ġctx Ent Ġ= ĠApp Ent Context . from AppContext ( ctx ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġinitialize Ġapp Ġcontext , Ġdatabase Ġand ĠORM Ġ/ Ġentities . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠNOTE : ĠIf Ġyou Ġextend Ġthis Ġclass Ġfrom ĠApp Base Ġ( Ġsee ĠSample App . Core Ġproject Ġ), ĊĠĠĠĠ Ġ* Ġwhich Ġcontains Ġthis Ġinit Ġcode . ĠThat Ġway Ġyou Ġdon 't Ġhave Ġto Ġduplicate Ġif Ġfor Ġthe Ġapp Ġtypes ĊĠĠĠĠ Ġ* Ġbelow . ĠThis Ġapproach Ġworks Ġin Ġthe Ġinitialization Ġof Ġapp Ġcontext Ġis Ġsame Ġfor Ġall Ġthe Ġapp Ġtypes . ĊĠĠĠĠ Ġ* Ġ 1 . Ġconsole ĊĠĠĠĠ Ġ* Ġ 2 . Ġcli ĊĠĠĠĠ Ġ* Ġ 3 . Ġserver ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Init (): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠSetup Ġthe ĠUser Ġentity Ġservices ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE ( s ): ĊĠĠĠĠĠĠĠ Ġ// Ġ 1 . ĠSee Ġthe ĠORM Ġdocumentation Ġfor Ġmore Ġinfo . ĊĠĠĠĠĠĠĠ Ġ// Ġ 2 . ĠThe Ġentity Ġservices Ġuses Ġa ĠGeneric ĠService / Repository Ġpattern Ġfor ĠORM Ġfunctionality . ĊĠĠĠĠĠĠĠ Ġ// Ġ 3 . ĠThe Ġservices Ġsupport ĠCRUD Ġoperations Ġout Ġof Ġthe Ġbox Ġfor Ġsingle - table Ġmapped Ġentities . ĊĠĠĠĠĠĠĠ Ġ// Ġ 4 . ĠThis Ġuses Ġan ĠIn - Memory Ġrepository Ġfor Ġdemo Ġbut Ġyou Ġcan Ġuse ĠEntity Repo MySql Ġfor ĠMySql ĊĠĠĠĠĠĠĠ Ġctx Ent . ent . register < User >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Type Ġ= ĠUser :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Type Ġ= ĠUserService :: class , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrepository Ġ= ĠEntity Repo InMemory < User >( User :: class ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice Ctx Ġ= Ġctx Ent ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠYou Ġimplement Ġthis Ġmethod Ġto Ġexecutes Ġthe Ġapp ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Execute (): ĠResult Ex < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo (" app Ġexecuting Ġnow ") ĊĊĠĠĠĠĠĠĠ Ġinfo (" conf Ġsource :" Ġ+ Ġconf . origin ()) ĊĠĠĠĠĠĠĠ Ġinfo (" app Ġarg : Ġ" Ġ+ Ġapp Meta (). start . args ) ĊĠĠĠĠĠĠĠ Ġinfo (" app Ġdir : Ġ" Ġ+ Ġapp Meta (). start . rootDir ) ĊĠĠĠĠĠĠĠ Ġinfo (" app Ġenv : Ġ" Ġ+ Ġapp Meta (). start . env ) ĊĠĠĠĠĠĠĠ Ġinfo (" app Ġcfg : Ġ" Ġ+ Ġapp Meta (). start . config ) ĊĠĠĠĠĠĠĠ Ġinfo ( conf . getString (" env . desc ")) ĊĠĠĠĠĠĠĠ Ġinfo ( conf . getString (" log . level ")) ĊĊĠĠĠĠĠĠĠ Ġ// ĠFeature Ġ 1 : ĠLog Ġmethods Ġavailable Ġfrom ĠLog Support Ġtrait ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE : ĠThis Ġuses Ġthe Ġconsole Ġlogger Ġsetup Ġin Ġthe Ġcontext Ġin Ġinit . ĊĠĠĠĠĠĠĠ Ġinfo ("") ĊĠĠĠĠĠĠĠ Ġinfo (" LOG GING Ġexamples : Ġ================================================= =") ĊĠĠĠĠĠĠĠ Ġdebug (" debug Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In ") ĊĠĠĠĠĠĠĠ Ġinfo (" info Ġ Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In ") ĊĠĠĠĠĠĠĠ Ġwarn (" warn Ġ Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In ") ĊĠĠĠĠĠĠĠ Ġerror (" error Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In ") ĊĠĠĠĠĠĠĠ Ġfatal (" fatal Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In ") ĊĊĠĠĠĠĠĠĠ Ġdebug ( Ġ{ Ġ" lazy Ġdebug Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In " Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġinfo Ġ( Ġ{ Ġ" lazy Ġinfo Ġ Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In " Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġwarn Ġ( Ġ{ Ġ" lazy Ġwarn Ġ Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In " Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġerror ( Ġ{ Ġ" lazy Ġerror Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In " Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġfatal ( Ġ{ Ġ" lazy Ġfatal Ġexample Ġusing Ġtrait Ġmethod Ġfrom ĠLog Support In " Ġ} Ġ) ĊĠĠĠĠĠĠĠ Ġinfo ("") ĊĊĠĠĠĠĠĠĠ Ġ// ĠFeature Ġ 2 : ĠEncrypt Ġ/ ĠDecrypt Ġsupport Ġusing Ġthe ĠEncrypt or Ġsetup Ġin Ġcontext ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE : ĠThis Ġuses Ġthe Ġencrypt or Ġsetup Ġin Ġthe Ġcontext Ġin Ġthe Ġinit . ĊĠĠĠĠĠĠĠ Ġinfo (" ENCRYPT ION Ġexamples : Ġ================================= ============ ==" ) ĊĠĠĠĠĠĠĠ Ġval Ġencrypted Ġ= Ġencrypt (" Hello ĠWorld ") ĊĠĠĠĠĠĠĠ Ġinfo (" encrypted Ġ' hello Ġworld ' Ġ= Ġ${ encrypted }") ĊĠĠĠĠĠĠĠ Ġinfo (" de crypted Ġ'${ encrypted }' Ġ= Ġ" Ġ+ Ġdecrypt ( encrypted )) ĊĠĠĠĠĠĠĠ Ġinfo ("") ĊĊĠĠĠĠĠĠĠ Ġ// ĠFeature Ġ 3 : ĠGet Ġconfig Ġsettings ĊĠĠĠĠĠĠĠ Ġ// ĠNOTE : ĠThis Ġuses Ġthe Ġconfig Ġsetup Ġin Ġthe Ġcontext Ġin Ġthe Ġinit ĊĠĠĠĠĠĠĠ Ġinfo (" CONFIG Ġexamples : Ġ================================================= =") ĊĠĠĠĠĠĠĠ Ġinfo (" app . name Ġ= Ġ" Ġ+ Ġconf . getString (" app . name ")) ĊĠĠĠĠĠĠĠ Ġinfo (" ================================================================ === =") ĊĠĠĠĠĠĠĠ Ġinfo (" sim ulating Ġwork Ġfor Ġ 1 Ġsecond . Ġplease Ġwait ...") ĊĠĠĠĠĠĠĠ ĠThread . sleep ( 1 0 0 0 ) ĊĊĠĠĠĠĠĠĠ Ġinfo (" app Ġcompleted ") ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSuccess ( true ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHO OK Ġfor Ġwhen Ġapp Ġis Ġshut ting Ġdown ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon End (): ĠUnit Ġ{ ĊĠĠĠĠĠĠĠ Ġinfo (" app Ġshut ting Ġdown ") ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠHO OK Ġfor Ġadding Ġitems Ġto Ġthe Ġsummary Ġof Ġdata Ġshown Ġat Ġthe Ġend Ġof Ġapp Ġexecution ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġcollect Summary Extra (): ĠList < Pair < String , ĠString >> Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPair (" region ", Ġctx . arg . getString OrElse (" region ", Ġ" n / a ")) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ