package Ġcom . app . y am amz . y am am zip scanner . datasource Ċ Ċ import Ġcom . app . y am amz . y am am zip scanner . model . Device Ċ import Ġcom . app . y am amz . y am am zip scanner . persistence . Device Dao Ċ import Ġcom . app . y am amz . y am am zip scanner . persistence . Vendor Dao Ċ import Ġjavax . inject . Inject Ċ Ċ interface ĠNetwork Scanner Local DataSource Ġ{ ĊĠĠĠĠ Ġfun Ġget Vendor ( mac : String ): String ? ĊĠĠĠ Ġsuspend Ġfun Ġget Cache Device (): ĠList < Device > ĊĠĠĠ Ġsuspend Ġfun Ġinsert Device List ( devices : ĠList < Device >) Ċ Ċ } Ċ Ċ class ĠNetwork Scanner Local DataSource Impl Ġ@ Inject Ġconstructor ( private Ġval Ġdevice Dao : ĠDevice Dao , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġvendor Dao : ĠVendor Dao Ċ ) Ġ: Network Scanner Local DataSource Ġ{ ĊĠĠĠ Ġoverride Ġ Ġfun Ġget Vendor ( mac : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġvendor Dao . get Vendor ( mac . substring ( 0 , Ġ 8 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. uppercase ()) ?. vendor ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġ Ġsuspend Ġfun Ġget Cache Device (): ĠList < Device >{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdevice Dao . getDevice List () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġempty List () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġsuspend Ġfun Ġinsert Device List ( devices : ĠList < Device >) Ġ{ ĊĠĠĠĠĠĠĠ Ġdevice Dao . insert Device List ( devices ) ĊĠĠĠ Ġ} Ċ }