/* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 1 6 Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* Ġ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* Ġ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . ac ra . collector Ċ Ċ import Ġandroid . content . Context Ċ import Ġorg . ac ra . Report Field Ċ import Ġorg . ac ra . builder . Report Builder Ċ import Ġorg . ac ra . config . Core Configuration Ċ import Ġorg . ac ra . data . Crash Report Data Ċ Ċ /** Ċ Ġ* ĠBase Ġimplementation Ġof Ġa Ġcollector . Ċ Ġ* ĠMaint ains Ġinformation Ġon Ġwhich Ġfields Ġcan Ġbe Ġcollected Ġby Ġthis Ġcollector . Ċ Ġ* ĠValid ates Ġconstraints Ġin Ġwhich Ġa Ġfield Ġshould Ġ( not ) Ġbe Ġcollected . Ċ Ġ* Ċ Ġ* Ġ@ author ĠF 4 3 nd 1 r Ċ Ġ* Ġ@ since Ġ 4 . 9 . 1 Ċ Ġ*/ Ċ abstract Ġclass ĠBase Report Field Collector ( private Ġvar arg Ġval Ġreport Fields : ĠReport Field ) Ġ: ĠCollector Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġthis Ġshould Ġcheck Ġif Ġthe Ġconfig Ġcontains Ġthe Ġfield , Ġbut Ġmay Ġadd Ġadditional Ġchecks Ġlike Ġpermissions Ġetc . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext ĠĠĠĠĠĠ Ġa Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġconfig ĠĠĠĠĠĠĠ Ġcurrent Ġconfiguration ĊĠĠĠĠ Ġ* Ġ@ param Ġcollect ĠĠĠĠĠĠ Ġthe Ġfield Ġto Ġcollect ĊĠĠĠĠ Ġ* Ġ@ param Ġreport Builder Ġthe Ġcurrent Ġreport Builder ĊĠĠĠĠ Ġ* Ġ@ return Ġif Ġthis Ġfield Ġshould Ġbe Ġcollected Ġnow ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġshould Collect ( context : ĠContext , Ġconfig : ĠCore Configuration , Ġcollect : ĠReport Field , Ġreport Builder : ĠReport Builder ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġconfig . report Content . contains ( collect ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalls Ġ[. should Collect ] Ġfor Ġeach ĠReport Field ĊĠĠĠĠ Ġ* Ġand Ġthen Ġ[. collect ] Ġif Ġit Ġreturned Ġtrue ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Collector Exception :: class ) ĊĠĠĠ Ġoverride Ġfun Ġcollect ( context : ĠContext , Ġconfig : ĠCore Configuration , Ġreport Builder : ĠReport Builder , Ġcrash Report Data : ĠCrash Report Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( field Ġin Ġreport Fields ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( should Collect ( context , Ġconfig , Ġfield , Ġreport Builder )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcollect ( field , Ġcontext , Ġconfig , Ġreport Builder , Ġcrash Report Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( t : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcrash Report Data . put ( field , Ġnull Ġas ĠString ?) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠCollector Exception (" Error Ġwhile Ġretrieving Ġ" Ġ+ Ġfield . name Ġ+ Ġ" Ġdata :" Ġ+ Ġt . message , Ġt ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCollect Ġa ĠReport Field ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġreport Field Ġthe Ġreport Field Ġto Ġcollect ĊĠĠĠĠ Ġ* Ġ@ param Ġcontext Ġa Ġcontext ĊĠĠĠĠ Ġ* Ġ@ param Ġconfig Ġcurrent ĠConfiguration ĊĠĠĠĠ Ġ* Ġ@ param Ġreport Builder Ġcurrent ĠReport Builder ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Ġput Ġresults Ġhere ĊĠĠĠĠ Ġ* Ġ@ throws ĠException Ġif Ġcollection Ġfailed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Throws ( Exception :: class ) ĊĠĠĠ Ġabstract Ġfun Ġcollect ( report Field : ĠReport Field , Ġcontext : ĠContext , Ġconfig : ĠCore Configuration , Ġreport Builder : ĠReport Builder , Ġtarget : ĠCrash Report Data ) Ċ }