package Ġorg . know ledger . ledger . data . adapters Ċ Ċ import Ġkotlinx . serialization . K Serializer Ċ import Ġorg . know ledger . ledger . core . adapters . Abstract Storage Adapter Ċ import Ġorg . know ledger . ledger . crypto . hash . Hash ers Ċ import Ġorg . know ledger . ledger . data . Ledger Data Ċ import Ġorg . know ledger . ledger . data . Poll ution AQ Data Ċ import Ġorg . know ledger . ledger . data . Poll ution Type Ċ import Ġorg . know ledger . ledger . database . New Instance Session Ċ import Ġorg . know ledger . ledger . database . Storage Element Ċ import Ġorg . know ledger . ledger . database . Storage Type Ċ import Ġorg . know ledger . ledger . database . results . Data Failure Ċ import Ġorg . know ledger . ledger . results . Outcome Ċ Ċ class ĠPoll ution AQ Data Storage Adapter ( hash er : ĠHash ers ) Ġ: ĠAbstract Storage Adapter < Poll ution AQ Data >( ĊĠĠĠ ĠPoll ution AQ Data :: class . java , ĊĠĠĠ Ġhash er Ċ ) Ġ{ ĊĠĠĠ Ġoverride Ġval Ġserializer : ĠK Serializer < Poll ution AQ Data > ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠPoll ution AQ Data . serializer () ĊĊĠĠĠ Ġoverride Ġval Ġproperties : ĠMap < String , ĠStorage Type > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" last Updated " Ġto ĠStorage Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" unit " Ġto ĠStorage Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" parameter " Ġto ĠStorage Type . INTEGER , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" value " Ġto ĠStorage Type . DOUBLE , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" source Name " Ġto ĠStorage Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" city " Ġto ĠStorage Type . STRING , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" city Seq Num " Ġto ĠStorage Type . INTEGER ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġstore ( ĊĠĠĠĠĠĠĠ Ġto Store : ĠLed ger Data , Ġsession : ĠNew Instance Session ĊĠĠĠ Ġ): ĠStorage Element Ġ= ĊĠĠĠĠĠĠĠ Ġ( to Store Ġas ĠPoll ution AQ Data ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsession ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. newInstance ( id ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Storage Property (" last Updated ", Ġit . last Updated ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Storage Property (" unit ", Ġit . unit ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Byte Ġencode Ġthe Ġenum . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Storage Property ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" parameter ", Ġwhen Ġ( it . parameter ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . PM 2 5 Ġ-> ĠPoll ution Type . PM 2 5 . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . PM 1 0 Ġ-> ĠPoll ution Type . PM 1 0 . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . SO 2 Ġ-> ĠPoll ution Type . SO 2 . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . NO 2 Ġ-> ĠPoll ution Type . NO 2 . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . O 3 Ġ-> ĠPoll ution Type . O 3 . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . CO Ġ-> ĠPoll ution Type . CO . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . BC Ġ-> ĠPoll ution Type . BC . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . NA Ġ-> ĠPoll ution Type . NA . ordinal ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> ĠInt . MAX _ VALUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ). set Storage Property (" value ", Ġit . value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Storage Property (" source Name ", Ġit . source Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Storage Property (" city ", Ġit . city ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Storage Property (" city Seq Num ", Ġit . city Seq Num ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġload ( ĊĠĠĠĠĠĠĠ Ġelement : ĠStorage Element ĊĠĠĠ Ġ): ĠOut come < Poll ution AQ Data , ĠData Failure > Ġ= ĊĠĠĠĠĠĠĠ Ġcommon Load ( element , Ġid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprop Ġ= Ġget Storage Property < Int >(" parameter ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparam Ġ= Ġwhen Ġ( prop ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . PM 2 5 . ordinal Ġ-> ĠPoll ution Type . PM 2 5 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . PM 1 0 . ordinal Ġ-> ĠPoll ution Type . PM 1 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . SO 2 . ordinal Ġ-> ĠPoll ution Type . SO 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . NO 2 . ordinal Ġ-> ĠPoll ution Type . NO 2 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . O 3 . ordinal Ġ-> ĠPoll ution Type . O 3 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . CO . ordinal Ġ-> ĠPoll ution Type . CO ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . BC . ordinal Ġ-> ĠPoll ution Type . BC ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution Type . NA . ordinal Ġ-> ĠPoll ution Type . NA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( param Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOut come . Error < Data Failure >( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Failure . Unrecognized Unit ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Parameter Ġis Ġnot Ġone Ġof Ġthe Ġexpected Ġtypes : Ġ$ prop " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOut come . Ok ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPoll ution AQ Data ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Storage Property (" last Updated "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Storage Property (" unit "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Storage Property (" value "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Storage Property (" source Name "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Storage Property (" city "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget Storage Property (" city Seq Num ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ċ Ċ }