package Ġnet . v on for st . ev map . model Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Parcelable Ċ import Ġandroidx . core . text . Html Compat Ċ import Ġandroidx . room . Embedded Ċ import Ġandroidx . room . Entity Ċ import Ġandroidx . room . PrimaryKey Ċ import Ġcom . squareup . mos hi . Json Class Ċ import Ġkotlinx . parcel ize . Parcel ize Ċ import Ġnet . v on for st . ev map . R Ċ import Ġnet . v on for st . ev map . adapter . Equ atable Ċ import Ġnet . v on for st . ev map . api . String Provider Ċ import Ġnet . v on for st . ev map . api . name For Plug Type Ċ import Ġjava . time . DayOfWeek Ċ import Ġjava . time . Instant Ċ import Ġjava . time . LocalDate Ċ import Ġjava . time . Local Time Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . Format Style Ċ import Ġjava . util .* Ċ import Ġkotlin . math . abs Ċ import Ġkotlin . math . floor Ċ Ċ sealed Ġclass ĠCharge point ListItem ĊĊ Ċ /** Ċ Ġ* ĠA Ġwhole Ġch arging Ġsite Ġ( pot entially Ġwith Ġmultiple Ġcharge points ). Ċ Ġ* Ċ Ġ* Ġ@ param Ġid ĠA Ġunique Ġnumber Ġper Ġch arging Ġsite Ċ Ġ* Ġ@ param ĠdataSource ĠThe Ġname Ġof Ġthe Ġdata Ġsource Ċ Ġ* Ġ@ param Ġcoordinates ĠThe Ġlatitude Ġ/ Ġlongitude Ġof Ġthis Ġcharge Ġlocation Ċ Ġ* Ġ@ param Ġaddress ĠThe Ġcharge Ġlocation Ġaddress Ċ Ġ* Ġ@ param Ġcharge points ĠList Ġof Ġcharge points Ġat Ġthis Ġlocation Ċ Ġ* Ġ@ param Ġnetwork ĠThe Ġch arging Ġnetwork Ġ( Mob ility ĠService ĠProvider , ĠM SP ) Ċ Ġ* Ġ@ param Ġurl ĠA Ġlink Ġto Ġthis Ġch arging Ġsite Ċ Ġ* Ġ@ param Ġedit Url ĠA Ġlink Ġto Ġa Ġwebsite Ġwhere Ġthis Ġch arging Ġsite Ġcan Ġbe Ġedited Ċ Ġ* Ġ@ param Ġfault Report ĠSet Ġthis Ġif Ġthe Ġch arging Ġsite Ġis Ġreported Ġto Ġbe Ġout Ġof Ġservice Ċ Ġ* Ġ@ param Ġverified ĠFor Ġc row ds ourced Ġdata Ġsources , Ġthis Ġmeans Ġthat Ġthe Ġdata Ġhas Ġbeen Ġverified Ċ Ġ* ĠĠ Ġby Ġan Ġindependent Ġperson Ċ Ġ* Ġ@ param Ġbarrier Free ĠWhether Ġthis Ġcharge Ġlocation Ġcan Ġbe Ġused Ġwithout Ġprior Ġregistration Ċ Ġ* Ġ@ param Ġoperator ĠThe Ġoperator Ġof Ġthis Ġcharge Ġlocation Ġ( Charge ĠPoint ĠOperator , ĠC PO ) Ċ Ġ* Ġ@ param Ġgeneral Information ĠGeneral Ġinformation Ġabout Ġthis Ġch arging Ġsite Ġthat Ġdoes Ġnot Ġfit Ġanywhere Ġelse Ċ Ġ* Ġ@ param Ġam en ities ĠDescription Ġof Ġam en ities Ġavailable Ġat Ġor Ġnear Ġthe Ġch arging Ġsite Ġ( to ile ts , Ġfood , Ġac commod ation , Ġland marks , Ġetc .) Ċ Ġ* Ġ@ param Ġlocation Description ĠDirection s Ġon Ġhow Ġto Ġfind Ġthe Ġch arger Ġ( e . g . Ġ" In Ġthe Ġpar king Ġgar age Ġon Ġlevel Ġ 5 ") Ċ Ġ* Ġ@ param Ġphotos ĠList Ġof Ġphotos Ġof Ġthis Ġch arging Ġsite Ċ Ġ* Ġ@ param Ġcharge cards ĠList Ġof Ġcharge Ġcards Ġaccepted Ġhere Ċ Ġ* Ġ@ param Ġopening hours ĠList Ġof Ġtimes Ġwhen Ġthis Ġch arging Ġsite Ġcan Ġbe Ġaccessed Ġ/ Ġused Ċ Ġ* Ġ@ param Ġcost ĠThe Ġcost Ġfor Ġch arging Ġand / or Ġpar king Ċ Ġ* Ġ@ param Ġlicense ĠHow Ġthe Ġdata Ġabout Ġthis Ġcharge point Ġis Ġlicensed Ċ Ġ* Ġ@ param Ġcharge price Data ĠAdditional Ġdata Ġneeded Ġfor Ġthe ĠCharge price Ġimplementation Ċ Ġ* Ġ@ param Ġtime Retrie ved ĠTime Ġwhen Ġthis Ġinformation Ġwas Ġretrieved Ġfrom Ġthe Ġdata Ġsource Ċ Ġ* Ġ@ param Ġis Detailed ĠWhether Ġthis Ġdata Ġincludes Ġall Ġavailable Ġdetails Ġ( for Ġmany Ġdata Ġsources , Ċ Ġ* ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAPI Ġcalls Ġthat Ġreturn Ġa Ġlist Ġmay Ġonly Ġgive Ġa Ġcompact Ġrepresentation ) Ċ Ġ*/ Ċ @ Entity ( primary Keys Ġ= Ġ[" id ", Ġ" dataSource "]) Ċ @ Parcel ize Ċ data Ġclass ĠCharge Location ( ĊĠĠĠ Ġval Ġid : ĠLong , ĊĠĠĠ Ġval ĠdataSource : ĠString , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġ@ Embedded Ġval Ġcoordinates : ĠCoordinate , ĊĠĠĠ Ġ@ Embedded Ġval Ġaddress : ĠAddress ?, ĊĠĠĠ Ġval Ġcharge points : ĠList < Charge point >, ĊĠĠĠ Ġval Ġnetwork : ĠString ?, ĊĠĠĠ Ġval Ġurl : ĠString , ĊĠĠĠ Ġval Ġedit Url : ĠString ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" fault _ report _ ") Ġval Ġfault Report : ĠFault Report ?, ĊĠĠĠ Ġval Ġverified : ĠBoolean , ĊĠĠĠ Ġval Ġbarrier Free : ĠBoolean ?, ĊĠĠĠ Ġ// Ġonly Ġshown Ġin Ġdetails : ĊĠĠĠ Ġval Ġoperator : ĠString ?, ĊĠĠĠ Ġval Ġgeneral Information : ĠString ?, ĊĠĠĠ Ġval Ġam en ities : ĠString ?, ĊĠĠĠ Ġval Ġlocation Description : ĠString ?, ĊĠĠĠ Ġval Ġphotos : ĠList < Ch arger Photo > ?, ĊĠĠĠ Ġval Ġcharge cards : ĠList < Charge Card Id > ?, ĊĠĠĠ Ġ@ Embedded Ġval Ġopening hours : ĠOpen ing Hours ?, ĊĠĠĠ Ġ@ Embedded Ġval Ġcost : ĠCost ?, ĊĠĠĠ Ġval Ġlicense : ĠString ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" charge price ") Ġval Ġcharge price Data : ĠCharge price Data ?, ĊĠĠĠ Ġval Ġtime Retrie ved : ĠInstant , ĊĠĠĠ Ġval Ġis Detailed : ĠBoolean Ċ ) Ġ: ĠCharge point ListItem (), ĠEqu atable , ĠParcel able Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġmaximum Ġpower Ġavailable Ġfrom Ġthis Ġch arger . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġmax Power : ĠDouble ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmax Power () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġmaximum Ġpower Ġavailable Ġfrom Ġcertain Ġconnector s Ġof Ġthis Ġch arger . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġmax Power ( connectors : ĠSet < String >? Ġ= Ġnull ): ĠDouble ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcharge points ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġconnector s ?. contains ( it . type ) Ġ?: Ġtrue Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġit . power Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. max OrNull () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Multi ( filtered Connectors : ĠSet < String >? Ġ= Ġnull ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcharge points Ġ= Ġcharge points Merged ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġfiltered Connectors ?. contains ( it . type ) Ġ?: Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġcharge point Max Power Ġ= Ġmax Power ( filtered Connectors ) ĊĠĠĠĠĠĠĠ Ġif Ġ( charge point Max Power Ġ!= Ġnull Ġ&& Ġcharge point Max Power Ġ>= Ġ 4 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġfast Ġch arger Ġ-> Ġonly Ġcount Ġfast Ġch arg ers ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcharge points Ġ= Ġcharge points . filter Ġ{ it . power Ġ!= Ġnull Ġ&& Ġit . power Ġ>= Ġ 4 3 Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġconnector s Ġ= Ġcharge points . map Ġ{ Ġit . type Ġ}. distinct (). toSet () ĊĊĠĠĠĠĠĠĠ Ġ// Ġcheck Ġif Ġthere Ġis Ġmore Ġthan Ġone Ġplug Ġfor Ġany Ġconnector Ġtype ĊĠĠĠĠĠĠĠ Ġval Ġcharge points Per Connector Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconnector s . map Ġ{ Ġconn Ġ-> Ġcharge points . filter Ġ{ Ġit . type Ġ== Ġconn Ġ}. sum By Ġ{ Ġit . count Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġcharge points Per Connector . any Ġ{ Ġit Ġ> Ġ 1 Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMerge s Ġcharge points Ġif Ġthey Ġhave Ġthe Ġsame Ġplug Ġand Ġpower ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġoccurs Ġe . g . Ġfor ĠType 2 Ġsockets Ġand Ġplug s , Ġwhich Ġare Ġdistinct Ġon Ġthe ĠGE Ġwebsite , Ġbut Ġnot ĊĠĠĠĠ Ġ* Ġsepar able Ġin Ġthe ĠAPI ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcharge points Merged : ĠList < Charge point > ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariants Ġ= Ġcharge points . distinct By Ġ{ Ġit . power Ġto Ġit . type Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvariants . map Ġ{ Ġvariant Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġcharge points ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . type Ġ== Ġvariant . type Ġ&& Ġit . power Ġ== Ġvariant . power Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. sum By Ġ{ Ġit . count Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCharge point ( variant . type , Ġvariant . power , Ġcount ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtotal Charge points : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcharge points . sum By Ġ{ Ġit . count Ġ} ĊĊĠĠĠ Ġfun Ġformat Charge points ( sp : ĠString Provider ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcharge points Merged . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ it . count } ĠÃĹ Ġ${ name For Plug Type ( sp , Ġit . type )} Ġ${ it . format Power () }" ĊĠĠĠĠĠĠĠ Ġ}. join ToString (" ĠÂ· Ġ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠAdditional Ġdata Ġneeded Ġfor Ġthe ĠCharge price Ġimplementation Ċ Ġ*/ Ċ @ Parcel ize Ċ data Ġclass ĠCharge price Data ( ĊĠĠĠ Ġval Ġcountry : ĠString ?, ĊĠĠĠ Ġval Ġnetwork : ĠString ?, ĊĠĠĠ Ġval Ġplug Types : ĠList < String >? Ċ ) Ġ: ĠParcel able Ċ Ċ @ Parcel ize Ċ data Ġclass ĠCost ( ĊĠĠĠ Ġval Ġfree ch arging : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġfree park ing : ĠBoolean ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdescription Short : ĠString ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġdescription Long : ĠString ? Ġ= Ġnull Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġval ĠisEmpty : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdescription Long Ġ== Ġnull Ġ&& Ġdescription Short Ġ== Ġnull Ġ&& Ġfree ch arging Ġ== Ġnull Ġ&& Ġfree park ing Ġ== Ġnull ĊĊĠĠĠ Ġfun ĠgetStatus Text ( ctx : ĠContext , Ġemoji : ĠBoolean Ġ= Ġfalse ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( free ch arging Ġ!= Ġnull Ġ&& Ġfree park ing Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch arging Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( free ch arging ) Ġctx . getString ( R . string . free ) Ġelse Ġctx . getString ( R . string . paid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpar king Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( free park ing ) Ġctx . getString ( R . string . free ) Ġelse Ġctx . getString ( R . string . paid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( emoji ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" â ļ ¡ Ġ$ ch arging ĠÂ· Ġ\ uD 8 3 C \ u DD 7 F ï¸ı Ġ$ park ing " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . from Html ( ctx . getString ( R . string . cost _ detail , Ġch arging , Ġpar king ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( free ch arging Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġch arging Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( free ch arging ) Ġctx . getString ( R . string . free ) Ġelse Ġctx . getString ( R . string . paid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( emoji ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" â ļ ¡ Ġ$ ch arging " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . from Html ( ctx . getString ( R . string . cost _ detail _ ch arging , Ġch arging ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( free park ing Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpar king Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( free park ing ) Ġctx . getString ( R . string . free ) Ġelse Ġctx . getString ( R . string . paid ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( emoji ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"\ uD 8 3 C \ u DD 7 F Ġ$ park ing " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHtml Compat . from Html ( ctx . getString ( R . string . cost _ detail _ park ing , Ġpar king ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( description Short Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdescription Short ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( description Long Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdescription Long ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠOpen ing Hours ( ĊĠĠĠ Ġval Ġtw enty four Se ven : ĠBoolean , ĊĠĠĠ Ġval Ġdescription : ĠString ?, ĊĠĠĠ Ġ@ Embedded Ġval Ġdays : ĠOpen ing Hours Days ? Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġval ĠisEmpty : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdescription Ġ== Ġ" Le ider Ġno ch Ġkeine ĠInformationen Ġzu ĠÃĸ ff n ungs ze iten Ġvor hand en ." ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġdays Ġ== Ġnull Ġ&& Ġ! tw enty four Se ven ĊĊĠĠĠ Ġfun ĠgetStatus Text ( ctx : ĠContext ): ĠCharSequence Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( tw enty four Se ven ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHtml Compat . from Html ( ctx . getString ( R . string . open _ 2 4 7 ), Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( days Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhours Ġ= Ġdays . getHours For Date ( LocalDate . now ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn ĠHtml Compat . from Html ( ctx . getString ( R . string . closed ), Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnow Ġ= ĠLocal Time . now () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( hours . start . is Before ( now ) Ġ&& Ġhours . end . is After ( now )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . open _ clo ses at , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhours . end . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( hours . end . is Before ( now )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHtml Compat . from Html ( ctx . getString ( R . string . closed ), Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠHtml Compat . from Html ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġctx . getString ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . closed _ opens at , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhours . start . toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠOpen ing Hours Days ( ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" mo ") Ġval Ġmon day : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" tu ") Ġval Ġt uesday : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" we ") Ġval Ġw ed nesday : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" th ") Ġval Ġth ursday : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" fr ") Ġval Ġf riday : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" sa ") Ġval Ġs aturday : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" su ") Ġval Ġs unday : ĠH ours ?, ĊĠĠĠ Ġ@ Embedded ( prefix Ġ= Ġ" ho ") Ġval Ġh oliday : ĠH ours ? Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġfun Ġget Hours For Date ( date : ĠLocalDate ): ĠH ours ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġcheck Ġfor Ġh olidays ĊĠĠĠĠĠĠĠ Ġreturn Ġget Hours For DayOfWeek ( date . day OfWeek ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Hours For DayOfWeek ( day OfWeek : ĠDay OfWeek ?): ĠH ours ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" WHEN _ ENUM _ CAN _ BE _ NULL _ IN _ JAVA ") ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( day OfWeek ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . MON DAY Ġ-> Ġmon day ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . T UES DAY Ġ-> Ġt uesday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . W ED N ES DAY Ġ-> Ġw ed nesday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . TH UR SD AY Ġ-> Ġth ursday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . FR ID AY Ġ-> Ġf riday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . S ATUR DAY Ġ-> Ġs aturday ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDay OfWeek . S UND AY Ġ-> Ġs unday ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġh oliday ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠH ours ( ĊĠĠĠ Ġval Ġstart : ĠLocal Time , ĊĠĠĠ Ġval Ġend : ĠLocal Time Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfmt Ġ= ĠDateTime Formatter . of Localized Time ( Format Style . SHORT ) ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ start . format ( fmt )} Ġ- Ġ${ end . format ( fmt )}" ĊĠĠĠ Ġ} Ċ } Ċ Ċ abstract Ġclass ĠCh arger Photo ( open Ġval Ġid : ĠString ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġabstract Ġfun ĠgetUrl ( height : ĠInt ? Ġ= Ġnull , Ġwidth : ĠInt ? Ġ= Ġnull , Ġsize : ĠInt ? Ġ= Ġnull ): ĠString Ċ } Ċ Ċ data Ġclass ĠCharge Location Cluster ( ĊĠĠĠ Ġval Ġcluster Count : ĠInt , ĊĠĠĠ Ġval Ġcoordinates : ĠCoordinate Ċ ) Ġ: ĠCharge point ListItem () Ċ Ċ @ Parcel ize Ċ data Ġclass ĠCoordinate ( val Ġlat : ĠDouble , Ġval Ġlng : ĠDouble ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġfun Ġformat D MS (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ d ms ( lat , Ġfalse )}, Ġ${ d ms ( lng , Ġtrue )}" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġd ms ( value : ĠDouble , Ġlon : ĠBoolean ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhe mis phere Ġ= Ġif Ġ( lon ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= Ġ 0 ) Ġ" E " Ġelse Ġ" W " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value Ġ>= Ġ 0 ) Ġ" N " Ġelse Ġ" S " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġd Ġ= Ġabs ( value ) ĊĠĠĠĠĠĠĠ Ġval Ġdegrees Ġ= Ġfloor ( d ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġminutes Ġ= Ġfloor (( d Ġ- Ġdegrees ) Ġ* Ġ 6 0 ). toInt () ĊĠĠĠĠĠĠĠ Ġval Ġseconds Ġ= Ġ(( d Ġ- Ġdegrees ) Ġ* Ġ 6 0 Ġ- Ġminutes ) Ġ* Ġ 6 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġ"% d Â° % 0 2 d '% 0 2 . 1 f \" % s ". format ( Locale . EN GL ISH , Ġdegrees , Ġminutes , Ġseconds , Ġhe mis phere ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġformat Decimal (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"% . 6 f , Ġ%. 6 f ". format ( Locale . EN GL ISH , Ġlat , Ġlng ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠAddress ( ĊĠĠĠ Ġval Ġcity : ĠString ?, ĊĠĠĠ Ġval Ġcountry : ĠString ?, ĊĠĠĠ Ġval Ġpost code : ĠString ?, ĊĠĠĠ Ġval Ġstreet : ĠString ? Ċ ) Ġ: ĠParcel able Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"${ street Ġ?: Ġ""}, Ġ${ postcode Ġ?: Ġ"" } Ġ${ city Ġ?: Ġ"" }" ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠOne Ġsocket Ġwith Ġa Ġcertain Ġpower , Ġwhich Ġmay Ġbe Ġavailable Ġmultiple Ġtimes Ġat Ġa ĠCharge Location . Ċ Ġ*/ Ċ @ Parcel ize Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠCharge point ( ĊĠĠĠ Ġ// ĠThe Ġcharge point Ġtype Ġ( use Ġone Ġof Ġthe Ġconstants Ġin Ġthe Ġcompanion Ġobject ) ĊĠĠĠ Ġval Ġtype : ĠString , ĊĠĠĠ Ġ// ĠPower Ġin Ġk W Ġ( or Ġnull Ġif Ġunknown ) ĊĠĠĠ Ġval Ġpower : ĠDouble ?, ĊĠĠĠ Ġ// ĠHow Ġmany Ġinstances Ġof Ġthis Ġplug / socket Ġare Ġavailable ? ĊĠĠĠ Ġval Ġcount : ĠInt , Ċ ) Ġ: ĠEqu atable , ĠParcel able Ġ{ ĊĠĠĠ Ġfun Ġhas Known Power (): ĠBoolean Ġ= Ġpower Ġ!= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġcharge point Ġpower Ġis Ġdefined , Ġformat Ġit Ġinto Ġa Ġstring . ĊĠĠĠĠ Ġ* ĠOtherwise , Ġreturn Ġnull . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġformat Power (): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( power Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpower Fmt Ġ= Ġif Ġ( power Ġ- Ġpower . toInt () Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"% . 0 f ". format ( power ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"% . 1 f ". format ( power ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ power Fmt Ġk W " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 1 Ġ= Ġ" Type Ġ 1 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 2 _ UNKNOWN Ġ= Ġ" Type Ġ 2 Ġ( either Ġplug Ġor Ġsocket )" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 2 _ SOCKET Ġ= Ġ" Type Ġ 2 Ġsocket " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 2 _ PL UG Ġ= Ġ" Type Ġ 2 Ġplug " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠTYPE _ 3 Ġ= Ġ" Type Ġ 3 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC CS _ TYPE _ 2 Ġ= Ġ" CC S ĠType Ġ 2 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC CS _ TYPE _ 1 Ġ= Ġ" CC S ĠType Ġ 1 " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC CS _ UNKNOWN Ġ= Ġ" CC S Ġ( either ĠType Ġ 1 Ġor ĠType Ġ 2 )" ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠS CH UK O Ġ= Ġ" Sch uk o " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCH ADE MO Ġ= Ġ" CHA de MO " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠSUP ER CHAR GER Ġ= Ġ" Tes la ĠSuper ch arger " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC EE _ BL AU Ġ= Ġ" CE E ĠB la u " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠC EE _ ROT Ġ= Ġ" CE E ĠRot " ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠT ES LA _ RO AD STER _ H PC Ġ= Ġ" Tes la ĠH PC " ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Parcel ize Ċ data Ġclass ĠFault Report ( val Ġcreated : ĠInstant ?, Ġval Ġdescription : ĠString ?) Ġ: ĠParcel able Ċ Ċ @ Entity Ċ data Ġclass ĠCharge Card ( ĊĠĠĠ Ġ@ PrimaryKey Ġval Ġid : ĠLong , ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġurl : ĠString Ċ ) Ċ Ċ @ Parcel ize Ċ @ Json Class ( generate Adapter Ġ= Ġtrue ) Ċ data Ġclass ĠCharge Card Id ( ĊĠĠĠ Ġval Ġid : ĠLong Ċ ) Ġ: ĠParcel able