package Ġcom . ze ong it . web . service impl Ċ Ċ import Ġcom . ze ong it . data . database . primary . dao . Tag Black Hole Dao Ċ import Ġcom . ze ong it . data . database . primary . entity . Tag Black Hole Ċ import Ġcom . ze ong it . share . exception . NotFoundException Ċ import Ġcom . ze ong it . share . util . Date Util Ċ import Ġcom . ze ong it . web . service . Tag Black Hole Service Ċ import Ġorg . springframework . data . domain . Page Ċ import Ġorg . springframework . data . domain . Page able Ċ import Ġorg . springframework . data . jpa . domain . Specification Ċ import Ġorg . springframework . stereotype . Service Ċ import Ġjava . util .* Ċ import Ġjavax . persistence . criteria . Predicate Ċ Ċ @ Service Ċ class ĠTag Black Hole ServiceImpl ( private Ġval Ġtag Black Hole Dao : ĠTag Black Hole Dao ) Ġ: ĠTag Black Hole Service Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġpaging ( page able : ĠPage able , ĠuserId : ĠInt , ĠstartDate : ĠDate ?, ĠendDate : ĠDate ?): ĠPage < Tag Black Hole > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtag Black Hole Dao . findAll ( get Specification ( userId , ĠstartDate , ĠendDate ), Ġpage able ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlist ( userId : ĠInt , ĠstartDate : ĠDate ?, ĠendDate : ĠDate ?): ĠList < Tag Black Hole > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtag Black Hole Dao . findAll ( get Specification ( userId , ĠstartDate , ĠendDate )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave ( tag : ĠString ): ĠTag Black Hole Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtag Black Hole Dao . save ( Tag Black Hole ( tag )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġremove ( userId : ĠInt , Ġtag : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtag Black Hole Dao . delete By CreatedBy And Tag ( userId , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget ( userId : ĠInt , Ġtag : ĠString ): ĠTag Black Hole Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtag Black Hole Dao . findBy CreatedBy And Tag ( userId , Ġtag ). orElse Throw Ġ{ ĠNotFound Exception (" é»ĳ åĲį åįķ ä¸įåŃĺåľ¨ ") Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexists ( userId : ĠInt , Ġtag : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtag Black Hole Dao . exists By CreatedBy And Tag ( userId , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġlist Black list ( userId : ĠInt ?): ĠMutable List < String > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpicture Black list Ġ= Ġmutable ListOf < String >() ĊĠĠĠĠĠĠĠ Ġif Ġ( userId Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpicture Black list . addAll ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist ( userId ). map Ġ{ Ġit . tag Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpicture Black list ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Specification ( userId : ĠInt , ĠstartDate : ĠDate ? Ġ= Ġnull , ĠendDate : ĠDate ? Ġ= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ: ĠSpecification < Tag Black Hole > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠSpecification < Tag Black Hole > Ġ{ Ġroot , Ġ_, Ġcriteria Builder Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpredicates List Ġ= ĠArrayList < Predicate >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates List . add ( criteria Builder . equal ( root . get < Int >(" created By "), ĠuserId )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( startDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates List . add ( criteria Builder . greater Than OrEqualTo ( root . get (" create Date "), ĠDate Util . get Day Begin Time ( startDate ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( endDate Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpredicates List . add ( criteria Builder . less Than OrEqualTo ( root . get (" create Date "), ĠDate Util . get Day EndTime ( endDate ))) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriteria Builder . and (* predicates List . toArray ( array Of Null s < Predicate >( predicates List . size ))) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }