/* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġ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 Ġnet . pot ot sk iy . apps . lom out . api . script . printer Ċ Ċ import Ġnet . pot ot sk iy . apps . lom out . api . AppConfig Exception Ċ import Ġnet . pot ot sk iy . apps . lom out . api . Message Bundle . message Ċ import Ġnet . pot ot sk iy . apps . lom out . api . UNDEFINED _ ROW Ċ import Ġnet . pot ot sk iy . apps . lom out . api . document . Document Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . L om out Dsl Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . Script Build Helper Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . loader . FieldSet Collection Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . loader . Source Data Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . loader . Source Data Collection Ċ import Ġnet . pot ot sk iy . apps . lom out . api . script . loader . Source Sheet Definition . Source Sheet Definition WithName Ċ import Ġnet . pot ot sk iy . apps . lom out . api . sus pect ed Location Ċ import Ġkotlin . reflect . K Class Ċ Ċ /** Ċ Ġ* ĠPrinter Ġline Ġoutput Ġdefinition Ċ Ġ* Ċ Ġ* Ġ@ property Ġfile ĠSource Data ĠThe Ġfile Ġto Ġoutput Ġprinter Ġline Ġresult Ċ Ġ* Ġ@ property Ġprint Head ĠBoolean ĠThe Ġflag Ġto Ġprint Ġheaders Ġin Ġfirst Ġrow Ċ Ġ* Ġ@ property Ġfield Sets ĠField Set Collection ĠThe Ġfields Ġto Ġprint Ċ Ġ* Ġ@ constructor Ċ Ġ*/ Ċ data Ġclass ĠPrinter Output ( ĊĠĠĠ Ġval Ġfile : ĠSource Data , ĊĠĠĠ Ġval Ġprint Head : ĠBoolean , ĊĠĠĠ Ġval Ġfield Sets : ĠField Set Collection Ċ ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠPrinter Ġoutput Ġbuilder Ġclass ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ property Ġhelper ĠConfig Build Helper ĠThe Ġconfiguration Ġbuilder Ġhelper ĊĠĠĠĠ Ġ* Ġ@ property Ġentity Type ĠEntityType ĠThe Ġtarget Ġentity Ġtype ĊĠĠĠĠ Ġ* Ġ@ property Ġprint Head ĠBoolean ĠThe Ġflag Ġto Ġprint Ġor Ġnot Ġheaders ĊĠĠĠĠ Ġ* Ġ@ property Ġfile ĠSource Data ? ĠThe Ġoutput Ġfile ĊĠĠĠĠ Ġ* Ġ@ property Ġfield Sets ĠField Set Collection ? ĠThe Ġfields Ġto Ġprint ĊĠĠĠĠ Ġ* Ġ@ constructor ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ L om out Dsl ĊĠĠĠ Ġclass ĠBuilder < T Ġ: ĠDocument >( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġhelper : ĠScript Build Helper , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġentity Type : ĠK Class < T > ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠPrint Ġor Ġnot Ġheaders , Ġdefault : Ġtrue Ġ( print ) ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ L om out Dsl ĊĠĠĠĠĠĠĠ Ġvar Ġprint Head : ĠBoolean Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfile : ĠSource Data ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġfield Sets : ĠField Set Collection ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġoutput Ġfile ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġfile Ġ{ Ġfile (" file Ġid "); Ġsheet (" sheet Ġname ") Ġ} ĊĠĠĠĠĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġfile ĠâĢĶ Ġreference Ġto Ġfile Ġdefine Ġin Ġfiles Ġblock , Ġ** mandatory ** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġsheet ĠâĢĶ Ġsheet Ġname Ġto Ġprint Ġresult Ġdata , Ġ** mandatory ** ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġblock ĠThe Ġfile Ġdefinition ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ L om out Dsl ĊĠĠĠĠĠĠĠ Ġfun Ġfile ( block : ĠSource Data . Builder . () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . file Ġ= ĠSource Data . Builder ( helper ). apply ( block ). build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( this . file ?. sheet Ġ! is ĠSource Sheet Definition WithName ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠApp Config Exception ( sus pect ed Location (), Ġmessage (" message . error . script . print . sheet . name . no _ regex ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠDefine Ġoutput Ġfield Ġset . ĠMain Ġset Ġis Ġprinted Ġfor Ġeach Ġentity , Ġextra Ġfield Ġset Ġis Ġprinted Ġonly Ġwhen ĊĠĠĠĠĠĠĠĠ Ġ* Ġdata Ġchanged . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġoutput Fields Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠ Ġmain (" set Ġname ") Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġfield (" field Ġname ") ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġfield (" field Ġname ") Ġto Ġattribute (...) ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ... ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠ Ġextra (" set Ġname ") Ġ{ ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġfield (" field Ġname ") Ġto Ġattribute (...) ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġfield (" field Ġname ") ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠĠĠĠĠ Ġ... ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ* Ġ... ĊĠĠĠĠĠĠĠĠ Ġ* Ġ``` ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġ[ main ][ net . pot ot sk iy . apps . lom out . api . script . loader . FieldSet Collection . Builder . main ] ĠâĢĶ Ġmain Ġfield Ġset ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠ Ġfor Ġoutput , Ġ** mandatory , Ġonly Ġone Ġmain Ġset Ġis Ġallowed ** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ* Ġ[ extra ][ net . pot ot sk iy . apps . lom out . api . script . loader . FieldSet Collection . Builder . extra ] ĠâĢĶ Ġextra Ġfield ĊĠĠĠĠĠĠĠĠ Ġ* ĠĠĠĠĠ Ġset , Ġ* optional , Ġ 0 Ġor Ġseveral Ġextra Ġset Ġare Ġallowed * ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġblock ĠOutput Ġfields Ġdefinition ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġ@ L om out Dsl ĊĠĠĠĠĠĠĠ Ġfun Ġoutput Fields ( block : ĠField Set Collection . Builder < T >. () Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . field Sets Ġ= ĠField Set Collection . Builder ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhelper , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġentity Type , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSource Data Collection ( emptyList ()), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUN DEFINED _ ROW , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). apply ( block ). build () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠBuild Ġprinter Ġoutput Ġconfiguration ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠPrinter Output ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuild (): ĠPrinter Output Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPrinter Output ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfile Ġ?: Ġthrow ĠApp Config Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspect ed Location (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" message . error . script . print . out _ file _ not _ defined ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprint Head , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfield Sets Ġ?: Ġthrow ĠApp Config Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspect ed Location (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" message . error . script . print . fieldset . not _ defined ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ