package Ġcom . ro han pr ab hu . gradle . plugins . kd jooq Ċ Ċ import Ġnu . st uder . gradle . util . Objects Ċ import Ġorg . gradle . api . Action Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . file . File Collection Ċ import Ġorg . gradle . api . tasks .* Ċ import Ġorg . gradle . process . Exec Result Ċ import Ġorg . gradle . process . Java Exec Spec Ċ import Ġorg . jooq . Constants Ċ import Ġorg . jooq . codegen . Generation Tool Ċ import Ġorg . jooq . meta . jax b . Configuration Ċ import Ġjava . io . File Ċ import Ġjavax . xml . XML Constants Ċ import Ġjavax . xml . bind . JAXB Context Ċ import Ġjavax . xml . validation . Schema Factory Ċ Ċ open Ġclass ĠJ oo q Code Generation Task Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġ@ Internal ĊĠĠĠ Ġlateinit Ġvar Ġj oo q Configuration Ġ: ĠJ oo q Configuration ĊĊĠĠĠ Ġ@ Classpath ĊĠĠĠ Ġ@ Input Files ĊĠĠĠ Ġlateinit Ġvar Ġtask Classpath Ġ: ĠFile Collection ĊĊĠĠĠ Ġ@ Internal ĊĠĠĠ Ġvar Ġjava Exec Action : ĠAction < in ĠJava Exec Spec >? Ġ= Ġnull ĊĊĠĠĠ Ġ@ Internal ĊĠĠĠ Ġvar Ġexec Result Handler Ġ: ĠAction < in ĠExec Result >? Ġ= Ġnull ĊĊĠĠĠ Ġ@ get : Input ĊĠĠĠ Ġlateinit Ġvar Ġdatabase Source Locations Ġ: ĠList < Any > ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġgenerate Sources () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconfig File Ġ= ĠFile ( project . build Dir , Ġ" tmp / jooq / config -${ jooq Configuration . config Name }. xml ") ĊĠĠĠĠĠĠĠ Ġwrite ConfigFile ( configFile ) ĊĠĠĠĠĠĠĠ Ġval Ġexec Result Ġ= Ġexecute J oo q ( configFile ) ĊĊĠĠĠĠĠĠĠ Ġexec Result Handler ?. execute ( exec Result ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġconfigure Additional Inputs () Ġ{ ĊĠĠĠĠĠĠĠ Ġdatabase Source Locations Ġ= Ġj oo q Configuration . database Sources ĊĠĠĠĠĠĠĠ Ġj oo q Configuration . database Sources . forEach Ġ{ Ġinputs . dir ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Input ĊĠĠĠ Ġfun ĠgetConfig Hash () Ġ: ĠInt Ġ= ĠObjects . deep HashCode ( jooq Configuration . configuration ) ĊĊĠĠĠ Ġ@ Output Directory ĊĠĠĠ Ġfun Ġget Output Directory () Ġ: ĠFile Ġ= ĊĠĠĠĠĠĠĠ Ġproject . file ( jooq Configuration . configuration . generator . target . directory ) ĊĊĠĠĠ Ġprivate Ġfun Ġwrite ConfigFile ( file : ĠFile ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġschema Ġ= ĠSchema Factory . newInstance ( XML Constants . W 3 C _ XML _ SCHEMA _ NS _ URI ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. new Schema ( Generation Tool :: class . java . getResource ("/ xsd /${ Constants . X SD _ CODE GEN } ")) ĊĊĠĠĠĠĠĠĠ Ġval Ġmarshaller Ġ= ĠJAXB Context . newInstance ( Configuration :: class . java ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . create Marshaller (). apply Ġ{ Ġset Schema ( schema ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfile . parent File . mkdir s () ĊĠĠĠĠĠĠĠ Ġmarshaller . marshal ( jooq Configuration . configuration , Ġfile ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġexecute J oo q ( file : ĠFile ) Ġ: ĠExec Result Ġ= ĊĠĠĠĠĠĠĠ Ġproject . java exec Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( task Classpath . files . map Ġ{ Ġit . name Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmain Ġ= ĠGeneration Tool :: class . qualified Name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclasspath Ġ= Ġtask Classpath ĊĠĠĠĠĠĠĠĠĠĠĠ Ġargs Ġ= ĠlistOf ( file . absolute Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Exec Action ?. execute ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ċ } Ċ