Вставка комментариев для всех классов, сгенерированных jooq - PullRequest
0 голосов
/ 28 октября 2018

Мне нужно поместить комментарии // @formatter:on и // @formatter:off сверху и снизу каждого класса, сгенерированного jOOQ.Я создал класс JavaGenerator следующим образом:

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")
    }

}

Это работает для большинства файлов, но «DefaultCatalog», «Indexes», «Keys», «Public» и «Tables» не затрагиваютсяэтим.Как я могу добавить их тоже?

1 Ответ

0 голосов
/ 29 октября 2018

Расширение JavaGenerator

Вы можете расширить метод org.jooq.codegen.JavaGenerator.newJavaWriter(File) и заменить возвращаемую реализацию своим собственным расширением, которое добавляет и добавляет эти аннотации ко всем сгенерированным jOOQ файлам.

Использование постпроцессора

Однако я думаю, что было бы намного проще просто пост-обработать все сгенерированные файлы, используя что-то вроде com.google.code.maven-replacer-plugin, потому что ваше конкретное добавление к файлам на самом деле не нужнознать что-нибудь о внутренней структуре кода Java.Вы можете просто добавить // @formatter:off в самом начале и добавить // @formatter:on в самом конце каждого сгенерированного *.java файла.Тогда это будет работать и для файлов, которые не были сгенерированы jOOQ, но каким-либо другим инструментом.

...