/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 - present ĠRobert ĠJar os Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ package Ġpl . tre k soft . k vision . types Ċ Ċ 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 . Json Deserializer Ċ import Ġcom . fasterxml . jackson . databind . Json Serializer Ċ import Ġcom . fasterxml . jackson . databind . Serializer Provider Ċ import Ġjava . io . IOException Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Offset Time Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . DateTime ParseException Ċ Ċ actual Ġtype alias ĠLocalDateTime Ġ= ĠLocalDateTime Ċ Ċ actual Ġtype alias ĠLocalDate Ġ= ĠLocalDate Ċ Ċ actual Ġtype alias ĠLocal Time Ġ= ĠLocal Time Ċ Ċ actual Ġtype alias ĠOffset DateTime Ġ= ĠOffset DateTime Ċ Ċ actual Ġtype alias ĠOffset Time Ġ= ĠOffset Time Ċ Ċ fun ĠString . to DateTime F (): ĠLocalDateTime Ġ= ĠLocalDateTime . parse ( this ) Ċ Ċ fun ĠString . toDate F (): ĠLocalDate Ġ= ĠLocalDate . parse ( this ) Ċ Ċ fun ĠString . to Time F (): ĠLocal Time Ġ= ĠLocal Time . parse ( this ) Ċ Ċ fun ĠString . to Offset DateTime F (): ĠOffset DateTime Ġ= ĠOffset DateTime . parse ( this ) Ċ Ċ fun ĠString . to Offset Time F (): ĠOffset Time Ġ= ĠOffset Time . parse ( this ) Ċ Ċ fun ĠLocalDateTime . toString F (): ĠString Ġ= Ġthis . format ( DateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) Ċ Ċ fun ĠLocalDate . toString F (): ĠString Ġ= Ġthis . format ( DateTime Formatter . ISO _ LOCAL _ DATE ) Ċ Ċ fun ĠLocal Time . toString F (): ĠString Ġ= Ġthis . format ( DateTime Formatter . ISO _ LOCAL _ TIME ) Ċ Ċ fun ĠOffset DateTime . toString F (): ĠString Ġ= Ġthis . format ( DateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) Ċ Ċ fun ĠOffset Time . toString F (): ĠString Ġ= Ġthis . format ( DateTime Formatter . ISO _ OFFSET _ TIME ) Ċ Ċ class ĠLocalDateTime Serializer Ġ: ĠJsonSerializer < LocalDateTime >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠLocalDateTime , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġvalue . format ( DateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ( s ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocalDateTime Deserializer Ġ: ĠJson Deserializer < LocalDateTime >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctx : ĠDeserial ization Context ): ĠLocalDateTime ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġp . text ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLocalDateTime . parse ( str . drop Last ( 6 ), ĠDateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocalDate Serializer Ġ: ĠJsonSerializer < LocalDate >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠLocalDate , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġvalue . at Start OfDay (). format ( DateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ( s ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocalDate Deserializer Ġ: ĠJson Deserializer < LocalDate >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctx : ĠDeserial ization Context ): ĠLocalDate ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġp . text ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLocalDate . parse ( str . drop Last ( 6 ), ĠDateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocal Time Serializer Ġ: ĠJsonSerializer < Local Time >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠLocal Time , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġvalue . at Date ( LocalDate . now ()). format ( DateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ( s ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠLocal Time Deserializer Ġ: ĠJson Deserializer < Local Time >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctx : ĠDeserial ization Context ): ĠLocal Time ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġp . text ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Magic Number ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠLocal Time . parse ( str . drop Last ( 6 ), ĠDateTime Formatter . ISO _ LOCAL _ DATE _ TIME ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠOffset DateTime Serializer Ġ: ĠJsonSerializer < Offset DateTime >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠOffset DateTime , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġvalue . format ( DateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ( s ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠOffset DateTime Deserializer Ġ: ĠJson Deserializer < Offset DateTime >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctx : ĠDeserial ization Context ): ĠOffset DateTime ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġp . text ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset DateTime . parse ( str , ĠDateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠOffset Time Serializer Ġ: ĠJsonSerializer < Offset Time >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġserialize ( value : ĠOffset Time , Ġgen : ĠJson Generator , Ġprovider : ĠSerializer Provider ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġs Ġ= Ġvalue . at Date ( LocalDate . now ()). format ( DateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ( s ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgen . writeString ("") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠOffset Time Deserializer Ġ: ĠJson Deserializer < Offset Time >() Ġ{ ĊĠĠĠ Ġ@ Throws ( IOException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( p : ĠJson Parser , Ġctx : ĠDeserial ization Context ): ĠOffset Time ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġstr Ġ= Ġp . text ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset Time . parse ( str , ĠDateTime Formatter . ISO _ OFFSET _ DATE _ TIME ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠDateTime ParseException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSystem . err . println ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ