package joist.codegen; import joist.codegen.passes.Pass; import joist.sourcegen.GDirectory; /** Generates our domain objects from the database schema. */ public class Codegen { private final Config config; private final Schema schema; private final GDirectory outputCodegenDirectory; private final GDirectory outputSourceDirectory; /** @param saDataSource should be sa so we can see the information schema stuff */ public Codegen(Config config, Schema schema) { this.config = config; this.schema = schema; this.outputCodegenDirectory = new GDirectory(config.getOutputCodegenDirectory()); this.outputSourceDirectory = new GDirectory(config.getOutputSourceDirectory()); } public void generate() { for (Pass<Codegen> pass : this.config.getCodegenPasses()) { pass.pass(this); } } public Schema getSchema() { return this.schema; } public Config getConfig() { return this.config; } public GDirectory getOutputCodegenDirectory() { return this.outputCodegenDirectory; } public GDirectory getOutputSourceDirectory() { return this.outputSourceDirectory; } }