diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java index dc3f516ea9..3339af560d 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/AbstractGenerator.java @@ -68,6 +68,7 @@ abstract class AbstractGenerator implements Generator { boolean generateInstanceFields = true; boolean generateGeneratedAnnotation = false; GeneratedAnnotationType generatedGeneratedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK; + boolean generateGeneratedAnnotationDate = true; boolean generateNonnullAnnotation = false; String generatedNonnullAnnotationType = "javax.annotation.Nonnull"; boolean generateNullableAnnotation = false; @@ -307,6 +308,16 @@ abstract class AbstractGenerator implements Generator { this.generatedGeneratedAnnotationType = generateGeneratedAnnotationType; } + @Override + public boolean generateGeneratedAnnotationDate() { + return generateGeneratedAnnotationDate; + } + + @Override + public void setGenerateGeneratedAnnotationDate(boolean generateGeneratedAnnotationDate) { + this.generateGeneratedAnnotationDate = generateGeneratedAnnotationDate; + } + @Override public boolean generateNonnullAnnotation() { return generateNonnullAnnotation; diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index 7bedfc3139..5b501a243d 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -670,6 +670,8 @@ public class GenerationTool { generator.setGenerateGeneratedAnnotation(g.getGenerate().isGeneratedAnnotation()); if (g.getGenerate().getGeneratedAnnotationType() != null) generator.setGenerateGeneratedAnnotationType(g.getGenerate().getGeneratedAnnotationType()); + if (g.getGenerate().isGeneratedAnnotationDate() != null) + generator.setGenerateGeneratedAnnotationDate(g.getGenerate().isGeneratedAnnotationDate()); if (g.getGenerate().isNonnullAnnotation() != null) generator.setGenerateNonnullAnnotation(g.getGenerate().isNonnullAnnotation()); if (g.getGenerate().getNonnullAnnotationType() != null) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java index 3e23f0c36a..b25a97b675 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/Generator.java @@ -128,35 +128,58 @@ public interface Generator { void setGenerateTableValuedFunctions(boolean generateTableValuedFunctions); /** - * Whether instance fields should be generated (as opposed to static fields) + * Whether instance fields should be generated (as opposed to static fields). */ boolean generateInstanceFields(); /** - * Whether instance fields should be generated (as opposed to static fields) + * Whether instance fields should be generated (as opposed to static + * fields). */ void setGenerateInstanceFields(boolean generateInstanceFields); /** - * Whether the {@link javax.annotation.Generated} or {@link javax.annotation.processing.Generated} annotation should be generated + * Whether the {@link javax.annotation.Generated} or + * {@link javax.annotation.processing.Generated} annotation should be + * generated. */ boolean generateGeneratedAnnotation(); /** - * Whether the {@link javax.annotation.Generated} or {@link javax.annotation.processing.Generated} annotation should be generated + * Whether the {@link javax.annotation.Generated} or + * {@link javax.annotation.processing.Generated} annotation should be + * generated. */ void setGenerateGeneratedAnnotation(boolean generateGeneratedAnnotation); /** - * Whether the {@link javax.annotation.Generated} or {@link javax.annotation.processing.Generated} annotation should be generated + * Whether the {@link javax.annotation.Generated} or + * {@link javax.annotation.processing.Generated} annotation should be + * generated. */ GeneratedAnnotationType generateGeneratedAnnotationType(); /** - * Whether the {@link javax.annotation.Generated} or {@link javax.annotation.processing.Generated} annotation should be generated + * Whether the {@link javax.annotation.Generated} or + * {@link javax.annotation.processing.Generated} annotation should be + * generated. */ void setGenerateGeneratedAnnotationType(GeneratedAnnotationType generateGeneratedAnnotationType); + /** + * Whether the {@link javax.annotation.Generated} or + * {@link javax.annotation.processing.Generated} annotation should include + * the date attribute. + */ + boolean generateGeneratedAnnotationDate(); + + /** + * Whether the {@link javax.annotation.Generated} or + * {@link javax.annotation.processing.Generated} annotation should include + * the date attribute. + */ + void setGenerateGeneratedAnnotationDate(boolean generateGeneratedAnnotationDate); + /** * Whether Nonnull annotations should be generated. *

diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java index 5812d79c49..06349c216f 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -6252,7 +6252,8 @@ public class JavaGenerator extends AbstractGenerator { else out.tab(1).println("},"); - out.tab(1).println("date = \"" + isoDate + "\","); + if (generateGeneratedAnnotationDate()) + out.tab(1).println("date = \"" + isoDate + "\","); out.tab(1).println("comments = \"This class is generated by jOOQ\""); } else { diff --git a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java index f644d42e71..4b053c03e3 100644 --- a/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java +++ b/jOOQ-meta/src/main/java/org/jooq/meta/jaxb/Generate.java @@ -50,6 +50,8 @@ public class Generate implements Serializable, XMLAppendable @XmlSchemaType(name = "string") protected GeneratedAnnotationType generatedAnnotationType = GeneratedAnnotationType.DETECT_FROM_JDK; @XmlElement(defaultValue = "false") + protected Boolean generatedAnnotationDate = false; + @XmlElement(defaultValue = "false") protected Boolean nonnullAnnotation = false; @XmlElement(defaultValue = "javax.annotation.Nonnull") @XmlJavaTypeAdapter(StringAdapter.class) @@ -404,6 +406,30 @@ public class Generate implements Serializable, XMLAppendable this.generatedAnnotationType = value; } + /** + * Whether the {@link javax.annotation.Generated} or {@link javax.annotation.processing.Generated} annotation should include the date attribute. + * + * @return + * possible object is + * {@link Boolean } + * + */ + public Boolean isGeneratedAnnotationDate() { + return generatedAnnotationDate; + } + + /** + * Sets the value of the generatedAnnotationDate property. + * + * @param value + * allowed object is + * {@link Boolean } + * + */ + public void setGeneratedAnnotationDate(Boolean value) { + this.generatedAnnotationDate = value; + } + /** * Whether non-nullable items should be annotated with the annotation type specified in {@link #nonnullAnnotationType}. In SQL and by consequence in jOOQ, non-nullability cannot be guaranteed statically. There may still be some cases (e.g. after unions, outer joins, etc.) where a normally non-null value turns out to be null! * @@ -2068,6 +2094,11 @@ public class Generate implements Serializable, XMLAppendable return this; } + public Generate withGeneratedAnnotationDate(Boolean value) { + setGeneratedAnnotationDate(value); + return this; + } + public Generate withNonnullAnnotation(Boolean value) { setNonnullAnnotation(value); return this; @@ -2447,6 +2478,7 @@ public class Generate implements Serializable, XMLAppendable builder.append("instanceFields", instanceFields); builder.append("generatedAnnotation", generatedAnnotation); builder.append("generatedAnnotationType", generatedAnnotationType); + builder.append("generatedAnnotationDate", generatedAnnotationDate); builder.append("nonnullAnnotation", nonnullAnnotation); builder.append("nonnullAnnotationType", nonnullAnnotationType); builder.append("nullableAnnotation", nullableAnnotation); @@ -2617,6 +2649,15 @@ public class Generate implements Serializable, XMLAppendable return false; } } + if (generatedAnnotationDate == null) { + if (other.generatedAnnotationDate!= null) { + return false; + } + } else { + if (!generatedAnnotationDate.equals(other.generatedAnnotationDate)) { + return false; + } + } if (nonnullAnnotation == null) { if (other.nonnullAnnotation!= null) { return false; @@ -3245,6 +3286,7 @@ public class Generate implements Serializable, XMLAppendable result = ((prime*result)+((instanceFields == null)? 0 :instanceFields.hashCode())); result = ((prime*result)+((generatedAnnotation == null)? 0 :generatedAnnotation.hashCode())); result = ((prime*result)+((generatedAnnotationType == null)? 0 :generatedAnnotationType.hashCode())); + result = ((prime*result)+((generatedAnnotationDate == null)? 0 :generatedAnnotationDate.hashCode())); result = ((prime*result)+((nonnullAnnotation == null)? 0 :nonnullAnnotation.hashCode())); result = ((prime*result)+((nonnullAnnotationType == null)? 0 :nonnullAnnotationType.hashCode())); result = ((prime*result)+((nullableAnnotation == null)? 0 :nullableAnnotation.hashCode())); diff --git a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd index a251b981a1..dae6c882e0 100644 --- a/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd +++ b/jOOQ-meta/src/main/resources/xsd/jooq-codegen-3.14.0.xsd @@ -1139,6 +1139,10 @@ jOOQ version used for source code.]]> + + + date attribute.]]> +