package Ġcom . n az on azo _ app . sh it _ forces . problem Ċ Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . jdbc . core . Row Mapper Ċ import Ġorg . springframework . stereotype . Repository Ċ Ċ @ Repository Ċ class ĠProblem Repository ( private Ġval Ġjdbc Template : ĠJdbc Template ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrow Mapper For Answer Ġ= ĠRow Mapper Ġ{ Ġrs , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġrs . getString (" answer ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġval Ġrow Mapper For Problem Ġ= ĠRow Mapper Ġ{ Ġrs , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġrs . getInt (" id ") ĊĠĠĠĠĠĠĠ ĠProblem Info ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" contest Id "), Ġrs . getInt (" point "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" statement "), Ġrs . getInt (" indexOf Cont est "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfind Answer ById ( id ), Ġrs . getBoolean (" is Quiz "), Ġid ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfind Answer ById ( id : ĠInt ): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠ Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġanswer ĠFROM Ġanswer Info ĠWHERE Ġid Ġ= Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Mapper For Answer , Ġid ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġfun ĠfindBy Cont est Id ( contest Id : ĠString ): ĠList < Problem Info > Ġ= ĊĠĠĠĠĠĠĠ Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġproblem Info ĠWHERE Ġcontest Id Ġ= Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠORDER ĠBY ĠindexOf Cont est Ġasc ; ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Mapper For Problem , Ġcontest Id ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġfun ĠfindBy Cont est Id And Index ( contest Id : ĠString , ĠindexOf Cont est : ĠInt ): ĠProblem Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproblem Ġ= Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġproblem Info ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġcontest Id Ġ= Ġ? ĠAND ĠindexOf Cont est Ġ= Ġ? Ġorder Ġby ĠindexOf Cont est Ġasc ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Mapper For Problem , Ġcontest Id , ĠindexOf Cont est ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġreturn Ġproblem . get OrNull ( 0 ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġdelete Problem ById ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjdbc Template . update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE ĠFROM Ġproblem Info Ġwhere Ġid Ġ= Ġ? ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġjdbc Template . update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDELETE ĠFROM Ġanswer Info Ġwhere Ġid Ġ= Ġ? ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġadd Answer ( id : ĠInt , Ġanswer : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjdbc Template . update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġanswer Info ( id , Ġanswer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalues ( ?, Ġ? ) ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid , Ġanswer ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġprivate Ġfun Ġadd Problem ( problem : ĠProblem Info ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjdbc Template . update ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠINSERT ĠINTO Ġproblem Info ( contest Id , ĠindexOf Cont est , Ġpoint , Ġstatement , Ġis Quiz ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠVALUES ( ?, Ġ?, Ġ?, Ġ?, Ġ? ) ĊĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproblem . contest Id , Ġproblem . indexOf Cont est , Ġproblem . point , Ġproblem . statement , Ġproblem . is Quiz ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġadd Problems ( contest Id : ĠString , Ġproblems : ĠList < Problem Info >) Ġ{ ĊĠĠĠĠĠĠĠ Ġproblems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġadd Problem ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġproblems In Db Ġ= ĠfindBy Cont est Id ( contest Id ). sorted By Ġ{ Ġit . indexOf Cont est Ġ} ĊĠĠĠĠĠĠĠ Ġproblems In Db . forEach Indexed Ġ{ Ġindex , Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproblems [ index ]. answer . forEach Ġ{ Ġans Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Answer ( it . id !! , Ġans ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġupdate Problem Statement ( contest Id : ĠString , Ġproblems : ĠList < Problem Info >) Ġ{ ĊĠĠĠĠĠĠĠ Ġproblems . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjdbc Template . update ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUPDATE Ġproblem Info Ġset Ġstatement Ġ= Ġ? ĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWHERE Ġcontest Id Ġ= Ġ? Ġand ĠindexOf Cont est Ġ= Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . statement , Ġcontest Id , Ġit . indexOf Cont est ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind ById ( id : ĠInt ): ĠProblem Info ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproblem Ġ= Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSELECT Ġ* ĠFROM Ġproblem Info ĠWHERE Ġid Ġ= Ġ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"" ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Mapper For Problem , Ġid ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( problem . size Ġ== Ġ 0 ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġproblem [ 0 ] ĊĠĠĠ Ġ} ĊĠĠĠ Ġfun Ġfind Answers ById ( id : ĠInt ): ĠList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" SELECT Ġanswer Ġfrom Ġanswer Info ĠWHERE Ġid Ġ= Ġ?", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrow Mapper For Answer , Ġid ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ