/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 7 - 2 0 2 0 Ġby ĠO liver ĠBo e hm Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* Ġ( c ) re ated Ġ 2 1 . 0 2 . 2 0 1 7 Ġby Ġo bo e hm Ġ( ob @ o asd . de ) Ċ Ġ*/ Ċ package Ġde . jf ach w ert . post Ċ Ċ import Ġcom . fasterxml . jackson . annotation . Json Creator Ċ import Ġcom . fasterxml . jackson . databind . annotation . Json Serialize Ċ import Ġde . jf ach w ert . KF ach w ert Ċ import Ġde . jf ach w ert . pr ue fung . exception . Invalid Value Exception Ċ import Ġde . jf ach w ert . util . To F ach w ert Serializer Ċ import Ġorg . apache . commons . lang 3 . StringUtils Ċ import Ġjava . util .* Ċ import Ġjava . util . logging . Level Ċ import Ġjava . util . logging . Logger Ċ import Ġjavax . validation . ValidationException Ċ Ċ /** Ċ Ġ* ĠDie ĠAn sch rift Ġbest e ht Ġaus ĠN amen Ġund ĠAd resse Ġoder ĠPost f ach . ĠDer ĠName Ġkann Ċ Ġ* Ġd abe i Ġeine ĠPerson Ġoder Ġeine ĠPerson en grup pe Ġ( z um ĠBeispiel ĠUn tern eh men , Ċ Ġ* ĠV ere ine Ġund ĠA e hn lic hes ) Ġsein . Ċ Ġ* Ċ Ġ* Ġ@ author Ġo bo e hm Ċ Ġ* Ġ@ since Ġ 0 . 2 Ġ( 1 2 . 0 5 . 2 0 1 7 ) Ċ Ġ*/ Ċ @ Json Serialize ( using Ġ= ĠTo F ach w ert Serializer :: class ) Ċ open Ġclass ĠAn sch rift Ġprivate Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġval Ġad ress at : ĠAd ress at , Ġprivate Ġval Ġad resse : ĠAd resse ?, Ġprivate Ġval Ġpost f ach : ĠPost f ach ?) Ġ: ĠK F ach w ert Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠZ er le gt Ġdie Ġue ber ge bene ĠAn sch rift Ġin ĠAd ress at Ġund ĠAd resse Ġoder ĠPost f ach , ĊĠĠĠĠ Ġ* Ġum Ġd ara us Ġeine ĠAn sch rift Ġzu Ġer zeug en . ĠFol gende ĠHe ur ist i ken Ġwerden Ġf uer ĊĠĠĠĠ Ġ* Ġdie ĠZ er leg ung Ġher ange z ogen : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ* ĠAd ress at Ġste ht Ġan Ġer ster ĠSt elle ĊĠĠĠĠ Ġ* Ġ Ġ* ĠEin zel te ile Ġwerden Ġdurch ĠKom ma Ġoder ĠZe il env ors ch ub Ġget ren nt ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġan sch rift Ġz . B . Ġ" D onal d ĠD uck , Ġ 1 2 3 4 5 ĠEnt en haus en , ĠG ans str . Ġ 2 3 " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( ans ch rift : ĠString ) Ġ: Ġthis ( split ( ans ch rift )) Ġ{} ĊĊĠĠĠ Ġprivate Ġconstructor ( ans ch rift : ĠArray < Any ?> ) Ġ: Ġthis ( Ad ress at ( ans ch rift [ 0 ]. toString ()), Ġan sch rift [ 1 ] Ġas ĠAd resse ?, Ġan sch rift [ 2 ] Ġas ĠPost f ach ?) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEr zeug t Ġeine Ġne ue ĠAn sch rift Ġaus Ġder Ġue ber geben en ĠMap . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġmap Ġmit Ġden Ġein zel nen ĠElement en Ġf uer Ġ" ad ress at " Ġund Ġ" ad resse ". ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Json Creator ĊĠĠĠ Ġconstructor ( map : ĠMap < String , ĠAny >) Ġ: Ġthis ( Ad ress at ( map [" ad ress at "]. toString ()), ĠAd resse ( map Ġ= Ġmap [" ad resse "] Ġas ĠMap < String , ĠString > )) Ġ{ ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEr zeug t Ġaus Ġdem ĠAd ress aten Ġund ĠAd resse Ġeine ĠAn sch rift . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠĠĠ ĠN amen Ġeiner ĠPerson Ġoder ĠPerson en grup pe ĊĠĠĠĠ Ġ* Ġ@ param Ġad resse Ġeine Ġg ue lt ige ĠAd resse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( name : ĠAd ress at , Ġad resse : ĠAd resse ?) Ġ: Ġthis ( name , Ġad resse , Ġnull ) Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠEr zeug t Ġaus Ġdem ĠAd ress aten Ġund Ġeinem ĠPost f ach Ġeine ĠAn sch rift . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġname ĠĠĠĠ ĠN amen Ġeiner ĠPerson Ġoder ĠPerson en grup pe ĊĠĠĠĠ Ġ* Ġ@ param Ġpost f ach Ġein Ġg ue lt i ges ĠPost f ach ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġconstructor ( name : ĠAd ress at , Ġpost f ach : ĠPost f ach ?) Ġ: Ġthis ( name , Ġnull , Ġpost f ach ) Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( ad resse Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post f ach Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Value Exception (" post _ office _ box ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( post f ach Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Value Exception ( ad resse , ĠADDRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL ief ert Ġden ĠN amen . ĠEin ĠName Ġkann Ġeine ĠPerson Ġoder Ġeine ĠPerson en grup pe ĊĠĠĠĠ Ġ* Ġ( z um ĠBeispiel ĠUn tern eh men , ĠV ere ine Ġund ĠA e hn lic hes ) Ġsein . ĠWill Ġman Ġden ĊĠĠĠĠ Ġ* Ġkomp let ten ĠN amen Ġ( mit ĠVor - Ġund ĠN ach name ), Ġn im mt Ġman Ġdie ĊĠĠĠĠ Ġ* Ġ[. get Ad ress at ]- Me thode . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġz . B . Ġ" M uster mann " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġad ress at . name ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL ief ert Ġdie ĠAd resse Ġder ĠAn sch rift . ĠV ora us setz ung Ġf uer Ġden ĠAu fr uf Ġdieser ĊĠĠĠĠ Ġ* ĠMe thode Ġist , Ġdass Ġdie ĠAn sch rift Ġt ats ae ch lich Ġeine ĠAd resse Ġent ha elt , Ġund ĊĠĠĠĠ Ġ* Ġke in ĠPost f ach . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġeine Ġg ue lt ige ĠAd resse ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Ad resse (): ĠAd resse Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( ad resse ) Ġ{ Ġ" no Ġaddress Ġavailable " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġad resse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL ief ert Ġdas ĠPost f ach Ġder ĠAn sch rift . ĠV ora us setz ung Ġf uer Ġden ĠAu fr uf Ġdieser ĊĠĠĠĠ Ġ* ĠMe thode Ġist , Ġdass Ġdie ĠAn sch rift Ġt ats ae ch lich Ġein ĠPost f ach Ġent ha elt , Ġund ĊĠĠĠĠ Ġ* Ġkeine ĠAd resse . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġein Ġg ue lt i ges ĠPost f ach ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Post f ach (): ĠPost f ach Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( post f ach ) Ġ{ Ġ" no Ġpost Ġoffice Ġbox Ġavailable " Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġpost f ach ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠH ier ue ber Ġkann Ġab ge frag t Ġwerden , Ġob Ġdie ĠAn sch rift Ġeine ĠAd resse Ġoder Ġein ĊĠĠĠĠ Ġ* ĠPost f ach Ġbe inh alt et . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġbei ĠPost f ach ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhas Post f ach (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpost f ach Ġ!= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠZ wei ĠAn sch rift en Ġsind Ġgle ich , Ġwenn Ġsie Ġden Ġgle ichen ĠN amen Ġund Ġdie ĊĠĠĠĠ Ġ* Ġgle iche ĠAd resse Ġbes it zen . ĠD abe i Ġsp iel t Ġes Ġkeine ĠRol le , Ġob Ġder ĠName ĊĠĠĠĠ Ġ* Ġg ross - Ġoder Ġk le ing esch ri eben Ġist . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġother Ġdie Ġandere ĠAn sch rift ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġbei ĠG le ich heit ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠAn sch rift ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġ( name . equals ( other . name , Ġignore Case Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& Ġget Ad resse (). equals ( other . get Ad resse ())) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDa Ġeine ĠhashCode - Me thode Ġperform ant Ġsein Ġsol l , Ġwird Ġnur Ġder ĠName Ġzur ĊĠĠĠĠ Ġ* ĠB ild ung Ġdes ĠHash - Codes Ġher ange z ogen . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠHash code Ġdes ĠN amen . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġad ress at . hashCode () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠDer ĠN amen Ġmit ĠAn sch rift Ġwird Ġein ze ilig Ġzur ue ck ge geben . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġz . B . Ġ" Dag ob ert ĠD uck , Ġ 1 2 3 4 5 ĠEnt en haus en , ĠG el ds pe icher Ġ 2 3 " ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġname Ġ+ Ġ", Ġ" Ġ+ Ġif Ġ( has Post f ach ()) Ġget Post f ach () Ġelse Ġget Ad resse () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠL ief ert Ġdie Ġein zel nen ĠAttribute Ġeines ĠPost f aches Ġals ĠMap . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠAttribute Ġals ĠMap ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġto Map (): ĠMap < String , ĠAny > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmap : ĠMutable Map < String , ĠAny > Ġ= ĠHashMap () ĊĠĠĠĠĠĠĠ Ġmap [" ad ress at "] Ġ= Ġad ress at ĊĠĠĠĠĠĠĠ Ġmap [" ad resse "] Ġ= Ġget Ad resse () ĊĠĠĠĠĠĠĠ Ġreturn Ġmap ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG Ġ= ĠLogger . getLogger ( An sch rift :: class . java . name ) ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠADDRESS Ġ= Ġ" address " ĊĊĠĠĠĠĠĠĠ Ġ/** ĠNull - W ert Ġf uer ĠInitial is ierung . Ġ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠĠĠ Ġval ĠNULL Ġ= ĠAn sch rift ( Ad ress at . NULL , ĠAd resse . NULL ) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠZ er le gt Ġdie Ġue ber ge bene ĠAn sch rift Ġin ĠAd ress at Ġund ĠAd resse Ġoder ĠPost f ach , ĊĠĠĠĠĠĠĠĠ Ġ* Ġum Ġd ara us Ġeine ĠAn sch rift Ġzu Ġer zeug en . ĠFol gende ĠHe ur ist i ken Ġwerden Ġf uer ĊĠĠĠĠĠĠĠĠ Ġ* Ġdie ĠZ er leg ung Ġher ange z ogen : ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ* ĠAd ress at Ġste ht Ġan Ġer ster ĠSt elle ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ* ĠEin zel te ile Ġwerden Ġdurch ĠKom ma Ġoder ĠZe il env ors ch ub Ġget ren nt ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġan sch rift Ġz . B . Ġ" D onal d ĠD uck , Ġ 1 2 3 4 5 ĠEnt en haus en , ĠG ans str . Ġ 2 3 " ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠAn sch rift ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġof ( ans ch rift : ĠString ): ĠAn sch rift Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAn sch rift ( ans ch rift ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEr zeug t Ġaus Ġdem ĠAd ress aten Ġund Ġeinem ĠPost f ach Ġeine ĠAn sch rift . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġname ĠĠĠĠ ĠN amen Ġeiner ĠPerson Ġoder ĠPerson en grup pe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġpost f ach Ġein Ġg ue lt i ges ĠPost f ach ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠAn sch rift ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġof ( name : ĠAd ress at , Ġpost f ach : ĠPost f ach ): ĠAn sch rift Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAn sch rift ( name , Ġpost f ach ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠEr zeug t Ġaus Ġdem ĠAd ress aten Ġund ĠAd resse Ġeine ĠAn sch rift . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġname ĠĠĠ ĠN amen Ġeiner ĠPerson Ġoder ĠPerson en grup pe ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġad resse Ġeine Ġg ue lt ige ĠAd resse ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠAn sch rift ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġof ( name : ĠAd ress at , Ġad resse : ĠAd resse ): ĠAn sch rift Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAn sch rift ( name , Ġad resse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠZ er le gt Ġdie Ġue ber ge bene ĠAn sch rift Ġin ĠAd ress at Ġund ĠAd resse Ġoder ĠPost f ach ĊĠĠĠĠĠĠĠĠ Ġ* Ġf uer Ġdie ĠValid ierung . i ĠFol gende ĠHe ur ist i ken Ġwerden Ġf uer Ġdie ĠZ er leg ung ĊĠĠĠĠĠĠĠĠ Ġ* Ġher ange z ogen : ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ* ĠAd ress at Ġste ht Ġan Ġer ster ĠSt elle ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ* ĠEin zel te ile Ġwerden Ġdurch ĠKom ma Ġoder ĠZe il env ors ch ub Ġget ren nt ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġan sch rift Ġz . B . Ġ" D onal d ĠD uck , Ġ 1 2 3 4 5 ĠEnt en haus en , ĠG ans str . Ġ 2 3 " ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġvalidate ( ans ch rift : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsplit ( ans ch rift ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġsplit ( ans ch rift : ĠString ): ĠArray < Any ?> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġlines Ġ= ĠStringUtils . trim To Empty ( ans ch rift ). split ("[ , \\ n $ ] ". to Pattern ()). to Typed Array () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( lines . size Ġ< Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Value Exception ( ans ch rift , ĠADDRESS ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġparts Ġ= ĠarrayOf Null s < Any >( 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 0 ] Ġ= ĠAd ress at ( lines [ 0 ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġad resse Or Post f ach Ġ= Ġan sch rift . substring ( lines [ 0 ]. length Ġ+ Ġ 1 ). trim Ġ{ Ġit Ġ<= Ġ' Ġ' Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 1 ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 2 ] Ġ= ĠPost f ach ( ad resse Or Post f ach ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠValidation Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . log ( Level . F INE , Ġ"' $ ad resse Or Post f ach ' Ġis Ġnot Ġa Ġpost Ġoffice Ġbox :", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 1 ] Ġ= ĠAd resse ( ad resse Or Post f ach ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparts [ 2 ] Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġparts ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }