From 70fe0645174c8b5791b6849243a121a064470a3c Mon Sep 17 00:00:00 2001 From: lukaseder Date: Tue, 5 Mar 2019 14:17:42 +0100 Subject: [PATCH] [#7809] Generate overridden Table.fieldsRow() method in generated tables --- .../java/org/jooq/codegen/JavaGenerator.java | 21 +++++++++++++++++++ .../jooq/example/jpa/jooq/tables/Actor.java | 15 ++++++++++++- .../jooq/example/jpa/jooq/tables/Film.java | 15 ++++++++++++- .../example/jpa/jooq/tables/FilmActor.java | 15 ++++++++++++- .../example/jpa/jooq/tables/Language.java | 15 ++++++++++++- .../java/org/jooq/impl/AbstractTable.java | 5 ++++- 6 files changed, 81 insertions(+), 5 deletions(-) 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 93358d3e06..37b57d3c2f 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/JavaGenerator.java @@ -4374,6 +4374,27 @@ public class JavaGenerator extends AbstractGenerator { out.tab(1).println("}"); } + // [#7809] fieldsRow() + int degree = table.getColumns().size(); + String rowType = refRowType(out, table.getColumns()); + + if (generateRecordsImplementingRecordN() && degree > 0 && degree <= Constants.MAX_ROW_DEGREE) { + out.tab(1).header("Row%s type methods", degree); + + if (scala) { + out.println(); + out.tab(1).println("override def fieldsRow : %s[%s] = {", out.ref(Row.class.getName() + degree), rowType); + out.tab(2).println("super.fieldsRow.asInstanceOf[ %s[%s] ]", out.ref(Row.class.getName() + degree), rowType); + out.tab(1).println("}"); + } + else { + out.tab(1).overrideInherit(); + out.tab(1).println("public %s<%s> fieldsRow() {", out.ref(Row.class.getName() + degree), rowType); + out.tab(2).println("return (%s) super.fieldsRow();", out.ref(Row.class.getName() + degree)); + out.tab(1).println("}"); + } + } + // [#1070] Table-valued functions should generate an additional set of call() methods if (table.isTableValuedFunction()) { for (boolean parametersAsField : new boolean[] { false, true }) { diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java index 0524ba0de6..d0f7a0bd98 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Actor.java @@ -13,6 +13,7 @@ import org.jooq.Identity; import org.jooq.Index; import org.jooq.Name; import org.jooq.Record; +import org.jooq.Row3; import org.jooq.Schema; import org.jooq.Table; import org.jooq.TableField; @@ -31,7 +32,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Actor extends TableImpl { - private static final long serialVersionUID = -197980969; + private static final long serialVersionUID = -1700943295; /** * The reference instance of PUBLIC.ACTOR @@ -165,4 +166,16 @@ public class Actor extends TableImpl { public Actor rename(Name name) { return new Actor(name, null); } + + // ------------------------------------------------------------------------- + // Row3 type methods + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row3 fieldsRow() { + return (Row3) super.fieldsRow(); + } } diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java index 5fa35f98ec..513035ba56 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Film.java @@ -14,6 +14,7 @@ import org.jooq.Identity; import org.jooq.Index; import org.jooq.Name; import org.jooq.Record; +import org.jooq.Row6; import org.jooq.Schema; import org.jooq.Table; import org.jooq.TableField; @@ -32,7 +33,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Film extends TableImpl { - private static final long serialVersionUID = 1598245119; + private static final long serialVersionUID = -1567412069; /** * The reference instance of PUBLIC.FILM @@ -197,4 +198,16 @@ public class Film extends TableImpl { public Film rename(Name name) { return new Film(name, null); } + + // ------------------------------------------------------------------------- + // Row6 type methods + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row6 fieldsRow() { + return (Row6) super.fieldsRow(); + } } diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/FilmActor.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/FilmActor.java index 5d68e0b7ac..78ca8259b5 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/FilmActor.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/FilmActor.java @@ -12,6 +12,7 @@ import org.jooq.ForeignKey; import org.jooq.Index; import org.jooq.Name; import org.jooq.Record; +import org.jooq.Row2; import org.jooq.Schema; import org.jooq.Table; import org.jooq.TableField; @@ -30,7 +31,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class FilmActor extends TableImpl { - private static final long serialVersionUID = 1565489533; + private static final long serialVersionUID = -1107628909; /** * The reference instance of PUBLIC.FILM_ACTOR @@ -167,4 +168,16 @@ public class FilmActor extends TableImpl { public FilmActor rename(Name name) { return new FilmActor(name, null); } + + // ------------------------------------------------------------------------- + // Row2 type methods + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } } diff --git a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java index d35bd45f9a..e70031ef71 100644 --- a/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java +++ b/jOOQ-examples/jOOQ-jpa-example/src/main/java/org/jooq/example/jpa/jooq/tables/Language.java @@ -13,6 +13,7 @@ import org.jooq.Identity; import org.jooq.Index; import org.jooq.Name; import org.jooq.Record; +import org.jooq.Row2; import org.jooq.Schema; import org.jooq.Table; import org.jooq.TableField; @@ -31,7 +32,7 @@ import org.jooq.impl.TableImpl; @SuppressWarnings({ "all", "unchecked", "rawtypes" }) public class Language extends TableImpl { - private static final long serialVersionUID = -636203274; + private static final long serialVersionUID = -2110031383; /** * The reference instance of PUBLIC.LANGUAGE @@ -160,4 +161,16 @@ public class Language extends TableImpl { public Language rename(Name name) { return new Language(name, null); } + + // ------------------------------------------------------------------------- + // Row2 type methods + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public Row2 fieldsRow() { + return (Row2) super.fieldsRow(); + } } diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java index 5296aa609f..8bab058dae 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractTable.java @@ -223,9 +223,12 @@ abstract class AbstractTable extends AbstractNamed implements return DSL.using(new DefaultConfiguration()).newRecord(this); } + /* + * Subclasses may override this method + */ @SuppressWarnings({ "rawtypes" }) @Override - public final Row fieldsRow() { + public Row fieldsRow() { return new RowImpl(fields0()); }