/******************************************************************************* Ċ Ġ* ĠCopyright Ġ 2 0 1 7 ĠFr ances co ĠC ina ' ĊĊ Ġ* Ġ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 Ġcom . uf os cout . pro perl ty Ċ Ċ import Ġcom . uf os cout . pro perl ty . reader . Properties Resource Reader Ċ import Ġcom . uf os cout . pro perl ty . reader . Reader Ċ import Ġcom . uf os cout . pro perl ty . reader . decorator . Priority Queue Decorator Reader Ċ import Ġcom . uf os cout . pro perl ty . reader . decorator . Re placer Decorator Reader Ċ import Ġjava . nio . charset . Charset Ċ import Ġjava . nio . charset . StandardCharsets Ċ Ċ class ĠPro perl ty Builder Ġinternal Ġconstructor () Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġreader Ġ= ĠPriority Queue Decorator Reader () ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġstart Ġdelimiter Ġof Ġthe Ġplaceholders . ĊĠĠĠĠ Ġ* ĠDefault Ġvalue Ġis Ġ[ Default . START _ DE LIMITER ] ĊĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġstart Ġdelimiter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġstart Delimiter Ġ= ĠDefault . START _ DE LIMITER ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturn Ġthe Ġend Ġdelimiter Ġof Ġthe Ġplaceholders . ĊĠĠĠĠ Ġ* ĠDefault Ġvalue Ġis Ġ[ Default . END _ DE LIMITER ] ĊĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġend Ġdelimiter ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġend Delimiter Ġ= ĠDefault . END _ DE LIMITER ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSet Ġthe Ġseparator Ġfor Ġthe Ġdefault Ġvalue . ĊĠĠĠĠ Ġ* ĠDefault Ġvalue Ġis Ġ[ Default . DEFAULT _ DEFAULT _ VALUE _ SEPARATOR ] ĊĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġdefault Ġvalue Ġseparator ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar ĠdefaultValue Separator Ġ= ĠDefault . DEFAULT _ DEFAULT _ VALUE _ SEPARATOR ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġvar Ġignore Un res olvable Place holders Ġ= Ġfalse ĊĊĠĠĠ Ġprivate Ġvar Ġcase Sensitive Ġ= Ġtrue ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġreader . add ( Environment Variables Reader (), Ġenvironment Variables Priority ) ĊĠĠĠĠĠĠĠ Ġreader . add ( To LowerCase And Dot Key Reader ( Environment Variables Reader ()), Ġenvironment Variables Priority ) ĊĠĠĠĠĠĠĠ Ġreader . add ( System Properties Reader (), Ġsystem Properties Priority ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ*/ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġnew Ġproperty Ġ[ Reader ]. ĊĠĠĠĠ Ġ* ĠIf Ġtwo Ġor Ġmore Ġ[ Reader ] s Ġhave Ġthe Ġsame Ġpriority , Ġthe Ġlast Ġadded Ġhas Ġthe Ġhighest Ġpriority Ġamong Ġthem . ĊĊĠĠĠĠ Ġ* Ġ@ param Ġreader ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( reader : ĠReader , Ġpriority : ĠInt Ġ= ĠDefault . DEFAULT _ PRIORITY ): ĠPro perl ty Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . reader . add ( reader , Ġpriority ) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġa Ġnew Ġ[ Properties Resource Reader ] Ġto Ġfetch Ġthe Ġproperties Ġfrom Ġthe Ġa Ġspecific Ġresource Ġon Ġthe Ġfile Ġsystem ĊĠĠĠĠ Ġ* Ġor Ġon Ġthe Ġclasspath . ĊĠĠĠĠ Ġ* ĠThe Ġresource Path Ġcan Ġbe Ġin Ġthe Ġform : ĊĊĠĠĠĠ Ġ* Ġ- Ġ./ path / file Ġ: Ġpath Ġof Ġa Ġfile Ġin Ġthe Ġfile Ġsystem ĊĠĠĠĠ Ġ* Ġ- Ġfile : ./ path / file Ġ: Ġsame Ġas Ġprevious Ġcase , Ġa Ġpath Ġof Ġa Ġfile Ġin Ġthe Ġfile Ġsystem ĊĠĠĠĠ Ġ* Ġ- Ġclasspath :/ path / file Ġ: Ġpath Ġof Ġa Ġresource Ġin Ġthe Ġclasspath ĊĊĠĠĠĠ Ġ* ĠIf Ġtwo Ġor Ġmore Ġ[ Reader ] s Ġhave Ġthe Ġsame Ġpriority , Ġthe Ġlast Ġadded Ġhas Ġthe Ġhighest Ġpriority Ġamong Ġthem . ĊĊĠĠĠĠ Ġ* Ġ@ param Ġresource Path Ġthe Ġresource Ġpath ĊĠĠĠĠ Ġ* Ġ@ param Ġignore NotFound Ġwhether Ġto Ġignore Ġif Ġthe Ġresource Ġis Ġnot Ġfound . ĠDefault Ġis Ġfalse . ĊĠĠĠĠ Ġ* Ġ@ param Ġcharset Ġthe Ġresource Ġcharacter Ġencoding . ĠDefault Ġis Ġ[ StandardCharsets . UTF _ 8 ] ĊĠĠĠĠ Ġ* Ġ@ param Ġpriority ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd ( resource Path : ĠString , Ġignore NotFound : ĠBoolean Ġ= Ġfalse , Ġcharset : ĠCharset Ġ= ĠStandard Charsets . UTF _ 8 , Ġpriority : ĠInt Ġ= ĠDefault . DEFAULT _ PRIORITY ): ĠPro perl ty Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġadd ( Properties Resource Reader . build ( resource Path ). ignore NotFound ( ignore NotFound ). charset ( charset ), Ġpriority ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġbuild Ġa Ġ[ Pro perl ty ] Ġinstance Ġthat Ġcontains Ġthe Ġevaluated Ġproperties . ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġbuild (): ĠPro perl ty Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠPro perl ty ( case Sensitive , ĠRe placer Decorator Reader ( reader , Ġstart Delimiter , Ġend Delimiter , ĠdefaultValue Separator , Ġignore Un res olvable Place holders , Ġcase Sensitive ). read ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĊĠĠĠĠ Ġ* ĠSet Ġthe Ġstart Ġand Ġend Ġplaceholder Ġde limiters . ĊĠĠĠĠ Ġ* ĠDefault Ġare Ġ[ Default . START _ DE LIMITER ] Ġand Ġ[ Default . END _ DE LIMITER ] ĊĊĠĠĠĠ Ġ* Ġ@ param Ġstart Delimiter Ġthe Ġstart Delimiter Ġto Ġset ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġde limiters ( start Delimiter : ĠString Ġ= ĠDefault . START _ DE LIMITER , Ġend Delimiter : ĠString Ġ= ĠDefault . END _ DE LIMITER ): ĠPro perl ty Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . start Delimiter Ġ= Ġstart Delimiter ĊĠĠĠĠĠĠĠ Ġthis . end Delimiter Ġ= Ġend Delimiter ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġto Ġignore Ġnot Ġresol vable Ġplaceholders . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġfalse . ĊĊĠĠĠĠ Ġ* Ġ@ param Ġignore Un res olvable Place holders ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġignore Un res olvable Place holders ( ignore Un res olvable Place holders : ĠBoolean ): ĠPro perl ty Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . ignore Un res olvable Place holders Ġ= Ġignore Un res olvable Place holders ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġkey Ġare Ġcase Ġsensitive . ĊĠĠĠĠ Ġ* ĠDefault Ġis Ġtrue . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġcase Sensitive ĊĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġcase Sensitive ( case Sensitive : ĠBoolean ): ĠPro perl ty Builder Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . case Sensitive Ġ= Ġcase Sensitive ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} Ċ Ċ } Ċ