package Ġjav abot . operations Ċ Ċ import Ġcom . ant wer kz . sof ia . S of ia Ċ import Ġcom . google . common . cache . Cache Builder Ċ import Ġcom . google . common . cache . Cache Loader Ċ import Ġcom . google . inject . Singleton Ċ import Ġjav abot . J av abot Ċ import Ġjav abot . Message Ċ import Ġjav abot . dao . Admin Dao Ċ import Ġorg . js oup . J soup Ċ import Ġjava . io . IOException Ċ import Ġjava . util . concurrent . ExecutionException Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ /** Ċ Ġ* ĠAst ute Ġcod ers Ġmight Ġnotice Ġa ĠSL IGHT Ġsimilarity Ġto ĠRF CO peration ... Ġas Ġin , Ġit 's Ġcopied Ġand Ġpast ed Ġdirectly Ċ Ġ* Ġwith Ġreferences Ġto ĠRFC Ġstuff Ġbeing Ġrenamed Ġto ĠJ EP Ġstuff Ġinstead . Ċ Ġ*/ Ċ @ Singleton Ġclass ĠJ E PO peration Ġ@ com . google . inject . Inject Ġconstructor ( bot : ĠJ av abot , Ġadmin Dao : ĠAdmin Dao ) Ġ: ĠBot Operation ( bot , Ġadmin Dao ) Ġ{ ĊĠĠĠ Ġvar Ġj ep Title Cache Ġ= ĠCache Builder . newBuilder (). maximum Size ( 1 0 0 ). expire After Write ( 1 , ĠTimeUnit . HOUR S ). record Stats (). build ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠCache Loader < String , ĠString >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ SuppressWarnings (" Nullable Problems ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġload ( url : ĠString ): ĠString Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= ĠJ soup . connect ( url ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdoc . title () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Message ( event : ĠMessage ): ĠList < Message > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponses Ġ= Ġarray ListOf < Message >() ĊĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġevent . value . toLowerCase () ĊĠĠĠĠĠĠĠ Ġif Ġ( message . startsWith ( prefix )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj ep Text Ġ= Ġmessage . substring ( prefix . length ). trim () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( j ep Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponses . add ( Message ( event , ĠS of ia . j ep Missing ())) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġj ep Ġ= ĠInteger . parseInt ( j ep Text ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġurl Ġ= Ġ" http :// openjdk . java . net / j eps /% d ". format ( j ep ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponses . add ( Message ( event , ĠS of ia . j ep Suc ceed ( j ep Title Cache . get ( url ), Ġurl ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠExecution Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfrom Ġj ep . fail ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponses . add ( Message ( event , ĠS of ia . j ep Invalid ( j ep Text ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNumber FormatException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponses . add ( Message ( event , ĠS of ia . j ep Invalid ( j ep Text ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresponses ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġprefix : ĠString Ġ= Ġ" j ep " ĊĠĠĠ Ġ} Ċ }