package Ġap pt ent ive . com . android . feedback . survey . view model Ċ Ċ import Ġap pt ent ive . com . android . feedback . survey . model . Multi Choice Question Ċ import Ġap pt ent ive . com . android . feedback . survey . model . Range Question Ċ import Ġap pt ent ive . com . android . feedback . survey . model . Single Line Question Ċ import Ġap pt ent ive . com . android . feedback . survey . model . Survey Question Ċ Ċ internal Ġinterface ĠSurvey Question ListItem Factory Ġ{ ĊĠĠĠ Ġfun Ġcreate ListItem ( question : ĠSurvey Question <* >, Ġshow Invalid : ĠBoolean ): ĠSurvey Question ListItem Ċ } Ċ Ċ // Ġthe Ġonly Ġreason Ġthis Ġclass Ġexists Ġ- Ġsome Ġquestions Ġmight Ġneed Ġreading Ġstrings Ġfrom Ġresources Ċ // Ġso Ġwe Ġwould Ġneed Ġto Ġpass Ġcontext Ġobject Ċ internal Ġclass ĠDefault Survey Question ListItem Factory Ġ: ĊĠĠĠ ĠSurvey Question ListItem Factory Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate ListItem ( ĊĠĠĠĠĠĠĠ Ġquestion : ĠSurvey Question <* >, ĊĠĠĠĠĠĠĠ Ġshow Invalid : ĠBoolean ĊĠĠĠ Ġ): ĠSurvey Question ListItem Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinstructions Ġ= Ġcreate Instruction Text ( question ) ĊĠĠĠĠĠĠĠ Ġval Ġvalidation Error Ġ= Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRequired Ġ& Ġinvalid Ġ& Ġinvalid Ġanswer ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Invalid Ġ&& Ġquestion . isRequired Ġ&& Ġ! question . has Valid Answer Ġ-> Ġquestion . validation Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOptional Ġ& Ġanswered Ġ& Ġinvalid ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Invalid Ġ&& Ġ! question . can Submit Optional Question Ġ-> Ġquestion . validation Error ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( question ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠSingle Line Question Ġ-> Ġcreate Single Line Question ListItem ( question , Ġinstructions , Ġvalidation Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠRange Question Ġ-> Ġcreate Range Question ListItem ( question , Ġinstructions , Ġvalidation Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠMulti Choice Question Ġ-> Ġcreate Multi Choice Question ListItem ( question , Ġinstructions , Ġvalidation Error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unsupported Ġtype : Ġ${ question . java Class }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Range Question ListItem ( ĊĠĠĠĠĠĠĠ Ġquestion : ĠRange Question , ĊĠĠĠĠĠĠĠ Ġinstructions : ĠString ?, ĊĠĠĠĠĠĠĠ Ġvalidation Error : ĠString ? ĊĠĠĠ Ġ) Ġ= ĠRange Question ListItem ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġquestion . id , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġquestion . title , ĊĠĠĠĠĠĠĠ Ġselected Index Ġ= Ġquestion . selected Value , ĊĠĠĠĠĠĠĠ Ġinstructions Ġ= Ġinstructions , ĊĠĠĠĠĠĠĠ Ġvalidation Error Ġ= Ġvalidation Error , ĊĠĠĠĠĠĠĠ Ġmin Ġ= Ġquestion . min , ĊĠĠĠĠĠĠĠ Ġmax Ġ= Ġquestion . max , ĊĠĠĠĠĠĠĠ Ġmin Label Ġ= Ġquestion . min Label , ĊĠĠĠĠĠĠĠ Ġmax Label Ġ= Ġquestion . max Label ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Single Line Question ListItem ( ĊĠĠĠĠĠĠĠ Ġquestion : ĠSingle Line Question , ĊĠĠĠĠĠĠĠ Ġinstructions : ĠString ?, ĊĠĠĠĠĠĠĠ Ġvalidation Error : ĠString ? ĊĠĠĠ Ġ) Ġ= ĠSingle Line Question ListItem ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġquestion . id , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġquestion . title , ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġquestion . answer String , ĊĠĠĠĠĠĠĠ Ġinstructions Ġ= Ġinstructions , ĊĠĠĠĠĠĠĠ Ġvalidation Error Ġ= Ġvalidation Error , ĊĠĠĠĠĠĠĠ Ġfree Form Hint Ġ= Ġquestion . free Form Hint , ĊĠĠĠĠĠĠĠ Ġmultiline Ġ= Ġquestion . mult iline ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Multi Choice Question ListItem ( ĊĠĠĠĠĠĠĠ Ġquestion : ĠMulti Choice Question , ĊĠĠĠĠĠĠĠ Ġinstructions : ĠString ?, ĊĠĠĠĠĠĠĠ Ġvalidation Error : ĠString ? ĊĠĠĠ Ġ) Ġ= ĠMulti Choice Question ListItem ( ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġquestion . id , ĊĠĠĠĠĠĠĠ Ġtitle Ġ= Ġquestion . title , ĊĠĠĠĠĠĠĠ Ġanswer Choices Ġ= Ġquestion . answer . choices . map Indexed Ġ{ Ġindex : ĠInt , Ġchoice : ĠMulti Choice Question . Answer . Choice Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġconfig Ġ= Ġquestion . answer Choice Configs [ index ] ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMulti Choice Question ListItem . Answer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġconfig . type Ġ?: ĠMulti Choice Question . Choice Type . select _ option , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġid Ġ= Ġconfig . id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtitle Ġ= Ġconfig . title , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhint Ġ= Ġconfig . hint , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Checked Ġ= Ġchoice . checked , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġchoice . value ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠ Ġallow Multiple Answers Ġ= Ġquestion . allow Multiple Answers , ĊĠĠĠĠĠĠĠ Ġinstructions Ġ= Ġinstructions , ĊĠĠĠĠĠĠĠ Ġvalidation Error Ġ= Ġvalidation Error ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġfun Ġcreate Instruction Text ( question : ĠSurvey Question < *> ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhas Required Text Ġ= Ġquestion . isRequired Ġ&& Ġ! question . required Text . isNull Or Blank () ĊĠĠĠĠĠĠĠ Ġval Ġhas Instruction Text Ġ= Ġ! question . instructions Text . isNull Or Blank () ĊĠĠĠĠĠĠĠ Ġif Ġ( has Required Text Ġ&& Ġhas Instruction Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"${ question . required Text }. Ġ${ question . instructions Text }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( has Required Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquestion . required Text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( has Instruction Text ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġquestion . instructions Text ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ } Ċ