package Ġcom . a over in . dictionary learning . dao . impl Ċ Ċ import Ġcom . a over in . dictionary learning . dao . Words Pack Dao Ċ import Ġcom . a over in . dictionary learning . models . Word Ċ import Ġcom . a over in . dictionary learning . models . Words For Pack Ċ import Ġcom . a over in . dictionary learning . models . Words Pack Ċ import Ġorg . springframework . jdbc . core . Jdbc Template Ċ import Ġorg . springframework . jdbc . core . named param . Named Parameter Jdbc Template Ċ import Ġorg . springframework . jdbc . core . simple . Simple Jdbc Insert Ċ import Ġorg . springframework . stereotype . Repository Ċ Ċ @ Repository Ċ class ĠWord s Pack Dao Impl ( ĊĠĠĠ Ġprivate Ġval Ġjdbc Template : ĠJdbc Template Ċ ) Ġ: ĠWord s Pack Dao Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSQL _ DELETE _ WORD _ FROM _ PACK Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" delete Ġfrom Ġwords 2 group Ġwhere Ġgroup _ id Ġ= Ġ: group _ id Ġand Ġword _ id Ġ= Ġ: word _ id " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSQL _ SELECT _ ALL _ PACK S Ġ= Ġ" select Ġ* Ġfrom Ġword _ group _ main " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSQL _ GET _ WORDS _ FOR _ PACK Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" with Ġgroup _ words Ġas ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġword _ id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġwords 2 group ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Ġgroup _ id Ġ= Ġ: group _ id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġw 1 . id Ġw 1 _ id , Ġw 1 . word Ġword 1 , Ġw 1 . lang Ġlang 1 , Ġw 2 . id Ġw 2 _ id , Ġw 2 . word Ġword 2 , Ġw 2 . lang Ġlang 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfrom Ġword 2 word Ġw w ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Ġwords Ġw 1 Ġon Ġw 1 . id Ġin Ġ( ww . word , Ġw w . link _ word ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjoin Ġwords Ġw 2 Ġon Ġw 2 . id Ġin Ġ( ww . word , Ġw w . link _ word ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Ġw 1 . lang Ġ= Ġ: lang 1 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġw 2 . lang Ġ= Ġ: lang 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġw w . word Ġin Ġ( select Ġ* Ġfrom Ġgroup _ words ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġand Ġw w . link _ word Ġin Ġ( select Ġ* Ġfrom Ġgroup _ words ) """ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetAll Pack (): ĠList < Words Pack > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjdbc Template . query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL _ SELECT _ ALL _ PACK S ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġrs , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠWord s Pack ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getInt (" id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" lang 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" lang 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Words For Pack Id ( id : ĠInt ): ĠWord s For Pack Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġwords Pack Ġ= ĠgetAll Pack () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. stream () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. findFirst () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. get () ĊĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= ĠNamed Parameter Jdbc Template ( jdbc Template ). query ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL _ GET _ WORDS _ FOR _ PACK , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" group _ id " Ġto Ġid , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lang 1 " Ġto Ġwords Pack . lang One , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lang 2 " Ġto Ġwords Pack . lang Two ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ Ġrs , Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWord ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getInt (" w 1 _ id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" word 1 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" lang 1 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWord ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getInt (" w 2 _ id "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" word 2 "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrs . getString (" lang 2 ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠWord s For Pack ( id , Ġresult ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġadd Word To Pack ( pack ID : ĠInt , Ġword Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠSimple Jdbc Insert ( jdbc Template ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with TableName (" words 2 group ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute ( map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" group _ id " Ġto Ġpack ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" word _ id " Ġto Ġword Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove Words From Pack ( pack ID : ĠInt , Ġword Id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠNamed Parameter Jdbc Template ( jdbc Template ). update ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSQL _ DELETE _ WORD _ FROM _ PACK , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmutable Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" group _ id " Ġto Ġpack ID , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" word _ id " Ġto Ġword Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Pack ( name : ĠString , Ġlang 1 : ĠString , Ġlang 2 : ĠString ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSimple Jdbc Insert ( jdbc Template ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. with TableName (" word _ group _ main ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. using Generated Key Columns (" id ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. execute And Return Key ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" name " Ġto Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lang 1 " Ġto Ġlang 1 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lang 2 " Ġto Ġlang 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toInt () ĊĠĠĠ Ġ} Ċ }