// ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ // ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ċ package Ġsoftware . aws . tool k its . core . telemetry Ċ Ċ import Ġsoftware . aws . tool k its . core . telemetry . Metric Event . Companion . il legal Chars Regex Ċ import Ġsoftware . aws . tool k its . core . utils . getLogger Ċ import Ġsoftware . aws . tool k its . core . utils . warn Ċ import Ġjava . time . Instant Ċ import Ġsoftware . amazon . aw ssdk . services . toolkit telemetry . model . Unit Ġas ĠMetric Unit Ċ Ċ interface ĠMetric Event Ġ{ ĊĠĠĠ Ġ@ Deprecated (" namespace Ġshould Ġnot Ġbe Ġused ") ĊĠĠĠ Ġval Ġnamespace : ĠString ? ĊĠĠĠ Ġval ĠcreateTime : ĠInstant ĊĠĠĠ Ġval Ġaws Account : ĠString ĊĠĠĠ Ġval Ġaws Region : ĠString ĊĠĠĠ Ġval Ġdata : ĠIterable < Datum > ĊĊĠĠĠ Ġinterface ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Metric Event Ġshould Ġnot Ġhave Ġa Ġnamespace ") ĊĠĠĠĠĠĠĠ Ġfun Ġnamespace ( namespace : ĠString ): ĠBuilder ĊĊĠĠĠĠĠĠĠ Ġfun ĠcreateTime ( create Time : ĠInstant ): ĠBuilder ĊĊĠĠĠĠĠĠĠ Ġfun Ġaws Account ( aws Account : ĠString ): ĠBuilder ĊĊĠĠĠĠĠĠĠ Ġfun Ġaws Region ( aws Region : ĠString ): ĠBuilder ĊĊĠĠĠĠĠĠĠ Ġfun Ġdatum ( name : ĠString , Ġbuild Datum : ĠDatum . Builder . () Ġ-> ĠUnit Ġ= Ġ{} ): ĠBuilder ĊĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠMetric Event ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠDatum Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġval Ġvalue : ĠDouble ĊĠĠĠĠĠĠĠ Ġval Ġunit : ĠMetric Unit ĊĠĠĠĠĠĠĠ Ġval Ġmetadata : ĠMap < String , ĠString > ĊĊĠĠĠĠĠĠĠ Ġinterface ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġname ( name : ĠString ): ĠBuilder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġvalue ( value : ĠDouble ): ĠBuilder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġunit ( unit : ĠMetric Unit ): ĠBuilder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmetadata ( key : ĠString , Ġvalue : ĠString ): ĠBuilder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġmetadata ( key : ĠString , Ġvalue : ĠBoolean ): ĠBuilder Ġ= Ġmetadata ( key , Ġvalue . toString ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġcount ( value : ĠDouble Ġ= Ġ 1 . 0 ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġunit ( Metric Unit . COUNT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠDatum ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġillegal Chars Regex Ġ= Ġ"[ ^ \\ w + -. :] ". to Regex () ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠString . replace Illegal ( replacement : ĠString Ġ= Ġ"") Ġ= Ġthis . replace ( il legal Chars Regex , Ġreplacement ) Ċ Ċ class ĠDefault Metric Event Ġinternal Ġconstructor ( ĊĠĠĠ Ġoverride Ġval Ġnamespace : ĠString ?, ĊĠĠĠ Ġoverride Ġval ĠcreateTime : ĠInstant , ĊĠĠĠ Ġoverride Ġval Ġaws Account : ĠString , ĊĠĠĠ Ġoverride Ġval Ġaws Region : ĠString , ĊĠĠĠ Ġoverride Ġval Ġdata : ĠIterable < Metric Event . Datum > Ċ ) Ġ: ĠMetric Event Ġ{ ĊĊĠĠĠ Ġclass ĠBuilder Impl Ġ: ĠMetric Event . Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" namespace Ġshould Ġnot Ġbe Ġused ") ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġnamespace : ĠString ? ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Metric Event Ġshould Ġnot Ġhave Ġa Ġnamespace ") ĊĠĠĠĠĠĠĠ Ġconstructor ( namespace : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . namespace Ġ= Ġnamespace ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠcreateTime : ĠInstant Ġ= ĠInstant . now () ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġaws Account : ĠString Ġ= ĠMET ADATA _ NA ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġaws Region : ĠString Ġ= ĠMET ADATA _ NA ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġdata : ĠMutable Collection < Metric Event . Datum > Ġ= Ġmutable ListOf () ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġnamespace ( namespace : ĠString ): ĠMetric Event . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . namespace Ġ= Ġnamespace ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠcreateTime ( create Time : ĠInstant ): ĠMetric Event . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . create Time Ġ= ĠcreateTime ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaws Account ( aws Account : ĠString ): ĠMetric Event . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . aws Account Ġ= Ġaws Account ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġaws Region ( aws Region : ĠString ): ĠMetric Event . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . aws Region Ġ= Ġaws Region ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġdatum ( name : ĠString , Ġbuild Datum : ĠMetric Event . Datum . Builder . () Ġ-> ĠUnit ): ĠMetric Event . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuilder Ġ= ĠDefault Datum . builder ( name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbuild Datum ( builder ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdata . add ( builder . build ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠMetric Event Ġ= ĠDefault Metric Event ( namespace ?. replace Illegal (), ĠcreateTime , Ġaws Account , Ġaws Region , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġbuilder () Ġ= Ġbuilder ( null ) ĊĊĠĠĠĠĠĠĠ Ġ@ Deprecated (" Metric Event Ġshould Ġnot Ġhave Ġa Ġnamespace ") ĊĠĠĠĠĠĠĠ Ġfun Ġbuilder ( namespace : ĠString ?): ĠMetric Event . Builder Ġ= ĠBuilder Impl ( namespace ) ĊĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMET ADATA _ NA Ġ= Ġ" n / a " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMET ADATA _ NOT _ SET Ġ= Ġ" not - set " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠMET ADATA _ INVALID Ġ= Ġ" invalid " ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= Ġget Logger < Default Datum >() ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġclass ĠDefault Datum ( ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġvalue : ĠDouble , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġunit : ĠMetric Unit , ĊĠĠĠĠĠĠĠ Ġoverride Ġval Ġmetadata : ĠMap < String , ĠString > ĊĠĠĠ Ġ) Ġ: ĠMetric Event . Datum Ġ{ ĊĠĠĠĠĠĠĠ Ġclass ĠBuilder Impl ( private Ġvar Ġname : ĠString ) Ġ: ĠMetric Event . Datum . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġvalue : ĠDouble Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġvar Ġunit : ĠMetric Unit Ġ= ĠMetric Unit . NONE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmetadata : ĠMutable Map < String , ĠString > Ġ= ĠHashMap () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġname ( name : ĠString ): ĠMetric Event . Datum . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvalue ( value : ĠDouble ): ĠMetric Event . Datum . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġunit ( unit : ĠMetric Unit ): ĠMetric Event . Datum . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . unit Ġ= Ġunit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġmetadata ( key : ĠString , Ġvalue : ĠString ): ĠMetric Event . Datum . Builder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( metadata . containsKey ( key )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn Ġ{ Ġ" At tempted Ġto Ġadd Ġmultiple Ġpieces Ġof Ġmetadata Ġwith Ġthe Ġsame Ġkey " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( metadata . size Ġ> ĠMAX _ METADATA _ ENTR IES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . warn Ġ{ Ġ" Each Ġmetric Ġdatum Ġmay Ġcontain Ġa Ġmaximum Ġof Ġ$ MAX _ METADATA _ ENTR IES Ġmetadata Ġentries " Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmetadata [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠMetric Event . Datum Ġ= ĠDefault Datum ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname . replace Illegal (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . unit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . metadata ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= Ġget Logger < Default Datum >() ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġbuilder ( name : ĠString ): ĠMetric Event . Datum . Builder Ġ= ĠBuilder Impl ( name ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠMAX _ METADATA _ ENTR IES : ĠInt Ġ= Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ