package Ġcom . so yle . stories . use case . theme . remove Opp osition From Value Web Ċ Ċ import Ġcom . so yle . stories . domain . theme . Theme Ċ import Ġcom . so yle . stories . domain . theme . op position Value . Opp osition Value Ċ import Ġcom . so yle . stories . domain . theme . value Web . Value Web Ċ import Ġcom . so yle . stories . domain . theme . value Web . Value Web DoesNot Contain Opp osition Value Ċ import Ġcom . so yle . stories . use case . theme . Theme Repository Ċ import Ġcom . so yle . stories . use case . theme . Value Web DoesNotExist Ċ import Ġjava . util .* Ċ Ċ class ĠRemove Opp osition From Value Web UseCase ( ĊĠĠĠ Ġprivate Ġval Ġtheme Repository : ĠTheme Repository Ċ ) Ġ: ĠRemove Opp osition From Value Web Ġ{ ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinvoke ( op position Id : ĠUUID , Ġvalue Web Id : ĠUUID , Ġoutput : ĠRemove Opp osition From Value Web . Output Port ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġ( theme , Ġvalue Web , Ġopp osition Value ) Ġ= Ġget Theme Entities ( value Web Id , Ġopp osition Id ) ĊĠĠĠĠĠĠĠ Ġremove Opp osition Value ( theme , Ġvalue Web , Ġopp osition Value ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠO pp osition Removed From Value Web ( theme . id . uuid , Ġvalue Web Id , Ġopp osition Id ) ĊĠĠĠĠĠĠĠ Ġoutput . removed Opp osition From Value Web ( response ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġremove Opp osition Value ( ĊĠĠĠĠĠĠĠ Ġtheme : ĠTheme , ĊĠĠĠĠĠĠĠ Ġvalue Web : ĠValue Web , ĊĠĠĠĠĠĠĠ Ġopp osition Value : ĠO pp osition Value ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġupdated Value Web Ġ= Ġvalue Web . without Opp osition ( op position Value . id ) ĊĠĠĠĠĠĠĠ Ġval Ġupdated Theme Ġ= Ġtheme . without Value Web ( value Web . id ). with Value Web ( updated Value Web ) ĊĠĠĠĠĠĠĠ Ġtheme Repository . update Theme ( updated Theme ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Theme Entities ( ĊĠĠĠĠĠĠĠ Ġvalue Web Id : ĠUUID , ĊĠĠĠĠĠĠĠ Ġopp osition Id : ĠUUID ĊĠĠĠ Ġ): ĠTrip le < Theme , ĠValue Web , ĠO pp osition Value > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtheme Ġ= Ġget Theme ( value Web Id ) ĊĠĠĠĠĠĠĠ Ġval Ġvalue Web Ġ= Ġtheme . value Web s . find Ġ{ Ġit . id . uuid Ġ== Ġvalue Web Id Ġ} !! ĊĠĠĠĠĠĠĠ Ġval Ġopp osition Value Ġ= Ġget Opp osition Value ( value Web , Ġopp osition Id ) ĊĠĠĠĠĠĠĠ Ġreturn ĠTrip le ( theme , Ġvalue Web , Ġopp osition Value ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġsuspend Ġfun Ġget Theme ( value Web Id : ĠUUID ) Ġ= ĊĠĠĠĠĠĠĠ Ġ( theme Repository . get Theme Containing Value Web With Id ( Value Web . Id ( value Web Id )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠValue Web DoesNotExist ( value Web Id )) ĊĊĠĠĠ Ġprivate Ġfun Ġget Opp osition Value ( ĊĠĠĠĠĠĠĠ Ġvalue Web : ĠValue Web , ĊĠĠĠĠĠĠĠ Ġopp osition Id : ĠUUID ĊĠĠĠ Ġ) Ġ= Ġ( value Web . op positions . find Ġ{ Ġit . id . uuid Ġ== Ġopp osition Id Ġ} ĊĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠValue Web DoesNot Contain Opp osition Value ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Web . id . uuid , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġopp osition Id ĊĠĠĠĠĠĠĠ Ġ)) Ċ }