package Ġcom . pe ga . exercise . e uro vision _ song _ contest Ċ Ċ import Ġcom . pe ga . exercise . e uro vision _ song _ contest . common . Constants Ċ import Ġcom . pe ga . exercise . e uro vision _ song _ contest . persistence . Jdbc Transaction Persistence Ċ import Ġcom . pe ga . exercise . e uro vision _ song _ contest . persistence . Transaction Persistence Ċ import Ġio . reactivex . functions . Consumer Ċ import Ġio . vertx . core . Promise Ċ import Ġio . vertx . core . http . HttpServer Options Ċ import Ġio . vertx . core . json . JsonArray Ċ import Ġio . vertx . core . json . JsonObject Ċ import Ġio . vertx . ext . bridge . Per mitted Options Ċ import Ġio . vertx . ext . web . handler . Static Handler Ċ import Ġio . vertx . ext . web . handler . sock js . Sock JS Bridge Options Ċ import Ġio . vertx . reactivex . core . Abstract Vert icle Ċ import Ġio . vertx . reactivex . ext . web . Router Ċ import Ġio . vertx . reactivex . ext . web . handler . sock js . Sock JS Handler Ċ import Ġio . vertx . reactivex . sql client . Row Ċ import Ġorg . slf 4 j . LoggerFactory ĊĊ Ċ class ĠMetrics Reporter Vert icle Ġ: ĠAbstract Vert icle () Ġ{ ĊĊĠ Ġprivate Ġval Ġlogger Ġ= ĠLoggerFactory . getLogger (" Metrics Reporter Vert icle ") ĊĠ Ġvar Ġtimer ID Ġ= Ġ 0 L ĊĊĠ Ġ// ĠCalled Ġwhen Ġvert icle Ġis Ġdeployed ĊĠ Ġoverride Ġfun Ġstart ( start Promise : ĠPromise < Void >) Ġ{ ĊĊĠĠĠ Ġval Ġpersistence : ĠTransaction Persistence Ġ= ĠJdbc Transaction Persistence . create ( vertx ) ĊĊĠĠĠ Ġtimer ID Ġ= Ġvert x . set Periodic ( Constants . METRIC _ REPORT _ PERIOD ) Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠ Ġpersistence . metrics ĊĠĠĠĠĠĠĠ Ġ. do OnError ( Consumer Ġ{ Ġlogger . error ( it . localized Message ) Ġ}) ĊĠĠĠĠĠĠĠ Ġ. subscribe ( Consumer Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġresponse : ĠJson Array Ġ= ĠJson Array () ĊĠĠĠĠĠĠĠĠĠ Ġit . forEach Ġ{ Ġrow : ĠRow ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( JsonObject (). put (" year ", Ġrow ?. getValue ( 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" country ", Ġrow ?. getValue ( 1 )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. put (" count ", Ġrow ?. getValue ( 2 ))) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġvert x . event Bus (). send ( Constants . EVENT BUS ADDR _ METR ICS , Ġresponse ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrouter Ġ= ĠRouter . router ( vertx ) ĊĊĠĠĠ Ġval Ġsock JS Handler : ĠS ock JS Handler Ġ= ĠS ock JS Handler . create ( vertx ) ĊĠĠĠ Ġval Ġoptions Ġ= ĠS ock JS Bridge Options () ĊĠĠĠĠĠ Ġ. add Outbound Per mitted ( Per mitted Options (). set Address ( Constants . EVENT BUS ADDR _ METR ICS )); ĊĊĠĠĠ Ġ// Ġmount Ġthe Ġbridge Ġon Ġthe Ġrouter ĊĠĠĠ Ġrouter . mount Sub Router ("/ event bus ", Ġsock JS Handler . bridge ( options )) ĊĠĠĠ Ġ// ĠThe Ġweb Ġserver Ġweb root Ġstatic Ġcontent Ġhandler ĊĠĠĠ Ġrouter . delegate . route (). handler ( Static Handler . create (). set Caching Enabled ( false )); ĊĊĠĠĠ Ġvert x . create HttpServer ( HttpServer Options () ĊĠĠĠĠĠ Ġ. set Host ( Constants . HTTP SERVER ) ĊĠĠĠĠĠ Ġ. set Port ( System . getenv ( Constants . METR ICS SERVER PORT ). toInt ())) ĊĠĠĠĠĠ Ġ. request Handler ( router ) ĊĠĠĠĠĠ Ġ. listen Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠ Ġif Ġ( event . succeeded ()) Ġstart Promise . complete () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠ Ġstart Promise . fail ( event . cause ()) ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ// ĠOptional Ġ- Ġcalled Ġwhen Ġvert icle Ġis Ġun deployed ĊĠ Ġoverride Ġfun Ġstop ( stop Promise : ĠPromise < Void >) Ġ{ ĊĠĠĠ Ġvert x . cancel Timer ( timer ID ) ĊĠ Ġ} Ċ } Ċ