package Ġcom . github . sab ote ur . excel file loader Ċ Ċ import Ġcom . github . sab ote ur . excel file loader . exception . Incorrect File Format Declaration Exception Ċ import Ġkotlin . reflect . K Class Ċ Ċ class ĠExcel List Format ( block : ĠExcel List Format . () Ġ-> ĠUnit ) Ġ{ ĊĊĠĠĠ Ġ// ĠColumns Ġrepresentation Ġ[ header Ġ< => Ġparameters ] ĊĠĠĠ Ġprivate Ġval Ġcolumns Ġ= Ġmutable Map Of < String , ĠColumn < out ĠAny >>() ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġconstructor () Ġ: Ġthis ({}) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . block () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġput ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġtype : ĠK Class < T >, ĊĠĠĠĠĠĠĠ Ġis Key : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġdefault : ĠT ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġpattern : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( name . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInc orrect File Format Declaration Exception (" Column Ġname Ġmust Ġbe Ġdeclared ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġin Ġcolumns ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInc orrect File Format Declaration Exception (" Column Ġwith Ġname Ġ$ name Ġalready Ġdeclared ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Key Ġ&& Ġcolumns . values . any Ġ{ Ġit . is Key Ġ}) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInc orrect File Format Declaration Exception (" Key Ġcolumn Ġalready Ġdeclared ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcolumns [ name ] Ġ= ĠColumn ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnum Ġ= Ġcolumns . size , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Key Ġ= Ġis Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġdefault , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpattern Ġ= Ġpattern ĊĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġput ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġis Key : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġdefault : ĠT ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġpattern : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġput ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠT :: class , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Key Ġ= Ġis Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġdefault , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpattern Ġ= Ġpattern ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFor ĠJava Ġcompatibility ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġput ( ĊĠĠĠĠĠĠĠ Ġname : ĠString , ĊĠĠĠĠĠĠĠ Ġtype : ĠClass < T >, ĊĠĠĠĠĠĠĠ Ġis Key : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Required : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġdefault : ĠT ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġpattern : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠUnit Ġ= ĊĠĠĠĠĠĠĠ Ġput ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= Ġtype . kotlin , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Key Ġ= Ġis Key , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Required Ġ= Ġis Required , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdefault Ġ= Ġdefault , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpattern Ġ= Ġpattern ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Suppress (" unused ") ĊĠĠĠ Ġfun ĠgetKey (): ĠColumn < out ĠAny >? Ġ= ĊĠĠĠĠĠĠĠ Ġcolumns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . is Key Ġ} ĊĊĠĠĠ Ġfun Ġget Column ( name : ĠString ): ĠColumn < out ĠAny >? Ġ= ĊĠĠĠĠĠĠĠ Ġcolumns [ name ] ĊĊĠĠĠ Ġfun Ġget Columns (): ĠSet < Column < out ĠAny >> Ġ= ĊĠĠĠĠĠĠĠ Ġcolumns ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. values ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. to HashSet () Ċ Ċ } Ċ