package Ġcz . h link app . gv pin tran et . data . data _ sources . server Ċ Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġcz . h link app . gv pin tran et . data . data _ sources . server . modules . Article Detail Server DataSource Module Ċ import Ġcz . h link app . gv pin tran et . data . data _ sources . server . modules . Content Add Server DataSource Module Ċ import Ġcz . h link app . gv pin tran et . data . data _ sources . server . modules . Main Server DataSource Module Ċ import Ġcz . h link app . gv pin tran et . data . utils . event _ handling . Request Info Ċ import Ġcz . h link app . gv pin tran et . model . Article Ċ import Ġcz . h link app . gv pin tran et . model . Comment Ċ import Ġcz . h link app . gv pin tran et . model . Piece Of News Ċ import Ġjavax . inject . Inject Ċ import Ġjavax . inject . Singleton Ċ Ċ /** Ċ Ġ* ĠMain Ġclass Ġfor Ġcommunic ating Ġwith Ġthe Ġserver . ĠThis Ġis Ġthe Ġclass Ġthat Ġmakes Ġnetwork Ġcalls Ġand Ġhandles Ġthe Ġpersistence Ġof Ġdata Ġto Ġthe Ġdatabase . Ċ Ġ* ĠThe Ġclass 's Ġwork Ġis Ġdivided Ġinto Ġindividual Ġmodules , Ġwhich Ġare Ġinjected Ġin Ġthe Ġconstructor . Ċ Ġ*/ Ċ @ Singleton Ċ class ĠServer DataSource Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġmain Server DataSource Module : ĠMain Server DataSource Module , ĊĠĠĠ Ġarticle Detail Server DataSource Module : ĠArticle Detail Server DataSource Module , ĊĠĠĠ Ġcontent Add Server DataSource Module : ĠContent Add Server DataSource Module ĊĠĠĠ Ġ){ ĊĊĠĠĠ Ġprivate Ġval Ġm Content Add Server DataSource Module Ġ= Ġcontent Add Server DataSource Module ĊĠĠĠ Ġprivate Ġval Ġm Main Server DataSource Module Ġ= Ġmain Server DataSource Module ĊĠĠĠ Ġprivate Ġval Ġm Article Detail Server DataSource Module Ġ= Ġarticle Detail Server DataSource Module ĊĠĠĠĠĊĠĠĠ Ġval Ġcomments Status Ġ: ĠLive Data < Request Info > Ġget () Ġ= Ġm Article Detail Server DataSource Module . comments Status ĊĠĠĠ Ġval Ġload More Comments Status Ġ: ĠLive Data < Request Info > Ġget () Ġ= Ġm Article Detail Server DataSource Module . load More Comments Status ĊĠĠĠ Ġval Ġpost Comment Status Ġ: ĠLive Data < Request Info > Ġget () Ġ= Ġm Article Detail Server DataSource Module . post Comment Status ĊĊĠĠĠ Ġval Ġarticle Status : ĠLive Data < Request Info > Ġget () Ġ= Ġm Main Server DataSource Module . article Status ĊĠĠĠ Ġval Ġload More Articles Status Ġ: ĠLive Data < Request Info > Ġget () Ġ= Ġm Main Server DataSource Module . load More Articles Status ĊĊĠĠĠ Ġval Ġnews Status : ĠLive Data < Request Info > Ġget () Ġ= Ġm Main Server DataSource Module . news Status ĊĠĠĠ Ġval Ġpost Article Status Ġget () Ġ= Ġm Content Add Server DataSource Module . post Article Status ĊĠĠĠ Ġval Ġpost Event Status Ġget () Ġ= Ġm Content Add Server DataSource Module . post Event Status ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDown loads Ġthe Ġmost Ġrecent Ġarticles Ġfrom Ġthe Ġserver . ĊĠĠĠĠ Ġ* Ġ@ param Ġforce Refresh ĠIf Ġfalse , Ġthe Ġdata Ġwill Ġbe Ġref reshed Ġonly Ġif Ġit 's Ġold , Ġtrue Ġto Ġforce Ġrefresh Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrefresh Article Data ( force Refresh Ġ: ĠBoolean ) Ġ= Ġm Main Server DataSource Module . refresh Article Data ( force Refresh ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoads Ġanother Ġchunk Ġof Ġarticles , Ġstarting Ġfrom Ġthe ĠID Ġprovided . ĠUse Ġfor Ġpaging Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload More Articles ( last Article Id : ĠInt ) Ġ= Ġm Main Server DataSource Module . load More Articles ( last Article Id ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDown loads Ġthe Ġmost Ġrecent Ġnews Ġfrom Ġthe Ġserver . ĊĠĠĠĠ Ġ* Ġ@ param Ġforce Refresh ĠIf Ġfalse , Ġthe Ġdata Ġwill Ġbe Ġref reshed Ġonly Ġif Ġit 's Ġold , Ġtrue Ġto Ġforce Ġrefresh Ġit . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġrefresh News Data ( force Refresh : ĠBoolean ) Ġ= Ġm Main Server DataSource Module . refresh News Data ( force Refresh ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDown loads Ġthe Ġmost Ġrecent Ġcomments Ġfor Ġthe Ġgiven Ġ[ article Id ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload Comments ( article Id : ĠInt ) Ġ= Ġm Article Detail Server DataSource Module . load Comments ( article Id ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠLoads Ġanother Ġchunk Ġof Ġcomments Ġfor Ġthe Ġgiven Ġ[ article Id ], Ġstarting Ġfrom Ġthe Ġ[ last Comment Id ] Ġprovided . ĠUse Ġfor Ġpaging Ġdata . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġload More Comments ( article Id Ġ: ĠInt , Ġlast Comment Id : ĠInt ) Ġ= Ġm Article Detail Server DataSource Module . load More Comments ( article Id , last Comment Id ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPosts Ġthe Ġgiven Ġ[ comment ] Ġto Ġthe Ġserver . ĊĠĠĠĠ Ġ* ĠThe Ġ[ comment ] Ġobject Ġmust Ġhave Ġthe Ġfollowing Ġfields Ġset : Ġ[ Comment . article Id ], Ġ[ Comment . text ], Ġ[ Comment . email ], Ġ[ Comment . author ]; ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpost Comment ( comment : ĠComment ) Ġ= Ġm Article Detail Server DataSource Module . post Comment ( comment ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPosts Ġthe Ġgiven Ġ[ article ] Ġto Ġthe Ġserver . ĊĠĠĠĠ Ġ* ĠThe Ġ[ article ] Ġobject Ġmust Ġhave Ġthe Ġfollowing Ġfields Ġset : Ġ[ Article . title ], Ġ[ Article . author ], Ġ[ Article . email ] Ġand Ġat Ġleast Ġone Ġof Ġ[ Article . description ] Ġor Ġ[ Article . content ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpost Article ( article : ĠArticle ) Ġ= Ġm Content Add Server DataSource Module . post Article ( article ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPosts Ġthe Ġgiven Ġevent /[ piece Of News ] Ġto Ġthe Ġserver . ĊĠĠĠĠ Ġ* ĠThe Ġ[ piece Of News ] Ġobject Ġmust Ġhave Ġthe Ġfollowing Ġfields Ġset : Ġ[ Piece Of News . title ], Ġ[ Piece Of News . description ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġpost Event ( piece Of News : ĠPiece Of News ) Ġ= Ġm Content Add Server DataSource Module . post Event ( piece Of News ) Ċ Ċ }