/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠM ik los ĠS agi Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . ms agi . record tag ger Ċ Ċ import Ġcom . github . sal om on br ys . kode in .* Ċ import Ġcom . ms agi . record tag ger . repository . Repository Ċ import Ġcom . ms agi . record tag ger . repository . sql . Sql Repository Ċ import Ġcom . ms agi . record tag ger . rest api . records . KEY _ RECORD S _ PAGE _ SIZE Ċ import Ġcom . ms agi . record tag ger . rest api . records . Records RestApi Ċ import Ġcom . ms agi . record tag ger . rest api . tags . Tags RestApi Ċ import Ġio . ktor . application . Application Ċ import Ġio . ktor . application . call Ċ import Ġio . ktor . application . install Ċ import Ġio . ktor . content . resource Ċ import Ġio . ktor . content . resources Ċ import Ġio . ktor . content . static Ċ import Ġio . ktor . features . Call Logging Ċ import Ġio . ktor . features . Compression Ċ import Ġio . ktor . features . Content Neg otiation Ċ import Ġio . ktor . features . Default Headers Ċ import Ġio . ktor . gson . gson Ċ import Ġio . ktor . http . HttpHeaders Ċ import Ġio . ktor . response . respond Redirect Ċ import Ġio . ktor . routing . Routing Ċ import Ġio . ktor . routing . get Ċ import Ġio . ktor . routing . routing Ċ import Ġio . ktor . server . engine . Application Engine Ċ import Ġio . ktor . server . engine . embedded Server Ċ import Ġio . ktor . server . jetty . Jet ty Ċ import Ġio . ktor . server . netty . Net ty Ċ import Ġorg . slf 4 j . Logger Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġjava . text . DateFormat Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ interface ĠRequest Handler Ġ{ ĊĠĠĠ Ġfun Ġget Handler (): ĠRouting . () Ġ-> ĠUnit Ċ } Ċ Ċ const Ġval ĠKEY _ DEBUG Ġ= Ġ" debug " Ċ const Ġval ĠKEY _ SERVER _ ENGINE Ġ= Ġ" engine " Ċ const Ġval ĠKEY _ SERVER _ PORT Ġ= Ġ" port " Ċ Ċ enum Ġclass ĠServer Engine Ġ{ ĊĠĠĠ ĠNet ty , ĊĠĠĠ ĠJet ty Ċ } Ċ Ċ class ĠServer Ġconstructor ( di : ĠK ode in ? Ġ= Ġnull ) Ġ: ĠK ode in Aware Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġk ode in Ġ= Ġdi Ġ?: ĠK ode in Ġ{ ĊĊĠĠĠĠĠĠĠ Ġconstant ( KEY _ DEBUG ) Ġwith Ġfalse ĊĊĠĠĠĠĠĠĠ Ġbind < Logger >() Ġwith Ġmult iton Ġ{ Ġcls : ĠClass < *> Ġ-> ĠLoggerFactory . getLogger ( cls ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġbind < Repository >() Ġwith Ġsingleton Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSql Repository ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" com . mysql . jdbc . Driver ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" jdbc : mysql :// 1 2 7 . 0 . 0 . 1 / record tag ger ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" re co ta ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" re co ta " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġconstant ( KEY _ SERVER _ ENGINE ) Ġwith ĠServer Engine . Net ty ĊĠĠĠĠĠĠĠ Ġconstant ( KEY _ SERVER _ PORT ) Ġwith Ġ 8 0 8 0 ĊĊĠĠĠĠĠĠĠ Ġconstant ( KEY _ RECORD S _ PAGE _ SIZE ) Ġwith Ġ 3 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlogger : ĠLogger Ġ= Ġk ode in . with Class Of ( this ). instance () ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġserver : ĠApplication Engine ĊĊĠĠĠ Ġprivate Ġfun ĠApplication . module () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdebug : ĠBoolean Ġ= Ġk ode in . instance ( KEY _ DEBUG ) ĊĊĠĠĠĠĠĠĠ Ġinstall ( Default Headers ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheader ( HttpHeaders . Server , Ġ" Reco Ta / 1 . 0 ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġinstall ( Compression ) ĊĠĠĠĠĠĠĠ Ġinstall ( Content Neg otiation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgson Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset DateFormat ( DateFormat . LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( debug ) Ġ{ Ġset Pretty Print ing () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdisable Html Esc aping () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( debug ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinstall ( Call Logging ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic (" static ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources (" css ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources (" js ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource (" index . html ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresource (" tag - admin . html ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . call . respond Redirect ("/ static / index . html ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġrouting ( Records RestApi ( kode in ). get Handler ()) ĊĠĠĠĠĠĠĠ Ġrouting ( Tags RestApi ( kode in ). get Handler ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstart () Ġ{ ĊĠĠĠĠĠĠĠ Ġlogger . info (" Initializing Ġrepository ...") ĊĊĠĠĠĠĠĠĠ Ġval Ġrepository : ĠRepository Ġ= Ġk ode in . instance () ĊĠĠĠĠĠĠĠ Ġrepository . initialize () ĊĊĠĠĠĠĠĠĠ Ġval Ġengine : ĠServer Engine Ġ= Ġk ode in . instance ( KEY _ SERVER _ ENGINE ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" Starting ĠServer ĠEngine Ġ($ engine ) ...") ĊĊĠĠĠĠĠĠĠ Ġval Ġport : ĠInt Ġ= Ġk ode in . instance ( KEY _ SERVER _ PORT ) ĊĊĠĠĠĠĠĠĠ Ġserver Ġ= Ġwhen Ġ( engine ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠServer Engine . Net ty Ġ-> Ġembedded Server ( Net ty , Ġport ) Ġ{ Ġmodule () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠServer Engine . Jet ty Ġ-> Ġembedded Server ( Jet ty , Ġport ) Ġ{ Ġmodule () Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġserver . start () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġstop () Ġ{ ĊĠĠĠĠĠĠĠ Ġserver . stop ( 2 , Ġ 2 , ĠTimeUnit . SECONDS ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġmain ( args : ĠArray < String >) Ġ{ ĊĠĠĠ ĠServer (). start () Ċ }