package joist.codegen.passes; import joist.codegen.Codegen; import joist.codegen.dtos.Entity; import joist.sourcegen.GClass; public class GenerateBuilderClassIfNotExistsPass implements Pass<Codegen> { public void pass(Codegen codegen) { for (Entity entity : codegen.getSchema().getEntities().values()) { if (entity.isCodeEntity()) { continue; } if (!codegen.getOutputSourceDirectory().exists(entity.getFullBuilderClassName())) { GClass builder = codegen.getOutputSourceDirectory().getClass(entity.getFullBuilderClassName()); builder.baseClassName(entity.getFullBuilderCodegenClassName()); builder.getConstructor().argument(entity.getFullClassName(), "instance").body.line("super(instance);"); } else { codegen.getOutputSourceDirectory().markTouched(entity.getFullBuilderClassName()); } } } }