package Ġorg . jav am aster . fragment learning . service . impl Ċ Ċ import Ġandroid . util . Log Ċ import Ġcom . fasterxml . jackson . core . type . Type Reference Ċ import Ġcom . fasterxml . jackson . databind . ObjectMapper Ċ import Ġokhttp 3 . Response Ċ import Ġorg . jav am aster . fragment learning . R Ċ import Ġorg . jav am aster . fragment learning . common . App Ċ import Ġorg . jav am aster . fragment learning . consts . App Consts Ċ import Ġorg . jav am aster . fragment learning . data . entity .* Ċ import Ġorg . jav am aster . fragment learning . data . model .* Ċ import Ġorg . jav am aster . fragment learning . exception . Biz Exception Ċ import Ġorg . jav am aster . fragment learning . exception . Login Exception Ċ import Ġorg . jav am aster . fragment learning . service . Learn Service Ċ import Ġorg . jav am aster . fragment learning . service . Login Service Ċ import Ġorg . jav am aster . fragment learning . utils . Net Utils Ċ import Ġorg . lite pal . Lite Pal Ċ Ċ /** Ċ Ġ* Ġ@ author Ġy ud ong Ċ Ġ* Ġ@ date Ġ 2 0 1 9 / 8 / 1 8 Ċ Ġ*/ Ċ class ĠLearn ServiceImpl Ġconstructor ( private Ġval ĠobjectMapper : ĠObjectMapper ) Ġ: ĠLearn Service Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġfind Topics List ( cache First : ĠBoolean ): ĠMutable List < Topics > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtopics List Ġ= ĠLite Pal . findAll ( Topics :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( topics List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtopics List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġmap [" topics Form "] Ġ= Ġmap Of < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġmap [" page "] Ġ= Ġget Page () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ TOP ICS _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < Mutable List < Topics >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < Mutable List < Topics >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Topics :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç¼ĵåŃĺ åĪ° æķ°æį®åºĵ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( result Vo . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult Vo . data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Sections List ( topics Code : ĠString , Ġcache First : ĠBoolean ): ĠMutable List < Sections > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsections List Ġ= ĠLite Pal . where (" topics Code = ?", Ġtopics Code ). find ( Sections :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( sections List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġsections List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġmap [" sections Form "] Ġ= Ġmap Of < String , ĠAny >(" topics Code " Ġto Ġtopics Code ) ĊĠĠĠĠĠĠĠ Ġmap [" page "] Ġ= Ġget Page () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ SECTION S _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < Mutable List < Sections >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Sections >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Sections :: class . java , Ġ" topics Code = ?", Ġtopics Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ ç¼ĵåŃĺ åĪ° æķ°æį®åºĵ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( result Vo . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult Vo . data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind K nowled ges List ( sections Code : ĠString , Ġcache First : ĠBoolean ): ĠMutable List < K nowled ges > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġknow led ges List Ġ= ĠLite Pal . where (" sections Code = ?", Ġsections Code ). find ( K nowled ges :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( k nowled ges List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġknow led ges List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġmap [" k nowled ges Form "] Ġ= Ġmap Of < String , ĠAny >(" sections Code " Ġto Ġsections Code ) ĊĠĠĠĠĠĠĠ Ġmap [" page "] Ġ= Ġget Page () ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ KNO W LED GES _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < Mutable List < K nowled ges >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < Mutable List < K nowled ges >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( K nowled ges :: class . java , Ġ" sections Code = ?", Ġsections Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( result Vo . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult Vo . data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind K nowled ges Question Num ( ĊĠĠĠĠĠĠĠ Ġsections Code : ĠString , ĊĠĠĠĠĠĠĠ Ġcache First : ĠBoolean ĊĠĠĠ Ġ): ĠMutable Map < String , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= ĠLite Pal . where (" sections Code = ?", Ġsections Code ). find ( K nowled ges Question Num Vo :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . sections Code ] Ġ= Ġit . questions Num ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġreq Map Ġ= Ġmutable Map Of (" sections Code " Ġto Ġsections Code ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ KNO W LED GES _ QUEST ION _ NUM , Ġreq Map ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < Mutable List < K nowled ges Question Num Vo >> Ġ= ĠobjectMapper . readValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġres Json Str , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠType Reference < Result Vo < Mutable List < K nowled ges Question Num Vo >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( K nowled ges Question Num Vo :: class . java , Ġ" sections Code = ?", Ġsections Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( result Vo . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Vo . data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . sections Code ] Ġ= Ġit . questions Num ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Knowledge Points List ( k nowled ges Code : ĠString ): ĠResult Vo < List < Knowledge Points >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" knowledge Points Form "] Ġ= Ġmap Of < String , ĠAny >(" k nowled ges Code " Ġto Ġknow led ges Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" page "] Ġ= Ġget Page () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ KNO W LED GE _ POINTS _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( errorCode Ġ= Ġe . errorCode , Ġerror Msg Ġ= Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( this :: class . qualified Name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠApp Consts . ERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġe . message Ġ?: ĠApp . context . getString ( R . string . network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Knowledge Points >> >() Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Questions List ( questions Code : ĠString ): ĠResult Vo < List < Questions >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" questions Form "] Ġ= Ġmap Of < String , ĠAny >(" questions Code " Ġto Ġquestions Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" page "] Ġ= Ġget Page () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ QUEST IONS _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( errorCode Ġ= Ġe . errorCode , Ġerror Msg Ġ= Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( this :: class . qualified Name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠApp Consts . ERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġe . message Ġ?: ĠApp . context . getString ( R . string . network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Questions >> >() Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Associate Options ( questions Code : ĠString ): ĠResult Vo < List < Options >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" questions Code "] Ġ= Ġquestions Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ OPTIONS _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( errorCode Ġ= Ġe . errorCode , Ġerror Msg Ġ= Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( this :: class . qualified Name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠApp Consts . ERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġe . message Ġ?: ĠApp . context . getString ( R . string . network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Options >> >() Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Ex ams List ( cache First : ĠBoolean ): ĠMutable List < Ex ams > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġex ams List Ġ= ĠLite Pal . findAll ( Ex ams :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ex ams List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġex ams List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠ Ġmap [" page "] Ġ= Ġget Page () ĊĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ EX AMS _ LIST , Ġmap ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < Mutable List < Ex ams >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Ex ams >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Ex ams :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( result Vo . data !! ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġresult Vo . data ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Questions By Ex ams Code ( ex ams Code : ĠString ): ĠResult Vo < List < Exam Questions Vo >> Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of (" ex ams Code " Ġto Ġex ams Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ QUEST IONS _ BY _ EX AMS _ CODE , Ġmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( errorCode Ġ= Ġe . errorCode , Ġerror Msg Ġ= Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( this :: class . qualified Name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠApp Consts . ERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġe . message Ġ?: ĠApp . context . getString ( R . string . network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < List < Exam Questions Vo >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Exam Questions Vo >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Exam Questions Vo :: class . java , Ġ" ex ams Code = ?", Ġex ams Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Vo . data !!. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Options Vo :: class . java , Ġ" questions Code = ?", Ġit . questions Code ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . ex ams Code Ġ= Ġex ams Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . options V os . forEach Ġ{ Ġoptions Vo : ĠOptions Vo Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Vo . questions Code Ġ= Ġit . questions Code ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( it . options V os ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( result Vo . data ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġresult Vo ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsave Le ar ns ( knowledge Points Code : ĠString ): ĠResult Vo < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġval Ġle ar ns Record Vo Ġ= ĠLear ns Record Vo () ĊĠĠĠĠĠĠĠ Ġval Ġpreference Ġ= ĠApp . get Learn SharedPreferences () ĊĠĠĠĠĠĠĠ Ġle ar ns Record Vo . topics Code Ġ= Ġpreference . getString (" topics Code ", Ġ"") ĊĠĠĠĠĠĠĠ Ġle ar ns Record Vo . sections Code Ġ= Ġpreference . getString (" sections Code ", Ġ"") ĊĠĠĠĠĠĠĠ Ġle ar ns Record Vo . k nowled ges Code Ġ= Ġpreference . getString (" k nowled ges Code ", Ġ"") ĊĠĠĠĠĠĠĠ Ġle ar ns Record Vo . username Ġ= ĠApp . get Login SharedPreferences (). getString ( Login Service . USERNAME , Ġ"") ĊĠĠĠĠĠĠĠ Ġle ar ns Record Vo . knowledge Points Code Ġ= Ġknowledge Points Code ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" lear ns Record Vo "] Ġ= Ġle ar ns Record Vo ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . SAVE _ LEAR NS , Ġmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( errorCode Ġ= Ġe . errorCode , Ġerror Msg Ġ= Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( this :: class . qualified Name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠApp Consts . ERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġe . message Ġ?: ĠApp . context . getString ( R . string . network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < Int >>() Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Topics Progress ( cache First : ĠBoolean ): ĠMap < String , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= ĠApp . get Login SharedPreferences (). getString ( Login Service . USERNAME , Ġ"") ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress List Ġ= ĠLite Pal . where (" username = ?", Ġusername ). find ( Topics Progress Vo :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . topics Code ] Ġ= Ġit . progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġval Ġmap 1 : ĠMap < String , ĠString > Ġ= Ġmutable Map Of (" username " Ġto Ġusername !! ) ĊĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ TOP ICS _ PROGRESS , Ġmap 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < List < Topics Progress Vo >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Topics Progress Vo >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġresult Vo . data !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Topics Progress Vo :: class . java , Ġ" username = ?", Ġusername ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Vo . data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . topics Code ] Ġ= Ġit . progress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġfind Sections Progress ( topics Code : ĠString , Ġcache First : ĠBoolean ): ĠMutable Map < String , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( cache First ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprogress List Ġ= ĠLite Pal . where (" topics Code = ?", Ġtopics Code ). find ( Sections Progress Vo :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( progress List . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprogress List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . sections Code ] Ġ= Ġit . progress ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġusername Ġ= ĠApp . get Login SharedPreferences (). getString ( Login Service . USERNAME , Ġ"") !! ĊĠĠĠĠĠĠĠ Ġval Ġmap 1 Ġ= Ġmutable Map Of (" username " Ġto Ġusername ) ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . FIND _ SECTION S _ PROGRESS , Ġmap 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġval Ġresult Vo : ĠResult Vo < List < Sections Progress Vo >> Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < List < Sections Progress Vo >> >() Ġ{}) ĊĠĠĠĠĠĠĠ Ġif Ġ( result Vo . success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlist Ġ= Ġresult Vo . data !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . delete All ( Sections Progress Vo :: class . java , Ġ" topics Code = ?", Ġtopics Code ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlist . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . topics Code Ġ= Ġtopics Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLite Pal . save All ( list ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠInt >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresult Vo . data . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap [ it . sections Code ] Ġ= Ġit . progress ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠB iz Exception ( result Vo ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubmit Answers ( ex ams Code : ĠString , Ġex ams Answers : ĠList < Ex ams Answer >): ĠResult Vo < Submit Answers Res Vo > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresponse : ĠResponse ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmap Ġ= Ġmutable Map Of < String , ĠAny >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" ex ams Code "] Ġ= Ġex ams Code ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap [" ex ams Answers "] Ġ= Ġex ams Answers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresponse Ġ= ĠNet Utils . post For Response ( App Consts . SUBMIT _ AN SW ERS , Ġmap ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠLogin Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( errorCode Ġ= Ġe . errorCode , Ġerror Msg Ġ= Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( this :: class . qualified Name , Ġ"", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠResult Vo ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠerrorCode Ġ= ĠApp Consts . ERROR _ CODE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror Msg Ġ= Ġe . message Ġ?: ĠApp . context . getString ( R . string . network _ error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġres Json Str : ĠString Ġ= Ġresponse . body !!. string () ĊĠĠĠĠĠĠĠ Ġreturn ĠobjectMapper . readValue ( res Json Str , Ġobject Ġ: ĠType Reference < Result Vo < Submit Answers Res Vo >>() Ġ{}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Page (): ĠPage Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠPage () ĊĠĠĠĠĠĠĠ Ġpage . pageSize Ġ= Ġ 9 9 9 9 9 ĊĠĠĠĠĠĠĠ Ġpage . pageNum Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn Ġpage ĊĠĠĠ Ġ} Ċ } ĊĊĊ