【问题标题】:Inserting comments for all classes generated by jooq为 jooq 生成的所有类插入注释
【发布时间】:2019-04-01 12:26:09
【问题描述】:

我需要在 jOOQ 生成的每个类的顶部和底部添加 // @formatter:on// @formatter:off 注释。我创建了一个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”不受此影响。我怎样才能添加这些呢?

【问题讨论】:

  • 是否可以进行后处理步骤,您只需使用这些“注释”修补生成的 Java 代码?似乎是最务实的方法。
  • 好的,这看起来确实更容易。谢谢!

标签: kotlin jooq


【解决方案1】:

扩展JavaGenerator

您可以扩展 org.jooq.codegen.JavaGenerator.newJavaWriter(File) 方法并用您自己的扩展替换返回的实现,该扩展将这些注释添加到所有 jOOQ 生成的文件中。

使用后处理器

但是,我认为使用com.google.code.maven-replacer-plugin 之类的东西对所有生成的文件进行后处理会简单得多,因为您对文件的特殊添加并不需要了解有关 Java 代码内部结构的任何信息.您可以在开头添加// @formatter:off,并在每个生成的*.java 文件的最后添加// @formatter:on。这也适用于不是由 jOOQ 生成的文件,而是由其他工具生成的。

【讨论】:

    猜你喜欢
    • 2018-02-18
    • 2016-05-05
    • 2021-01-22
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 2019-06-11
    • 1970-01-01
    • 2019-10-10
    相关资源
    最近更新 更多