package Ġcom . dy me solutions . lin ke de vents . dao Ċ Ċ import Ġcom . dy me solutions . lin ke de vents . models .* Ċ import Ġcom . dy me solutions . lin ke de vents . utils . Publication Status Ċ import Ġorg . jetbrains . ex posed . sql .* Ċ import Ġorg . jetbrains . ex posed . sql . transactions . transaction Ċ Ċ object ĠEvent Aud i ences Ġ: ĠTable (" events _ event _ audience ") Ġ{ ĊĠĠĠ Ġval Ġid Ġ= Ġinteger (" id "). primaryKey (). auto Increment () ĊĠĠĠ Ġval Ġevent Id Ġ= Ġvarchar (" event _ id ", Ġ 5 0 ) Ġreferences ĠEvents . id ĊĠĠĠ Ġval Ġkeyword Id Ġ= Ġvarchar (" keyword _ id ", Ġ 5 0 ) Ġreferences ĠKey words . id ĊĊĠĠĠ Ġfun ĠfindAll Audience Ids By EventId ( eventId : ĠString ): ĠArrayList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaudience Ids Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Aud i ences . eventId Ġeq Ġevent Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaudience Ids . add ( it [ Event Aud i ences . keyword Id ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġaudience Ids ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( eventId : ĠString , Ġaudience Id : ĠString ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Aud i ences . eventId ] Ġ= Ġevent Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Aud i ences . keyword Id ] Ġ= Ġaudience Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġget Ġid ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġdelete All By EventId ( eventId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Where Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Aud i ences . eventId Ġeq Ġevent Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( eventId : ĠString , Ġaudience Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Where Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Aud i ences . eventId Ġeq Ġevent Id Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Event Aud i ences . keyword Id Ġeq Ġkeyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠEvent Keywords Ġ: ĠTable (" events _ event _ keywords ") Ġ{ ĊĠĠĠ Ġval Ġid Ġ= Ġinteger (" id "). primaryKey (). auto Increment () ĊĠĠĠ Ġval Ġevent Id Ġ= Ġvarchar (" event _ id ", Ġ 5 0 ) Ġreferences ĠEvents . id ĊĠĠĠ Ġval Ġkeyword Id Ġ= Ġvarchar (" keyword _ id ", Ġ 5 0 ) Ġreferences ĠKey words . id ĊĊĠĠĠ Ġfun ĠfindAll Keyword Ids By EventId ( eventId : ĠString ): ĠArrayList < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeyword Ids Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Keywords . eventId Ġeq Ġevent Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyword Ids . add ( it [ Event Keywords . keyword Id ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkeyword Ids ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( eventId : ĠString , Ġkeyword Id : ĠString ): ĠInt ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Keywords . eventId ] Ġ= Ġevent Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Keywords . keyword Id ] Ġ= Ġkeyword Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġget Ġid ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete All By EventId ( eventId : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Where Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Keywords . eventId Ġeq Ġevent Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdelete ( eventId : ĠString , Ġkeyword Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelete Where Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Keywords . eventId Ġeq Ġevent Id Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Event Keywords . keyword Id Ġeq Ġkeyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠKeyword Set Keywords Ġ: ĠTable (" events _ keyword set _ keywords ") Ġ{ ĊĠĠĠ Ġval Ġid Ġ= Ġinteger (" id "). primaryKey (). auto Increment () ĊĠĠĠ Ġval Ġkeyword SetId Ġ= Ġvarchar (" keyword set _ id ", Ġ 5 0 ) Ġreferences ĠKeyword Sets . id ĊĠĠĠ Ġval Ġkeyword Id Ġ= Ġvarchar (" keyword _ id ", Ġ 5 0 ) Ġreferences ĠKey words . id ĊĊĠĠĠ Ġfun Ġadd ( keyword SetId : ĠString , Ġkeyword Id : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Keyword Set Keywords . keyword SetId ] Ġ= Ġkeyword SetId ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Keyword Set Keywords . keyword Id ] Ġ= Ġkeyword Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ object ĠKey words Ġ: ĠTable (" events _ keyword ") Ġ{ ĊĠĠĠ Ġval Ġid Ġ= Ġvarchar (" id ", Ġ 5 0 ). primaryKey () ĊĠĠĠ Ġval Ġname Ġ= Ġvarchar (" name ", Ġ 2 5 5 ) ĊĠĠĠ Ġval Ġname Fi Ġ= Ġvarchar (" name _ fi ", Ġ 2 5 5 ). nullable () ĊĠĠĠ Ġval Ġname Sv Ġ= Ġvarchar (" name _ sv ", Ġ 2 5 5 ). nullable () ĊĠĠĠ Ġval Ġname En Ġ= Ġvarchar (" name _ en ", Ġ 2 5 5 ). nullable () ĊĠĠĠ Ġval Ġorigin Id Ġ= Ġvarchar (" origin _ id ", Ġ 5 0 ). nullable () ĊĠĠĠ Ġval Ġcreated Time Ġ= Ġdatetime (" created _ time "). nullable () ĊĠĠĠ Ġval Ġlast Modified Time Ġ= Ġdatetime (" last _ modified _ time "). nullable () ĊĠĠĠ Ġval Ġaggregate Ġ= Ġbool (" aggregate ") ĊĠĠĠ Ġval Ġcreated ById Ġ= Ġinteger (" created _ by _ id "). nullable () ĊĠĠĠ Ġval ĠdataSource Id Ġ= Ġvarchar (" data _ source _ id ", Ġ 1 0 0 ) ĊĠĠĠ Ġval Ġlast Modified ById Ġ= Ġinteger (" last _ modified _ by _ id "). nullable () ĊĠĠĠ Ġval Ġimage Id Ġ= Ġinteger (" image _ id "). nullable () ĊĠĠĠ Ġval Ġdeprecated Ġ= Ġbool (" deprecated ") ĊĠĠĠ Ġval Ġn Events Ġ= Ġinteger (" n _ events ") ĊĠĠĠ Ġval Ġn Events Changed Ġ= Ġbool (" n _ events _ changed ") ĊĠĠĠ Ġval Ġpublisher Id Ġ= Ġvarchar (" publisher _ id ", Ġ 2 5 5 ). nullable () ĊĊĠĠĠ Ġfun Ġcount ( keyword SetId : ĠString ?): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey words ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inner Join ( Keyword Set Keywords ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyword SetId ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFind Ġby Ġkeyword Ġset ĠID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keyword Set Keywords . keyword SetId Ġeq Ġ( keyword SetId )) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keyword Set Keywords . keyword Id Ġeq ĠKey words . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠKey words . id . isNotNull () Ġ// ĠElse Ġreturn Ġthis ĠOp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. count () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcount Usage Of Keywords ( keyword SetId : ĠString ?): ĠList < Usage Report > Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠUpdate Ġquery Ġto Ġinclude Ġkeyword set id ĊĠĠĠĠĠĠĠ Ġval Ġreports Ġ= ĠArrayList < Usage Report >() ĊĊĠĠĠĠĠĠĠ Ġwhen Ġ( keyword SetId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" por i : aud i ences " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlogger . add Logger ( Std Out Sql Logger ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Aud i ences ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. leftJoin ( Keywords ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. leftJoin ( Events ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( Keywords . name , ĠEvent Aud i ences . keyword Id , ĠEvent Aud i ences . id . count ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey words . id Ġeq ĠEvent Aud i ences . keyword Id Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Events . id Ġeq ĠEvent Aud i ences . eventId ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Events . deleted Ġeq Ġfalse ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Events . publication Status Ġeq Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( Keywords . name , ĠEvent Aud i ences . keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Event Aud i ences . id . count (), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports . add ( Usage Report ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Aud i ences . keyword Id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Keywords . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Aud i ences . id . count ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" por i : topics " Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġlogger . add Logger ( Std Out Sql Logger ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEvent Keywords ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. leftJoin ( Keywords ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. leftJoin ( Events ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( Keywords . name , ĠEvent Keywords . keyword Id , ĠEvent Keywords . id . count ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey words . id Ġeq ĠEvent Keywords . keyword Id Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Events . deleted Ġeq Ġfalse ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Events . publication Status Ġeq Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ( Keywords . name , ĠEvent Keywords . keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. orderBy ( Event Keywords . id . count (), Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreports . add ( Usage Report ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Keywords . keyword Id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Keywords . name ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ Event Keywords . id . count ()] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġreports ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġadd ( keyword : ĠKeyword Save ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinsert Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ id ] Ġ= Ġkeyword . id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name ] Ġ= Ġkeyword . name . fi Ġ?: Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name Fi ] Ġ= Ġkeyword . name . fi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name Sv ] Ġ= Ġkeyword . name . fi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ name En ] Ġ= Ġkeyword . name . fi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ origin Id ] Ġ= Ġkeyword . name . fi ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ created Time ] Ġ= Ġkeyword . created Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ lastModified Time ] Ġ= Ġkeyword . lastModified Time ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ aggregate ] Ġ= Ġkeyword . aggregate ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ dataSource Id ] Ġ= Ġkeyword . dataSource Id ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ image Id ] Ġ= Ġkeyword . image Id ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ deprecated ] Ġ= Ġkeyword . deprecated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ n Events ] Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ n Events Changed ] Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit [ publisher Id ] Ġ= Ġkeyword . publisher Id ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfindAll ( page : ĠInt Ġ= Ġ 1 , ĠpageSize : ĠInt Ġ= Ġ 3 0 , Ġkeyword SetId : ĠString ?): ĠArrayList < Keyword > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeywords Ġ= ĠArrayList < Keyword >() ĊĊĠĠĠĠĠĠĠ Ġval Ġoffset Ġ= Ġif Ġ( page Ġ== Ġ 1 ) Ġ 0 Ġelse Ġ( page Ġ- Ġ 1 ) Ġ* ĠpageSize ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠKey words ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. inner Join ( Keyword Set Keywords ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeyword SetId ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠFind Ġby Ġkeyword Ġset ĠID ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keyword Set Keywords . keyword SetId Ġeq Ġ( keyword SetId )) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keyword Set Keywords . keyword Id Ġeq ĠKey words . id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġ?: ĠKey words . id . isNotNull () Ġ// ĠElse Ġreturn Ġthis ĠOp ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. limit ( pageSize , Ġoffset ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeywords . add ( Keyword ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġit [ Keywords . id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠMulti Lang Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfi Ġ= Ġit [ name Fi ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsv Ġ= Ġit [ name Sv ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġen Ġ= Ġit [ name En ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Time Ġ= Ġit [ Keywords . created Time ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlast Modified Time Ġ= Ġit [ Keywords . lastModified Time ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaggregate Ġ= Ġit [ Keywords . aggregate ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Ġ= Ġit [ Keywords . deprecated ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Events Ġ= Ġit [ Keywords . n Events ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Ġ= Ġit [ Keywords . dataSource Id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġit [ Keywords . image Id ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher Ġ= Ġit [ Keywords . publisher Id ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkeywords ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfindAll By Keyword SetId ( keyword SetId : ĠString ): ĠArrayList < Keyword > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeywords Ġ= ĠArrayList < Keyword >() ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keyword Set Keywords Ġinner Join ĠKey words ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , Ġcreated Time , Ġlast Modified Time , Ġaggregate , Ġdeprecated , Ġn Events , ĠdataSource Id , Ġimage Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher Id , Ġname , Ġname Fi , Ġname Sv , Ġname En ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keyword Set Keywords . keyword SetId Ġeq Ġkeyword SetId ) Ġand ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Keywords . id Ġeq ĠKeyword Set Keywords . keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġkeyword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeywords . add ( construct Keyword From Result ( keyword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkeywords ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfindAll Aud i ences By EventId ( eventId : ĠString ): ĠArrayList < Keyword > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġaud i ences Ġ= ĠArrayList < Keyword >() ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Event Aud i ences Ġinner Join ĠKey words ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , Ġcreated Time , Ġlast Modified Time , Ġaggregate , Ġdeprecated , Ġn Events , ĠdataSource Id , Ġimage Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher Id , Ġname , Ġname Fi , Ġname Sv , Ġname En ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Event Aud i ences . eventId Ġeq Ġevent Id ) Ġand Ġ( Keywords . id Ġeq ĠEvent Aud i ences . keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġkeyword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaud i ences . add ( construct Keyword From Result ( keyword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġaud i ences ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠfindAll Topics By EventId ( eventId : ĠString ): ĠArrayList < Keyword > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkeywords Ġ= ĠArrayList < Keyword >() ĊĊĠĠĠĠĠĠĠ Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( Event Keywords Ġinner Join ĠKey words ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. slice ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid , Ġcreated Time , Ġlast Modified Time , Ġaggregate , Ġdeprecated , Ġn Events , ĠdataSource Id , Ġimage Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher Id , Ġname , Ġname Fi , Ġname Sv , Ġname En ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. select Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( Event Keywords . eventId Ġeq Ġevent Id ) Ġand Ġ( Keywords . id Ġeq ĠEvent Keywords . keyword Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ Ġkeyword Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġkeywords . add ( construct Keyword From Result ( keyword )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġkeywords ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind ById ( id : ĠString ): ĠKeyword ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey words . id Ġeq Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconstruct Keyword From Result ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! it . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . first () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Id Exists ( id : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey words . id Ġeq Ġid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. count () Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfind Name Exists ( name : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtransaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKey words . name Ġeq Ġname ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. count () Ġ> Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġconstruct Keyword From Result ( result : ĠResult Row ): ĠKeyword Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠKeyword ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġresult [ id ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcreated Time Ġ= Ġresult [ created Time ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlast Modified Time Ġ= Ġresult [ lastModified Time ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaggregate Ġ= Ġresult [ aggregate ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Ġ= Ġresult [ deprecated ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġn Events Ġ= Ġresult [ n Events ], ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdataSource Ġ= Ġresult [ dataSource Id ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Ġ= Ġresult [ image Id ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpublisher Ġ= Ġresult [ publisher Id ], ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= ĠMulti Lang Value ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfi Ġ= Ġresult [ name Fi ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsv Ġ= Ġresult [ name Sv ], ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġen Ġ= Ġresult [ name En ] ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ } Ċ