package Ġlogic . generator Ċ Ċ import Ġcom . github . must ache java . Default Must ache Factory Ċ import Ġmodel . Definition Ċ import Ġjava . io . Buffered Writer Ċ import Ġjava . io . FileWriter Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ Ċ /** Ċ Ġ* ĠJava ĠEntity Ġfile Ġgenerator . Ċ Ġ*/ Ċ class ĠJava Entity Generator Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠJAVA _ EXTENSION Ġ= Ġ". java " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġexecute ( definition : ĠDefinition ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠDefault Must ache Factory () ĊĠĠĠĠĠĠĠ Ġval Ġcurrent Dir Ġ= ĠPaths . get (" "). to AbsolutePath () ĊĠĠĠĠĠĠĠ Ġval Ġoutput Root Dir Ġ= ĠPaths . get ( current Dir . toString (), Ġ" src / main / java /") ĊĠĠĠĠĠĠĠ Ġoutput Root Dir . to File (). delete Re cursively () ĊĊĠĠĠĠĠĠĠ Ġ// Ġgenerate ĠEnums ĊĠĠĠĠĠĠĠ Ġgenerate Enums ( definition , Ġoutput Root Dir , Ġfactory ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġgenerate ĠEntities ĊĠĠĠĠĠĠĠ Ġgenerate Entities ( definition , Ġoutput Root Dir , Ġfactory ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Enums ( definition : ĠDefinition , Ġoutput Root Dir : ĠPath , Ġfactory : ĠDefault Must ache Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmust ache Ġ= Ġfactory . compile (" Enum . must ache ") ĊĠĠĠĠĠĠĠ Ġdefinition . enum Map . map Values Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Dir Ġ= ĠPaths . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Root Dir . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . namespace . replace ('.', Ġ'/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Dir . to File (). mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠPaths . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Dir . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . value . name Ġ+ ĠJAVA _ EXTENSION , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrintWriter ( Buffered Writer ( FileWriter ( outputFile . to File ())) ). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache . execute ( w , Ġit . value ). flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġgenerate Entities ( definition : ĠDefinition , Ġoutput Root Dir : ĠPath , Ġfactory : ĠDefault Must ache Factory ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmust ache Ġ= Ġfactory . compile (" Entity . must ache ") ĊĠĠĠĠĠĠĠ Ġdefinition . entities . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġoutput Dir Ġ= ĠPaths . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Root Dir . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . namespace . replace ('.', Ġ'/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Dir . to File (). mkdir s () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠoutputFile Ġ= ĠPaths . get ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Dir . toString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . java Name () Ġ+ ĠJAVA _ EXTENSION , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPrintWriter ( Buffered Writer ( FileWriter ( outputFile . to File ())) ). use Ġ{ Ġw Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmust ache . execute ( w , Ġit ). flush () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ