package Ġjp . ac . t ite ch . cs . se . refactor hub . app . use case . service Ċ Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . app . exception . Forbidden Exception Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . app . exception . NotFoundException Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . app . interfaces . repository . Ref actor ing Repository Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . app . model . Commit Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . app . model . Ref actor ing Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . app . model . Ref actor ing Draft Ċ import Ġjp . ac . t ite ch . cs . se . refactor hub . core . annot ator . format Ċ import Ġorg . k oin . core . component . K oin Api Extension Ċ import Ġorg . k oin . core . component . K oin Component Ċ import Ġorg . k oin . core . component . inject Ċ Ċ @ K oin Api Extension Ċ class ĠRefactor ing Service Ġ: ĠK oin Component Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrefactoring Repository : ĠRefactor ing Repository Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval ĠuserService : ĠUserService Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġcommit Service : ĠCommit Service Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġrefactoring Draft Service : ĠRefactor ing Draft Service Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġrefactoring Type Service : ĠRefactor ing Type Service Ġby Ġinject () ĊĠĠĠ Ġprivate Ġval Ġannot ator Service : ĠAnnot ator Service Ġby Ġinject () ĊĊĠĠĠ Ġfun Ġcreate ( ĊĠĠĠĠĠĠĠ Ġ_ commit : ĠCommit , ĊĠĠĠĠĠĠĠ ĠtypeName : ĠString , ĊĠĠĠĠĠĠĠ Ġdata : ĠRefactor ing . Data , ĊĠĠĠĠĠĠĠ Ġdescription : ĠString , ĊĠĠĠĠĠĠĠ ĠuserId : ĠInt ?, ĊĠĠĠĠĠĠĠ ĠparentId : ĠInt ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġis Verified : ĠBoolean Ġ= Ġfalse ĊĠĠĠ Ġ): ĠRefactor ing Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . get Me ( userId ) ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġrefactoring Type Service . get ByName ( typeName ) ĊĠĠĠĠĠĠĠ Ġval Ġcommit Ġ= Ġcommit Service . create If NotExist (_ commit . owner , Ġ_ commit . repository , Ġ_ commit . sha ) ĊĠĠĠĠĠĠĠ Ġ// Ġannot ator Service . create Commit Content If NotExist ( commit ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Repository . create ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcommit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . name , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . format ( type ). let Ġ{ ĠRefactor ing . Data ( it . before , Ġit . after ) Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdescription , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuser . id , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠparentId , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Verified ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetAll (): ĠList < Ref actor ing > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Repository . findAll () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget ( id : ĠInt ): ĠRefactor ing Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrefactoring Ġ= Ġrefactoring Repository . findById ( id ) ĊĠĠĠĠĠĠĠ Ġrefactoring Ġ?: Ġthrow ĠNotFound Exception (" Ref actor ing ( id =$ id ) Ġis Ġnot Ġfound ") ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Children ( id : ĠInt ): ĠList < Ref actor ing > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Repository . findBy Parent Id ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Draft s ( id : ĠInt ): ĠList < Ref actor ing Draft > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Draft Service . get Ref actor ing Draft s ( id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġupdate ( id : ĠInt , ĠtypeName : ĠString ?, Ġdata : ĠRefactor ing . Data ?, Ġdescription : ĠString ?): ĠRefactor ing Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Repository . update ById ( id , ĠtypeName , Ġdata , Ġdescription ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfork ( id : ĠInt , ĠuserId : ĠInt ?): ĠRefactor ing Draft Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . get Me ( userId ) ĊĠĠĠĠĠĠĠ Ġval Ġrefactoring Ġ= Ġget ( id ) ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Draft Service . fork ( refactor ing , Ġuser . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġedit ( id : ĠInt , ĠuserId : ĠInt ?): ĠRefactor ing Draft Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġuser Ġ= ĠuserService . get Me ( userId ) ĊĠĠĠĠĠĠĠ Ġval Ġrefactoring Ġ= Ġget ( id ) ĊĠĠĠĠĠĠĠ Ġif Ġ( refactor ing . owner Id Ġ!= Ġuser . id ) Ġthrow ĠFor bidden Exception (" You Ġare Ġnot ĠRefactor ing ( id =${ refactor ing . id }) ' s Ġowner ") ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Draft Service . edit ( refactor ing , Ġuser . id ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetUser Ref actor ings ( userId : ĠInt ): ĠList < Ref actor ing > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġrefactoring Repository . findBy OwnerId ( userId ) ĊĠĠĠ Ġ} Ċ } Ċ