/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 Ġ- Ġpresent ĠIn structure , ĠInc . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* ĠĠĠĠ Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* ĠĠĠĠ Ġthe ĠFree ĠSoftware ĠFoundation , Ġversion Ġ 3 Ġof Ġthe ĠLicense . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* ĠĠĠĠ Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠĠĠĠ ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠĠĠĠ ĠGNU ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠĠĠĠ ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠGeneral ĠPublic ĠLicense Ċ Ġ* ĠĠĠĠ Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ* Ċ Ġ*/ Ċ package Ġcom . in structure . student . mob ius . assignment Details . submission Details . drawer . rub ric Ċ Ċ import Ġandroid . content . Context Ċ import Ġcom . in structure . canvas api 2 . models . Rub ric Criterion Ċ import Ġcom . in structure . canvas api 2 . models . Rub ric Criterion Assessment Ċ import Ġcom . in structure . canvas api 2 . models . Rub ric Criterion Rating Ċ import Ġcom . in structure . canvas api 2 . utils . Number Helper Ċ import Ġcom . in structure . canvas api 2 . utils . isValid Ċ import Ġcom . in structure . canvas api 2 . utils . valid OrNull Ċ import Ġcom . in structure . p anda utils . utils . Color Keeper Ċ import Ġcom . in structure . student . R Ċ import Ġcom . in structure . student . mob ius . assignment Details . ui . grade Cell . Grade Cell ViewState Ċ import Ġcom . in structure . student . mob ius . common . ui . Presenter Ċ import Ġjava . util . HashMap Ċ Ċ object ĠSubmission Rub ric Presenter Ġ: ĠPres enter < Submission Rub ric Model , ĠSubmission Rub ric ViewState > Ġ{ ĊĊĠĠĠ Ġconst Ġval Ġcustom Rating Id Ġ= Ġ"_ custom _ rating _ id _" ĊĊĠĠĠ Ġoverride Ġfun Ġpresent ( model : ĠSubmission Rub ric Model , Ġcontext : ĠContext ): ĠSubmission Rub ric ViewState Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġrub ric Ġ= Ġmodel . assignment . rub ric Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠ Ġval Ġassess ments Ġ= Ġmodel . submission . rub ric Assessment ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġempty Ġstate Ġif Ġthe Ġassignment Ġdoes Ġnot Ġuse Ġa Ġrub ric ĊĠĠĠĠĠĠĠ Ġif Ġ( rub ric . isEmpty ()) Ġreturn ĠSubmission Rub ric ViewState ( listOf ( Rub ric List Data . Empty )) ĊĊĠĠĠĠĠĠĠ Ġval Ġitems Ġ= Ġmutable ListOf < Rub ric List Data >() ĊĊĠĠĠĠĠĠĠ Ġ// ĠShow Ġthe Ġgrade Ġcell Ġonly Ġif Ġthe Ġsubmission Ġis Ġg ra ded Ġand Ġthe Ġrub ric Ġis Ġused Ġfor Ġgrad ing ĊĠĠĠĠĠĠĠ Ġif Ġ( model . submission . is G ra ded Ġ&& Ġmodel . assignment . is Use Rub ric For Grad ing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgrade State Ġ= ĠGr ade Cell ViewState . from Submission ( context , Ġmodel . assignment , Ġmodel . submission ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġitems Ġ+= ĠRub ric List Data . Grade ( grade State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠMap Ġthe Ġrub ric Ġcriteria Ġto Ġview Ġstate Ġdata ĊĠĠĠĠĠĠĠ Ġitems Ġ+= Ġrub ric . map Ġ{ Ġcriterion Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Criterion ( as sess ments , Ġcriterion , Ġcontext , Ġmodel ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠSubmission Rub ric ViewState ( items ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġmap Criterion ( ĊĠĠĠĠĠĠĠ Ġassess ments : ĠHashMap < String , ĠRub ric Criterion Assessment >, ĊĠĠĠĠĠĠĠ Ġcriterion : ĠRub ric Criterion , ĊĠĠĠĠĠĠĠ Ġcontext : ĠContext , ĊĠĠĠĠĠĠĠ Ġmodel : ĠSubmission Rub ric Model ĊĠĠĠ Ġ): ĠRub ric List Data . Criterion Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġassessment Ġ= Ġassess ments [ criterion . id ] ĊĠĠĠĠĠĠĠ Ġvar Ġratings Ġ= Ġcriterion . ratings . toList () ĊĊĠĠĠĠĠĠĠ Ġ/* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthis Ġis Ġa Ġcustom Ġassessment Ġ( i . e . Ġthere Ġis Ġno Ġassociated Ġrating ĠID ) Ġor Ġif Ġit Ġuses Ġranges , Ġwe Ġassign Ġit Ġa ĊĠĠĠĠĠĠĠĠ Ġ* Ġcustom Ġrating ĠID Ġand Ġadd Ġa Ġmatching Ġrating Ġto Ġthe Ġratings Ġlist . ĠWe Ġthen Ġsort Ġthat Ġlist Ġby Ġpoint Ġvalue ĊĠĠĠĠĠĠĠĠ Ġ* Ġto Ġensure Ġthe Ġnew Ġrating Ġappears Ġin Ġthe Ġcorrect Ġposition . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġif Ġ( assessment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( assessment . rating Id Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassessment Ġ= Ġassessment . copy ( rating Id Ġ= Ġcustom Rating Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġratings Ġ= Ġratings . plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRub ric Criterion Rating ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcustom Rating Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġcontext . getString ( R . string . rub ric Custom Score ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Ġ= Ġassessment . points Ġ?: Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( criterion . criterion Use Range ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġas ses sed Rating Ġ= Ġratings . first Ġ{ Ġit . id Ġ== Ġassessment !!. rating Id Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( assessment . points Ġ!= Ġas ses sed Rating . points ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassessment Ġ= Ġassessment . copy ( rating Id Ġ= Ġcustom Rating Id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġratings Ġ= Ġratings . plus ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRub ric Criterion Rating ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġcustom Rating Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescription Ġ= Ġas ses sed Rating . description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlong Description Ġ= Ġas ses sed Rating . long Description , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpoints Ġ= Ġassessment . points Ġ?: Ġas ses sed Rating . points ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġratings Ġ= Ġratings . sorted By Ġ{ Ġit . points Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠFind Ġthe Ġcriterion Ġrating Ġthat Ġmatches Ġthe Ġassessment Ġrating Ġ( if Ġthere Ġare Ġvalid Ġpoints ) ĊĠĠĠĠĠĠĠ Ġval Ġas ses sed Rating Ġ= Ġif Ġ( assessment ?. points Ġ== Ġnull ) Ġnull Ġelse Ġratings . find Ġ{ Ġit . id Ġ== Ġassessment ?. rating Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Rating Id Ġ= Ġmodel . selected Rating Map [ criterion . id ] Ġ?: Ġas ses sed Rating ?. id ĊĊĠĠĠĠĠĠĠ Ġ// ĠFree - form Ġassess ments Ġshould Ġonly Ġshow Ġthe Ġassessment Ġcomments Ġand Ġthe Ġmatching Ġassessment Ġrating ĊĠĠĠĠĠĠĠ Ġif Ġ( model . assignment . free Form Criterion Comments ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġratings Ġ= Ġratings ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . id Ġ== Ġassessment ?. rating Id Ġ&& Ġmodel . assignment . rub ric Settings ?. hide Points Ġ!= Ġtrue } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . copy ( description Ġ= Ġnull ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠIf Ġpoints Ġare Ġhidden , Ġshow Ġthe Ġrating Ġtitle Ġinstead Ġof Ġpoints ĊĠĠĠĠĠĠĠ Ġval Ġhide Points Ġ= Ġmodel . assignment . rub ric Settings ?. hide Points Ġ== Ġtrue ĊĊĠĠĠĠĠĠĠ Ġ// ĠMap Ġcriterion Ġratings Ġto Ġview Ġstate Ġdata ĊĠĠĠĠĠĠĠ Ġvar Ġrating Data Ġ= Ġratings . map Ġ{ Ġrating Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠRating Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġrating . id . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġif Ġ( hide Points ) Ġrating . description . or Empty () Ġelse ĠNumber Helper . format Decimal ( rating . points , Ġ 2 , Ġtrue ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Selected Ġ= Ġrating . id Ġ== Ġselected Rating Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis As ses sed Ġ= Ġrating . id Ġ== Ġas ses sed Rating ?. id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġuse Small Text Ġ= Ġhide Points ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġrating Ġfor Ġfree - form Ġassess ments Ġshould Ġinclude Ġthe Ġtotal Ġpoints ĊĠĠĠĠĠĠĠ Ġval Ġis Free Form Ġ= Ġmodel . assignment . free Form Criterion Comments ĊĠĠĠĠĠĠĠ Ġif Ġ( is Free Form ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Data Ġ= Ġrating Data . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . copy ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontext . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . range d Rub ric Total , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNumber Helper . format Decimal ( criterion . points , Ġ 2 , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġselected Rating Ġ= Ġratings . find Ġ{ Ġit . id Ġ== Ġselected Rating Id Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠRub ric List Data . Criterion ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġcriterion . description . or Empty (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcriterion Id Ġ= Ġcriterion . id !! , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Description Button Ġ= Ġcriterion . long Description . isValid (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġratings Ġ= Ġrating Data , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcomment Ġ= Ġassessment ?. comments . valid OrNull (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Title Ġ= Ġif Ġ( is Free Form ) Ġnull Ġelse Ġselected Rating ?. description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrating Description Ġ= Ġif Ġ( is Free Form ) Ġnull Ġelse Ġselected Rating ?. long Description , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor Keeper . color From Course Id ( model . assignment . course Id ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ