/* Ċ Ġ* ĠCopyright Ġ[ 2 0 1 8 ] Ġ[ A uk let AP M ] Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠAuthor : ĠEric ĠX u Ċ Ġ* ĠĠĠĠ ĠEmail : Ġ eric . xu @ a uk let apm . com Ċ Ġ* ĠĠĠĠ ĠWeb URL : Ġhttps :// github . com / a uk let apm Ċ Ġ* Ċ Ġ* Ġ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 . a uk let apm . go . spring Ċ Ċ import Ġcom . a uk let apm . go . A uk let Ap m To Go Ċ import Ġcom . a uk let apm . go . Component Ċ import Ġcom . a uk let apm . go . Line Chart Ċ import Ġorg . slf 4 j . LoggerFactory Ċ import Ġorg . springframework . data . mongodb . core . Mongo Template Ċ import Ġjava . text . SimpleDateFormat Ċ Ċ /** Ċ Ġ* Ċ Ġ* Ġ@ author ĠEric ĠX u Ċ Ġ* Ġ@ date Ġ 2 7 / 0 3 / 2 0 1 8 Ċ Ġ*/ Ċ class ĠA uk let Ap m To Go Mongo Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġnew Components Builder ( mongo Template : ĠMongo Template ): ĠComponents Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠComponents Builder ( mongo Template ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠComponents Builder ( mongo Template : ĠMongo Template ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠLoggerFactory . getLogger ( A uk let Ap m To Go Mongo :: class . java ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġmongo Service Ġ= ĠMongo Service ( mongo Template ) ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcomponents Ġ= Ġmutable ListOf < Component >() ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠĠĠĠĠ Ġfun Ġadd Status Table ( name : ĠString , Ġdescription : ĠString , Ġpath : ĠString ? Ġ= Ġnull , Ġmode : ĠMongo Service . Status Table Load Mode Ġ= ĠMongo Service . Status Table Load Mode . REC UR SION ): ĠComponents Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents . add ( A uk let Ap m To Go . A uk let Ap m To Go List ( name , Ġdescription ). setContent Loader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmongo Service . status As Map ( path , Ġmode ). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠA uk let Ap m To Go . KeyValue ( it . key , Ġit . value . toString ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Line Chart ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġpath List : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠComponents Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadd Line Chart ( name , Ġdescription , ĠLine Chart . Value Mode . NORMAL , ĠMongo Service . Status Table Load Mode . REC UR SION , Ġ* path List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Line Chart ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Mode : ĠLine Chart . Value Mode , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġpath List : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠComponents Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadd Line Chart ( name , Ġdescription , Ġvalue Mode , ĠMongo Service . Status Table Load Mode . REC UR SION , Ġ* path List ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Line Chart ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Mode : ĠLine Chart . Value Mode Ġ= ĠLine Chart . Value Mode . NORMAL , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode : ĠMongo Service . Status Table Load Mode Ġ= ĠMongo Service . Status Table Load Mode . REC UR SION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġpath List : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠComponents Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠLine Chart ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newBuilder ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. description ( description ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. value Mode ( value Mode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. load Data Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmongo Service . getStatus Value ( path List . toList (), Ġmode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġdata Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it . value Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġ= Ġit . value . toString (). toDouble () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Exception Ġwhile Ġread Ġthe Ġdata Ġwith Ġ${ it . key }", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLine Chart . Load Data ( it . key , Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents . add ( builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Pie Chart ( name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġpath List : ĠString ĊĠĠĠĠĠĠĠ Ġ): ĠComponents Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġadd Pie Chart ( name , Ġdescription , Ġ* path List , Ġmode Ġ= ĠMongo Service . Status Table Load Mode . REC UR SION ); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Pie Chart ( name : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvar arg Ġpath List : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmode : ĠMongo Service . Status Table Load Mode Ġ= ĠMongo Service . Status Table Load Mode . REC UR SION ĊĠĠĠĠĠĠĠ Ġ): ĠComponents Builder Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomponents . add ( A uk let Ap m To Go . Pie Chart ( name , Ġdescription ). setContent Loader Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠA uk let Ap m To Go . Pie Chart Data . Builder () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvalues Ġ= Ġmongo Service . getStatus Value ( path List . toList (), Ġmode ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalues . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . data ( it . key , Ġit . value . toString (). toDouble ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Exception Ġwhile Ġread Ġthe Ġdata Ġwith Ġ${ it }", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbuilder . build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠList < Component > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcomponents . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }