package Ġpro . b atal in . coin keeper . importer . client . model Ċ Ċ import Ġcom . fasterxml . jackson . core . Json Generator Ċ import Ġcom . fasterxml . jackson . core . Json Parser Ċ import Ġcom . fasterxml . jackson . databind . Deserialization Context Ċ import Ġcom . fasterxml . jackson . databind . Serializer Provider Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Deserialize Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Serialize Ċ import Ġcom . fasterxml . jackson . databind . de ser . std . Std Deserializer Ċ import Ġcom . fasterxml . jackson . databind . ser . std . Std Serializer Ċ import Ġjava . time . Instant Ċ Ċ @ Json Deserialize ( using Ġ= ĠJ ST icks Json Deserializer :: class ) Ċ @ Json Serialize ( using Ġ= ĠJ ST icks Json Serializer :: class ) Ċ data Ġclass ĠJ ST icks ( ĊĠĠĠ Ġval Ġticks : ĠLong Ċ ) Ċ Ċ class ĠJ ST icks Json Deserializer Ġ: ĠStd Deserializer < J ST icks >( J ST icks :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( jp : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠJ ST icks Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġticks Ġ= Ġjp . codec . readValue ( jp , ĠLong :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn ĠJ ST icks ( ticks ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠJ ST icks Json Serializer Ġ: ĠStd Serializer < J ST icks >( J ST icks :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠJ ST icks , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgen . write Number ( value . ticks ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠJ ST icks . to Instant (): ĠInstant Ġ= ĊĠĠĠ ĠInstant . of Epoch Milli (( ticks Ġ- Ġ 6 2 1 3 5 5 9 6 8 0 0 0 0 0 0 0 0 0 ) Ġ/ Ġ 1 0 0 0 0 ) Ċ Ċ fun ĠInstant . to J ST icks (): ĠJ ST icks Ġ= ĊĠĠĠ ĠJ ST icks (( to Epoch Milli () Ġ* Ġ 1 0 0 0 0 ) Ġ+ Ġ 6 2 1 3 5 5 9 6 8 0 0 0 0 0 0 0 0 0 ) Ċ Ċ @ Json Deserialize ( using Ġ= ĠEntityType Json Deserializer :: class ) Ċ @ Json Serialize ( using Ġ= ĠEntityType Json Serializer :: class ) Ċ enum Ġclass ĠEntityType ( ĊĠĠĠ Ġval Ġentity Name : ĠString , ĊĠĠĠ Ġval Ġentity Id : ĠInt Ċ ) Ġ{ ĊĠĠĠ ĠUSER (" User ", Ġ 0 ), ĊĠĠĠ ĠTRAN SACTION (" Transaction ", Ġ 1 ), ĊĠĠĠ ĠC ATEG ORY (" Category ", Ġ 2 ), ĊĠĠĠ ĠTAG (" Tag ", Ġ 3 ), ĊĠĠĠ ĠCUR RE NCY (" Currency ", Ġ 4 ), ĊĠĠĠ ĠB UD GET _ DATA (" B ud getData ", Ġ 5 ), ĊĠĠĠ ĠICON (" Icon ", Ġ 6 ), Ċ } Ċ Ċ class ĠEntityType Json Deserializer Ġ: ĠStd Deserializer < EntityType >( EntityType :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( jp : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠEntityType Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġjp . codec . readValue ( jp , ĠInt :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn ĠEntityType . values (). first Ġ{ Ġit . entityId Ġ== Ġid Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠEntityType Json Serializer Ġ: ĠStd Serializer < EntityType >( EntityType :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠEntityType , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgen . write Number ( value . entityId ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Deserialize ( using Ġ= ĠCategory Type Json Deserializer :: class ) Ċ @ Json Serialize ( using Ġ= ĠCategory Type Json Serializer :: class ) Ċ enum Ġclass ĠCategory Type ( ĊĠĠĠ Ġval Ġid : ĠInt Ċ ) Ġ{ ĊĠĠĠ ĠIN CO ME ( 1 ), ĊĠĠĠ ĠAC COUNT ( 2 ), ĊĠĠĠ ĠEXP ENSE ( 3 ) Ċ } Ċ Ċ class ĠCategory Type Json Deserializer Ġ: ĠStd Deserializer < Category Type >( Category Type :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( jp : ĠJson Parser , Ġctxt : ĠDeserial ization Context ): ĠCategory Type Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġjp . codec . readValue ( jp , ĠInt :: class . java ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCategory Type . values (). first Ġ{ Ġit . id Ġ== Ġid Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠCategory Type Json Serializer Ġ: ĠStd Serializer < Category Type >( Category Type :: class . java ) Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠCategory Type , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġgen . write Number ( value . id ) ĊĠĠĠ Ġ} Ċ } Ċ