/* ĠCopyright Ġ( c ) Ġ 2 0 2 1 Ġ- Ġ 2 0 2 2 ĠB ui js ĠSoftware Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ* Ċ Ġ*/ Ċ Ċ package Ġdev . bui js . kl utter . core Ċ Ċ /** Ċ Ġ* ĠThe Ġpurpose Ġof Ġthis Ġclass Ġis Ġto Ġcreate Ġnew Ġfiles . Ċ Ġ* ĠA ĠK l utter File Generator Ġuses Ġa Ġ[ Kl utter Printer ] Ġand Ġa Ġ[ Kl utter Writer ] Ċ Ġ* Ġto Ġencaps ulate Ġthe Ġfunctionality Ġfor Ġcreating Ġthe Ġcontent Ġof Ġa Ġfile Ċ Ġ* Ġand Ġactually Ġwriting Ġthe Ġcontent Ġto Ġa Ġfile Ġlocation . Ċ Ġ*/ Ċ abstract Ġclass ĠK l utter File Generator Ġ{ ĊĊ Ġ/** ĊĠ Ġ* ĠUse Ġthe Ġ[ printer ] Ġfunction Ġto Ġcreate Ġthe Ġfile Ġcontent ĊĠ Ġ* Ġand Ġpass Ġit Ġto Ġthe Ġ[ writer ] Ġfun Ġto Ġcreate Ġa Ġnew Ġfile . ĊĠ Ġ* ĊĠ Ġ* ĠIf Ġthis Ġmethod Ġis Ġnot Ġoverridden Ġit Ġwill Ġfunction Ġunder Ġthe ĊĠ Ġ* Ġassumption Ġthat Ġthe Ġ[ writer ] Ġfunction Ġcalls Ġthe Ġ[ printer ] Ġfunction ĊĠ Ġ* Ġand Ġwrites Ġit Ġoutput Ġto Ġa Ġlocation Ġspecified Ġin Ġthe Ġ[ Kl utter Writer ] Ġclass . ĊĠ Ġ* ĊĠ Ġ* Ġ@ return Ġlogger Ġwith Ġinfo Ġabout Ġthe Ġsteps Ġdone Ġby Ġthe Ġgenerator . ĊĠ Ġ*/ Ċ Ġopen Ġfun Ġgenerate () Ġ= Ġwriter (). write () ĊĊ Ġ/** ĊĠ Ġ* Ġ@ return Ġa Ġ[ Kl utter Printer ] Ġto Ġcreate Ġthe Ġcontent Ġof Ġa Ġfile . ĊĠ Ġ*/ Ċ Ġabstract Ġfun Ġprinter (): ĠK l utter Printer ĊĊ Ġ/** ĊĠ Ġ* Ġ@ return Ġa Ġ[ Kl utter Writer ] Ġto Ġwrite Ġthe Ġcontent Ġto Ġa Ġfile Ġlocation . ĊĠ Ġ*/ Ċ Ġabstract Ġfun Ġwriter (): ĠK l utter Writer Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠUtility Ġinterface Ġwhich Ġtakes Ġ( generated ) Ġfile Ġcontent Ġand Ġwrites Ġit Ġto Ġa Ġfile . Ċ Ġ* ĠUsed Ġfor Ġediting Ġand / or Ġcreating Ġclasses Ġand Ġconfiguration Ġfiles . Ċ Ġ* Ċ Ġ* ĠK l utter Writer Ġis Ġan Ġclass Ġto Ġbe Ġused Ġby Ġ[ Kl utter File Generator ] Ġand Ċ Ġ* Ġshould Ġnot Ġbe Ġexposed Ġfor Ġexternal Ġusage . Ċ Ġ*/ Ċ interface ĠK l utter Writer Ġ{ ĊĊ Ġ/** ĊĠ Ġ* ĠCreates Ġa Ġnew Ġfile Ġand Ġwrites Ġthe Ġcontent Ġto Ġsaid Ġfile . ĊĠ Ġ*/ Ċ Ġfun Ġwrite () Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġpurpose Ġof Ġthis Ġclass Ġis Ġto Ġoutput Ġthe Ġcontent Ġof Ġa Ġfile . Ċ Ġ* Ċ Ġ* ĠK l utter Printer Ġis Ġan Ġclass Ġto Ġbe Ġused Ġby Ġ[ Kl utter File Generator ] Ġand Ċ Ġ* Ġshould Ġnot Ġbe Ġexposed Ġfor Ġexternal Ġusage . Ċ Ġ*/ Ċ interface ĠK l utter Printer Ġ{ ĊĊ Ġ/** ĊĠ Ġ* Ġ@ return Ġthe Ġcreated Ġfile Ġcontent Ġas ĠString . ĊĠ Ġ*/ Ċ Ġfun Ġprint (): ĠString Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġpurpose Ġof Ġa ĠK l utter Producer Ġis Ġto Ġproduce Ġa Ġset Ġof Ġfiles . Ċ Ġ*/ Ċ interface ĠK l utter Producer Ġ{ ĊĊ Ġ/** ĊĠ Ġ* ĠCreates Ġone Ġor Ġmore Ġfiles . ĊĠ Ġ*/ Ċ Ġfun Ġproduce () Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠUtility Ġinterface Ġwhich Ġprocesses Ġa Ġgiven Ġfile Ġand Ġmay Ġor Ġmay Ġnot Ġchange Ġit 's Ġcontent . Ċ Ġ*/ Ċ interface ĠK l utter Visitor Ġ{ ĊĊ Ġ/** ĊĠ Ġ* ĠReads Ġthe Ġcontent Ġof Ġa Ġfile Ġand Ġdetermines Ġif Ġany Ġedit ting Ġshould Ġbe Ġdone . ĊĠ Ġ*/ Ċ Ġfun Ġvisit () Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠClass Ġwhich Ġcontains Ġall Ġlogic Ġto Ġfully Ġexecute Ġa Ġfunctional Ġtask . Ċ Ġ*/ Ċ interface ĠK l utter Task Ġ{ ĊĊ Ġfun Ġrun () Ċ Ċ }