package Ġcom . th om ask io ko . pay bill manager . domain . inter actor . category Ċ Ċ import Ġcom . th om ask io ko . pay bill manager . domain . executor . Post Execution Thread Ċ import Ġcom . th om ask io ko . pay bill manager . domain . executor . Thread Executor Ċ import Ġcom . th om ask io ko . pay bill manager . domain . model . Category Ċ import Ġcom . th om ask io ko . pay bill manager . domain . repository . Category Repository Ċ import Ġcom . th om ask io ko . pay bill manager . domain . use case . Comp letable UseCase Ċ import Ġio . reactivex . Comp letable Ċ import Ġjavax . inject . Inject Ċ Ċ open Ġclass ĠCreate Category Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġcategory Repository : ĠCategory Repository , ĊĠĠĠĠĠĠĠ Ġthread Executor : ĠThread Executor , ĊĠĠĠĠĠĠĠ Ġpost Execution Thread : ĠPost Execution Thread Ċ ) Ġ: ĠComp letable UseCase < Create Category . Params >( thread Executor , Ġpost Execution Thread ) Ġ{ ĊĊĠĠĠ Ġpublic Ġoverride Ġfun Ġbuild UseCase Comp letable ( params : ĠParams ?): ĠComp letable Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( params Ġ== Ġnull ) Ġthrow ĠIllegalArgumentException (" Params Ġcan 't Ġbe Ġnull !") ĊĠĠĠĠĠĠĠ Ġreturn Ġcategory Repository . create Category ( params . category ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠParams Ġconstructor ( val Ġcategory : ĠCategory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġfor Category ( category : ĠCategory ): ĠParams Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠParams ( category ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }