package Ġkr . mk 2 . string formatter Ċ Ċ import Ġkr . mk 2 . string formatter . models . String Template Service Ċ import Ġorg . springframework . stereotype . Controller Ċ import Ġorg . springframework . ui . Model Ċ import Ġorg . springframework . web . bind . annotation .* Ċ import Ġorg . springframework . web . multipart . Multipart File Ċ import Ġorg . springframework . web . servlet . Model AndView Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ Ċ @ Controller Ċ class ĠApp Controller ( ĊĠĠĠ Ġvar Ġrenderer : ĠRenderer , ĊĠĠĠ Ġvar Ġstring Template Service : ĠString Template Service , Ċ ) Ġ{ ĊĠĠĠ Ġval Ġsession Key Ġ= Ġ" SSSS SSSS KEY " ĊĊĠĠĠ Ġ@ RequestMapping ("") ĊĠĠĠ Ġfun Ġindex Page ( ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ" tab ") Ġdelimiter : ĠString ?, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ"") Ġdata : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġfile : ĠMultip art File ?, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ"") Ġformat : ĠString ĊĠĠĠ Ġ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmv Ġ= ĠModelAndView (" index ") ĊĠĠĠĠĠĠĠ Ġmv . add Object (" data ", Ġdata ) ĊĠĠĠĠĠĠĠ Ġmv . add Object (" format ", Ġformat ) ĊĠĠĠĠĠĠĠ Ġmv . add Object (" delimiter ", Ġdelimiter ) ĊĠĠĠĠĠĠĠ Ġval Ġdelimiter Ġ= Ġwhen Ġ( delimiter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" tab " Ġ-> Ġ"\ t " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" comma " Ġ-> Ġ"," ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" space " Ġ-> Ġ" Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" xlsx " Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ"\ t " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( delimiter Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile ?. inputStream . use Ġ{ Ġ` is ` Ġ-> Ġrenderer . from Excel (` is `, Ġformat , Ġresult ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . from Plain Text ( data , Ġdelimiter , Ġformat , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . add Object (" result ", Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . add Object (" error ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmv . add Object (" error ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġmv ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ RequestMapping ( value Ġ= Ġ["/ template ", Ġ"/ template /{ _ id }" ]) ĊĠĠĠ Ġfun Ġstring Template ( ĊĠĠĠĠĠĠĠ Ġ@ PathVariable ( required Ġ= Ġfalse ) Ġ_ id : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġid : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ"") Ġdata : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( defaultValue Ġ= Ġ"") Ġformat : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam ( required Ġ= Ġfalse ) Ġsave Id : ĠInt ?, ĊĠĠĠĠĠĠĠ Ġreq : ĠHttpServletRequest , ĊĠĠĠĠĠĠĠ Ġmodel : ĠModel , ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġsimple Session Check ( req ). also Ġ{ Ġif Ġ( it Ġ!= Ġnull ) Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġid Ġ= Ġ_ id Ġ?: Ġid ĊĠĠĠĠĠĠĠ Ġmodel . addAttribute (" items ", Ġstring Template Service . findAll ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġitem Ġ= Ġstring Template Service . find ( id ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" item ", Ġitem ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" data ", Ġif Ġ( data Ġ!= Ġitem . params Ġ&& Ġdata . isNotBlank ()) Ġdata Ġelse Ġitem . params ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" format ", Ġif Ġ( format Ġ!= Ġitem . text Ġ&& Ġformat . isNotBlank ()) Ġformat Ġelse Ġitem . text ) ĊĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" data ", Ġdata ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" format ", Ġformat ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( save Id Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstring Template Service . save ( save Id , Ġdata , Ġformat ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrenderer . from Parameter ( data , Ġformat , Ġresult ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" result ", Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalArgumentException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" error ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . addAttribute (" error ", Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġreturn Ġ" template " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ RequestMapping ("/ template / action ") ĊĠĠĠ Ġfun Ġstring Template Action ( ĊĠĠĠĠĠĠĠ Ġ@ RequestParam Ġaction Type : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam Ġid : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ RequestParam Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġreq : ĠHttpServletRequest , ĊĠĠĠ Ġ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġsimple Session Check ( req ). also Ġ{ Ġif Ġ( it Ġ!= Ġnull ) Ġreturn Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġwhen Ġ( action Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" add " Ġ-> Ġstring Template Service . add ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" rename " Ġ-> Ġstring Template Service . rename ( id , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" delete " Ġ-> Ġstring Template Service . delete ( id ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( action Type Ġ!= Ġ" delete ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" redirect :/ template /${ id }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" redirect :/ template " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ GetMapping ( value Ġ= Ġ["/ template / login "]) ĊĠĠĠ Ġfun Ġlogin (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"/ login " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠAPI _ KEY Ġ= Ġ" an st jd ans !" ĊĊĠĠĠ Ġ@ PostMapping ( value Ġ= Ġ["/ template / login "]) ĊĠĠĠ Ġfun Ġlogin Process (@ RequestParam Ġpw : ĠString , Ġreq : ĠHttpServletRequest ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pw Ġ!= ĠAPI _ KEY ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" redirect :/ login " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreq . getSession ( true ). setAttribute ( session Key , Ġ" true ") ĊĠĠĠĠĠĠĠ Ġreturn Ġ" redirect :/ template " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ GetMapping ("/ robots . txt ") ĊĠĠĠ Ġ@ ResponseBody ĊĠĠĠ Ġfun Ġrobot s TXT (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" User - agent : Ġ* \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Dis allow : Ġ/ " ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsimple Session Check ( req : ĠHttpServletRequest ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( req . getSession ( false )?. getAttribute ( session Key ) Ġ!= Ġ" true ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ" redirect :/ template / login " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }