package Ġorg . jav ier mf . primitives . lang Ċ Ċ import Ġorg . jav ier mf . primitives . exceptions . message Ċ Ċ data Ġclass ĠLang ISO 6 3 9 ( private Ġval Ġcode : ĠString ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġnormalized Code Ġ: ĠString ĊĠĠĠ Ġval Ġdescription Ġ: ĠString ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġrequire ( Ġcode . length Ġin Ġ 2 .. 8 Ġ) Ġ{ Ġmessage (" Language Ġcode Ġlength Ġmust Ġbe Ġbetween Ġ 2 Ġand Ġ 8 Ġcharacters ") Ġ} ĊĠĠĠĠĠĠĠ Ġrequire ( Ġiso 6 3 9 Regex Ġmatches Ġcode Ġ) Ġ{ Ġmessage (" The Ġstring Ġis Ġnot Ġa Ġvalid ĠISO Ġ 6 3 9 Ġlanguage Ġcode ") Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlower Case d Code Ġ= Ġcode . toLowerCase () ĊĊĠĠĠĠĠĠĠ Ġnormalized Code Ġ= ĠISO 6 3 9 Codes . alpha 3 [ lower Case d Code ] Ġ?: Ġlower Case d Code ĊĠĠĠĠĠĠĠ Ġval Ġdescription For Code Ġ= ĠISO 6 3 9 Codes . description For Code ( normalized Code ) ĊĊĠĠĠĠĠĠĠ Ġrequire ( Ġdescription For Code Ġ!= Ġnull Ġ) Ġ{ Ġ" The Ġstring Ġis Ġnot Ġa Ġvalid ĠISO Ġ 6 3 9 Ġlanguage Ġcode " Ġ} ĊĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġdescription For Code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġvalue Ġget () Ġ= Ġnormalized Code ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ġother Ġis ĠLang ISO 6 3 9 Ġ&& Ġother . normalized Code Ġ== Ġthis . normalized Code ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġnormalized Code . hashCode () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġvalue ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġiso 6 3 9 Regex Ġ= Ġ"[ a - zA - Z ]{ 2 , 8 }". to Regex () ĊĠĠĠ Ġ} Ċ } ĊĊ