package Ġcom . c en ge ls . progress or . units Ċ Ċ import Ġcom . c en ge ls . progress or . enums . Progress Type Ċ Ċ import Ġjava . util . HashMap Ċ Ċ /** ĠA Ġstatic Ġclass Ġcomp ris ing Ġseveral Ġpredefined Ġunit Ġconstant Ġstrings Ġalong Ġwith Ġsome Ġconvenience Ġmethods Ġfor Ġcorre lating Ġthem Ġto Ġa Ġ[ Progress Type ]. Ġ*/ Ċ object ĠUnit Ġ{ ĊĠĠĠ Ġconst Ġval ĠNONE : ĠString Ġ= Ġ"" ĊĠĠĠ Ġconst Ġval ĠPER CENT : ĠString Ġ= Ġ"% " ĊĠĠĠ Ġconst Ġval ĠT ONS : ĠString Ġ= Ġ" t " ĊĠĠĠ Ġconst Ġval ĠK I LOG RAM S : ĠString Ġ= Ġ" kg " ĊĠĠĠ Ġconst Ġval ĠGR AMS : ĠString Ġ= Ġ" g " ĊĠĠĠ Ġconst Ġval ĠL IT ERS : ĠString Ġ= Ġ" l " ĊĠĠĠ Ġconst Ġval ĠMIL LIL IT ERS : ĠString Ġ= Ġ" ml " ĊĠĠĠ Ġconst Ġval ĠK I LO METER S : ĠString Ġ= Ġ" km " ĊĠĠĠ Ġconst Ġval ĠMET ERS : ĠString Ġ= Ġ" m " ĊĠĠĠ Ġconst Ġval ĠC ENT IME TER S : ĠString Ġ= Ġ" cm " ĊĠĠĠ Ġconst Ġval ĠMIL LI METER S : ĠString Ġ= Ġ" mm " ĊĠĠĠ Ġconst Ġval ĠK I LOCAL ORIES : ĠString Ġ= Ġ" k cal " ĊĠĠĠ Ġconst Ġval ĠCAL ORIES : ĠString Ġ= Ġ" cal " ĊĠĠĠ Ġconst Ġval ĠYEAR S : ĠString Ġ= Ġ" years " ĊĠĠĠ Ġconst Ġval ĠMON TH S : ĠString Ġ= Ġ" months " ĊĠĠĠ Ġconst Ġval ĠDAY S : ĠString Ġ= Ġ" days " ĊĠĠĠ Ġconst Ġval ĠW EE KS : ĠString Ġ= Ġ" w ks " ĊĠĠĠ Ġconst Ġval ĠHO UR S : ĠString Ġ= Ġ" h " ĊĠĠĠ Ġconst Ġval ĠMIN UTES : ĠString Ġ= Ġ" min " ĊĠĠĠ Ġconst Ġval ĠSE CON DS : ĠString Ġ= Ġ" s " ĊĊĠĠĠ Ġval Ġconversion Table : ĠMap < String , ĠDouble > ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġthis ._ conversion Table ĊĠĠĠ Ġprivate Ġval Ġ_ conversion Table : ĠMutable Map < String , ĠDouble > Ġ= ĠHashMap () ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . KI LOG RAM S ] Ġ= Ġ 1 0 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . GRAM S ] Ġ= Ġ 1 0 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . MIL LIL IT ERS ] Ġ= Ġ 1 0 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . METER S ] Ġ= Ġ 1 0 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . CENT IME TER S ] Ġ= Ġ 1 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . MILLI METER S ] Ġ= Ġ 1 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . CAL ORIES ] Ġ= Ġ 1 0 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . MONTH S ] Ġ= Ġ 1 2 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . W EE KS ] Ġ= Ġ 4 . 3 4 5 2 3 8 0 9 5 2 4 Ġ// Ġaverage Ġnumber Ġof Ġdays / month Ġdivided Ġby Ġdays / week ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . DAYS ] Ġ= Ġ 7 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . HOUR S ] Ġ= Ġ 2 4 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . MIN UTES ] Ġ= Ġ 6 0 . 0 ĊĠĠĠĠĠĠĠ Ġ_ conversion Table [ Unit . SECONDS ] Ġ= Ġ 6 0 . 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Sm allest Unit ( progress Type : ĠProgress Type ): ĠString ? Ġ= Ġthis . get Units ( progress Type )?. get ( 0 ) ĊĊĠĠĠ Ġfun Ġget Units ( progress Type : ĠProgress Type ): ĠArray < out ĠString >? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠProgress Type :: class . java . getField ( progress Type . name ). getAnnotation ( Unit Descriptor :: class . java ). value ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Progress Type ( unit : ĠString ): ĠProgress Type Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( value Ġin ĠProgress Type . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . get Units ( value )?. contains ( unit ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ignored : ĠException ) Ġ{ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn ĠProgress Type . CUSTOM ĊĠĠĠ Ġ} Ċ } Ċ