package Ġcom . he er ki rov . hed ge . server . components . service Ċ Ċ import Ġcom . he er ki rov . hed ge . server . components . database . Data Repository Ċ import Ġcom . he er ki rov . hed ge . server . components . database . transaction Ċ import Ġcom . he er ki rov . hed ge . server . components . kit . Annotation Kit Ċ import Ġcom . he er ki rov . hed ge . server . components . manager . query . Query Manager Ċ import Ġcom . he er ki rov . hed ge . server . dao . album . Album Annotation Relations Ċ import Ġcom . he er ki rov . hed ge . server . dao . ill ust . Ill ust Annotation Relations Ċ import Ġcom . he er ki rov . hed ge . server . dao . meta . Annotations Ċ import Ġcom . he er ki rov . hed ge . server . dao . meta . Author Annotation Relations Ċ import Ġcom . he er ki rov . hed ge . server . dao . meta . Tag Annotation Relations Ċ import Ġcom . he er ki rov . hed ge . server . dao . meta . Topic Annotation Relations Ċ import Ġcom . he er ki rov . hed ge . server . exceptions . NotFound Ċ import Ġcom . he er ki rov . hed ge . server . dto .* Ċ import Ġcom . he er ki rov . hed ge . server . exceptions . AlreadyExists Ċ import Ġcom . he er ki rov . hed ge . server . exceptions . be Ċ import Ġcom . he er ki rov . hed ge . server . utils . DateTime Ċ import Ġcom . he er ki rov . hed ge . server . utils . kt orm . Order Translator Ċ import Ġcom . he er ki rov . hed ge . server . utils . types . any Opt Ċ import Ġcom . he er ki rov . hed ge . server . utils . kt orm . composition Contains Ċ import Ġcom . he er ki rov . hed ge . server . utils . kt orm . composition Empty Ċ import Ġcom . he er ki rov . hed ge . server . utils . kt orm . orderBy Ċ import Ġcom . he er ki rov . hed ge . server . utils . types . ListResult Ċ import Ġcom . he er ki rov . hed ge . server . utils . types . ascending Order Item Ċ import Ġcom . he er ki rov . hed ge . server . utils . types . toList Result Ċ import Ġorg . kt orm . dsl .* Ċ import Ġorg . kt orm . entity . first OrNull Ċ import Ġorg . kt orm . entity . sequence Of Ċ Ċ class ĠAnnotation Service ( private Ġval Ġdata : ĠData Repository , Ġprivate Ġval Ġkit : ĠAnnotation Kit , Ġprivate Ġval Ġquery Manager : ĠQuery Manager ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġorder Translator Ġ= ĠOrder Translator Ġ{ ĊĠĠĠĠĠĠĠ Ġ" id " Ġto ĠAn notations . id ĊĠĠĠĠĠĠĠ Ġ" name " Ġto ĠAn notations . name ĊĠĠĠĠĠĠĠ Ġ" create Time " Ġto ĠAn notations . create Time ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġlist ( filter : ĠAnnotation Filter ): ĠList Result < Annotation Res > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . db . from ( Annotations ). select () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. where With Conditions Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( filter . name Ġ!= Ġnull ) Ġ{ Ġit Ġ+= ĠAn notations . name Ġeq Ġfilter . name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( filter . can Be Exported Ġ!= Ġnull ) Ġ{ Ġit Ġ+= ĠAn notations . can Be Exported Ġeq Ġfilter . can Be Exported Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( filter . target Ġ!= Ġnull ) Ġ{ Ġit Ġ+= Ġ( Annotations . target Ġcomposition Contains Ġfilter . target ) Ġor ĠAn notations . target . composition Empty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( filter . search Ġ!= Ġnull ) Ġ{ Ġit Ġ+= ĠAn notations . name Ġlike Ġ"% ${ filter . search } %" Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( filter . offset , Ġfilter . limit ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( order Translator , Ġfilter . order , Ġdefault Ġ= Ġascending Order Item (" id ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList Result Ġ{ Ġnew Annotation Res ( Annotations . create Entity ( it )) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ throws ĠAlready Exists Ġ(" Annotation ", Ġ" name ", Ġstring ) ĠæŃ¤ åĲįç§° çļĦ annotation å·² åŃĺåľ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcreate ( form : ĠAnnotation Create Form ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . db . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠcreateTime Ġ= ĠDateTime . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġkit . validate Name ( form . name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdata . db . insert And Generate Key ( Annotations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( it . name , Ġname ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( it . can Be Exported , Ġform . can Be Exported ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( it . target , Ġform . target ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset ( it . create Time , ĠcreateTime ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġas ĠInt ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ throws ĠNotFound Ġè¯·æ±Ĥ å¯¹è±¡ ä¸įåŃĺåľ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget ( id : ĠInt ): ĠAnnotation Res Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdata . db . sequence Of ( Annotations ). first OrNull Ġ{ Ġit . id Ġeq Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġnew Annotation Res ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow Ġbe ( NotFound ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ throws ĠNotFound Ġè¯·æ±Ĥ å¯¹è±¡ ä¸įåŃĺåľ¨ ĊĠĠĠĠ Ġ* Ġ@ throws ĠAlready Exists Ġ(" Annotation ", Ġ" name ", Ġstring ) ĠæŃ¤ åĲįç§° çļĦ annotation å·² åŃĺåľ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġupdate ( id : ĠInt , Ġform : ĠAnnotation Update Form ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . db . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . sequence Of ( Annotations ). first OrNull Ġ{ Ġit . id Ġeq Ġid Ġ} Ġ?: Ġthrow Ġbe ( NotFound ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠnewName Ġ= Ġform . name . let Opt Ġ{ Ġkit . validate Name ( it , Ġid ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( any Opt ( new Name , Ġform . can Be Exported , Ġform . target )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . update ( Annotations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhere Ġ{ Ġit . id Ġeq Ġid Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠnewName . apply Opt Ġ{ Ġset ( it . name , Ġthis ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform . can Be Exported . apply Opt Ġ{ Ġset ( it . can Be Exported , Ġthis ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġform . target . apply Opt Ġ{ Ġset ( it . target , Ġthis ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Manager . flush Cache Of ( Query Manager . Cache Type . AN NOT ATION ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ throws ĠNotFound Ġè¯·æ±Ĥ å¯¹è±¡ ä¸įåŃĺåľ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdelete ( id : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġdata . db . transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . delete ( Annotations ) Ġ{ Ġit . id Ġeq Ġid Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( it Ġ<= Ġ 0 ) Ġthrow Ġbe ( NotFound ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . delete ( Ill ust Annotation Relations ) Ġ{ Ġit . annotation Id Ġeq Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . delete ( Album Annotation Relations ) Ġ{ Ġit . annotation Id Ġeq Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . delete ( Tag Annotation Relations ) Ġ{ Ġit . annotation Id Ġeq Ġid Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġkit . update Annotation Cache For Delete ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . delete ( Author Annotation Relations ) Ġ{ Ġit . annotation Id Ġeq Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . db . delete ( Topic Annotation Relations ) Ġ{ Ġit . annotation Id Ġeq Ġid Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġquery Manager . flush Cache Of ( Query Manager . Cache Type . AN NOT ATION ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }