package Ġcom . example . android template . data Ċ Ċ /** Ċ Ġ* ĠEn caps ulates Ġthe Ġstate Ġand Ġoutcome Ġof Ġan Ġoperation : Ċ Ġ* Ċ Ġ* Ġ* ĠIf Ġoperation Ġreturned Ġsuccessfully Ġwith Ġresulting Ġ[ value ] Ġof Ġtype Ġ[ T ] Ġand Ġ[ status ] Ġis Ġ[ Status . SUCCESS ], Ċ Ġ* Ġ* ĠIf Ġoperation Ġfailed Ġwith Ġerror Ġ[ message ] Ġand Ġ[ status ] Ġis Ġ[ Status . FAILURE ], Ċ Ġ* Ġ* ĠIf Ġoperation Ġis Ġongoing Ġand Ġ[ status ] Ġis Ġ[ Status . LOADING ]. Ċ Ġ*/ Ċ class ĠResult < T > Ġprivate Ġconstructor ( ĊĠĠĠ Ġval Ġstatus : ĠStatus , ĊĠĠĠ Ġval Ġvalue : ĠT ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġmessage : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ` true ` Ġwhen Ġoperation Ġwas Ġsuccessful , Ġ` false ` Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Success Ġ= Ġstatus Ġ== ĠStatus . SUCCESS ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ` true ` Ġwhen Ġoperation Ġfailed , Ġ` false ` Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġis Failure Ġ= Ġstatus Ġ== ĠStatus . FAILURE ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa ĠResult Ġinstance Ġwhen Ġoperation Ġis Ġsuccessful . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠThe Ġresulting Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġsuccess ( value : ĠT ) Ġ= ĠResult ( Status . SUCCESS , Ġvalue Ġ= Ġvalue ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa ĠResult Ġinstance Ġwhen Ġoperation Ġfails . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġmessage ĠThe Ġerror Ġmessage . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġfailure ( message : ĠString ) Ġ= ĠResult < T >( Status . FAILURE , Ġmessage Ġ= Ġmessage ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa ĠResult Ġinstance Ġwhen Ġoperation Ġhasn 't Ġfinished . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġvalue ĠPot ential Ġresulting Ġvalue . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġloading ( value : ĠT ? Ġ= Ġnull ) Ġ= ĠResult ( Status . LOADING , Ġvalue Ġ= Ġvalue ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠStates Ġa Ġ[ Result ] Ġobject Ġmay Ġfind Ġitself Ġin . Ċ Ġ*/ Ċ enum Ġclass ĠStatus Ġ{ ĊĠĠĠ ĠLO ADING , ĊĠĠĠ ĠSUCCESS , ĊĠĠĠ ĠFAILURE Ċ } Ċ