I need to put a // @formatter:on and // @formatter:off comment on top and bottom of each class generated by jOOQ. I have created a JavaGenerator class as follows:
package ch.acme.backend.server.metamodel
import org.jooq.codegen.JavaGenerator
import org.jooq.codegen.JavaWriter
import org.jooq.meta.ArrayDefinition
import org.jooq.meta.EnumDefinition
import org.jooq.meta.PackageDefinition
import org.jooq.meta.RoutineDefinition
import org.jooq.meta.SchemaDefinition
import org.jooq.meta.TableDefinition
import org.jooq.meta.UDTDefinition
class NoFormatJavaGenerator : JavaGenerator() {
override fun generateRecordClassJavadoc(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateArrayClassJavadoc(arrayDefinition: ArrayDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateDaoClassJavadoc(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateEnumClassJavadoc(enum: EnumDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateInterfaceClassJavadoc(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generatePackageClassJavadoc(pkg: PackageDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generatePojoClassJavadoc(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateRoutineClassJavadoc(routine: RoutineDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateSchemaClassJavadoc(schema: SchemaDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateTableClassJavadoc(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateUDTClassJavadoc(udt: UDTDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateUDTRecordClassJavadoc(udt: UDTDefinition, out: JavaWriter) {
out.println("// @formatter:off")
}
override fun generateRecordClassFooter(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateArrayClassFooter(arrayDefinition: ArrayDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateDaoClassFooter(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateEnumClassFooter(enum: EnumDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateInterfaceClassFooter(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generatePackageClassFooter(pkg: PackageDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generatePojoClassFooter(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateRoutineClassFooter(routine: RoutineDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateSchemaClassFooter(schema: SchemaDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateTableClassFooter(table: TableDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateUDTClassFooter(udt: UDTDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
override fun generateUDTRecordClassFooter(udt: UDTDefinition, out: JavaWriter) {
out.println("// @formatter:on")
}
}
This works for most files, but "DefaultCatalog", "Indexes", "Keys", "Public" and "Tables", are not touched by this. How can I add those too?
JavaGeneratorYou could extend the org.jooq.codegen.JavaGenerator.newJavaWriter(File) method and replace the returned implementation by your own extension that prepends and appends these annotations to all of the jOOQ-generated files.
However, I think it would be much simpler to just post-process all the generated files using something like the com.google.code.maven-replacer-plugin, because your particular addition to the files doesn't really need to know anything about the Java code's internal structure. You can just prepend // @formatter:off at the very beginning, and append // @formatter:on at the very end of each generated *.java file. This will then work also for files that have not been generated by jOOQ, but by some other tool.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With