/* ĠCopyright Ġ 2 0 2 1 ĠBetter ĠLtd Ġ( www . better . care ) Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcare . better . platform . web . template . converter . utils Ċ Ċ import Ġcare . better . platform . template . Am Node Ċ import Ġcare . better . platform . template . Am Utils Ċ import Ġcare . better . platform . web . template . builder . model . input . range . Web Template Decimal Range Ċ import Ġcare . better . platform . web . template . builder . utils . Code Phrase Utils Ċ import Ġorg . joda . time . DateTime Ċ import Ġorg . joda . time . LocalDate Ċ import Ġorg . joda . time . Local Time Ċ import Ġorg . open e hr . base . foundation types . Interval Of Real Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Offset Time Ċ import Ġjava . time . Zone Id Ċ import Ġjava . time . Zone Offset Ċ import Ġjava . util . regex . Pattern Ċ Ċ /** Ċ Ġ* Ġ@ author ĠPri moz ĠDe lop st Ċ Ġ* Ġ@ since Ġ 3 . 1 . 0 Ċ Ġ* Ċ Ġ* ĠSet Ġof Ġutility Ġfunctions Ġused Ġduring Ġthe ĠRM Ġobject Ġconversion . Ċ Ġ*/ Ċ object ĠWeb Template Conversion Utils Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠID _ INVALID _ CHAR ACT ERS Ġ= ĠPattern . compile ("[ ^ \\ p { Is Alphabet ic } 0 - 9 _. - ]") ĊĠĠĠ Ġprivate Ġval ĠMULTI PLE _ UNDER SCORE Ġ= ĠPattern . compile (" _{ 2 , }") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreates Ġthe Ġweb Ġtemplate Ġpath Ġsegment Ġ( without Ġindex Ġand Ġattribute ) Ġfrom Ġfrom Ġname . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠName ĊĠĠĠĠ Ġ* Ġ@ return ĠWeb Ġtemplate Ġpath Ġsegment Ġkey Ġ( without Ġindex Ġand Ġattribute ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġget Web Template Path Segment For Name ( name : ĠString ): ĠString Ġ= ĊĠĠĠĠĠĠĠ ĠID _ INVALID _ CHAR ACT ERS . matcher ( name ). replaceAll ("_ "). lowercase () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. let Ġ{ ĠMULTI PLE _ UNDER SCORE . matcher ( it ). replaceAll ("_ ") Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. remove Prefix ("_ "). remove Suffix ("_ ") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġ[ Local Time ] Ġto Ġ[ java . time . Local Time ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlocal Time Ġ[ Local Time ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ java . time . Local Time ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġconvert ( local Time : ĠLocal Time ): Ġjava . time . Local Time Ġ= ĊĠĠĠĠĠĠĠ Ġjava . time . Local Time . of ( local Time . hour OfDay , Ġlocal Time . minute Of Hour , Ġlocal Time . second Of Minute , Ġlocal Time . millis Of Second Ġ* Ġ 1 0 0 0 0 0 0 ) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġ[ DateTime ] Ġto Ġ[ java . time . Local Time ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠdateTime Ġ[ DateTime ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ java . time . Local Time ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġconvert Time ( dateTime : ĠDateTime ): Ġjava . time . Local Time Ġ= ĊĠĠĠĠĠĠĠ Ġjava . time . Local Time . of ( dateTime . hour OfDay , ĠdateTime . minute Of Hour , ĠdateTime . second Of Minute , ĠdateTime . millis Of Second Ġ* Ġ 1 0 0 0 0 0 0 ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġ[ DateTime ] Ġto Ġ[ java . time . Offset Time ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠdateTime Ġ[ DateTime ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ java . time . Offset Time ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġconvert Offset Time ( dateTime : ĠDateTime ): ĠOffset Time Ġ= ĊĠĠĠĠĠĠĠ ĠOffset Time . of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . hour OfDay , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . minute Of Hour , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . second Of Minute , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠdateTime . millis Of Second Ġ* Ġ 1 0 0 0 0 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠZone Offset . of Total Seconds ( dateTime . zone . to TimeZone (). raw Offset Ġ/ Ġ 1 0 0 0 )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġ[ LocalDate ] Ġto Ġ[ java . time . LocalDate ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġlocal Date Ġ[ LocalDate ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ java . time . LocalDate ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġconvert ( local Date : ĠLocalDate ): Ġjava . time . LocalDate Ġ= ĊĠĠĠĠĠĠĠ Ġjava . time . LocalDate . of ( local Date . year , Ġlocal Date . month OfYear , Ġlocal Date . day OfMonth ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠConverts Ġ[ DateTime ] Ġto Ġ[ java . time . Offset DateTime ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠdateTime Ġ[ DateTime ] ĊĠĠĠĠ Ġ* Ġ@ return Ġ[ java . time . Offset DateTime ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġconvert ( dateTime : ĠDateTime ): ĠOffset DateTime Ġ= ĠOffset DateTime . of Instant ( dateTime . toDate (). to Instant (), ĠZone Id . of ( dateTime . zone . id )) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Term Text ( am Node : ĠAm Node , Ġtermin ology Id : ĠString ?, Ġcode String : ĠString ?, Ġlanguage : ĠString ?): ĠString ? Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ(" open e hr " Ġ== Ġtermin ology Id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCode Phrase Utils . get Open E hr Termin ology Text ( code String !! , Ġlanguage ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġterm Ġ= Ġif Ġ( am Node . term Definitions . containsKey ( language )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAm Utils . find Term ( am Node . term Definitions [ language ] Ġ?: Ġempty List (), Ġcode String , Ġ" text ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġterm Ġ?: ĠAm Utils . find Term ( am Node . terms , Ġcode String , Ġ" text ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġinternal Ġfun Ġget Fixed Value ( interval : ĠInterval Of Real ?): ĠFloat ? Ġ= ĊĠĠĠĠĠĠĠ Ġinterval ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrange Ġ= ĠWeb Template Decimal Range ( interval ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( range . is Fixed ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrange . min ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ