From 5cf50f1b556538ee659a5e4b06d4dc772eaefe23 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Fri, 24 Aug 2012 10:21:53 +0200 Subject: [PATCH] [#430] Add support for the Firebird database - Added SEQUENCE support --- .../jooq/util/firebird/FirebirdDatabase.java | 32 ++++++--- .../org/jooq/util/firebird/rdb/Tables.java | 10 +-- .../firebird/rdb/tables/Rdb$dependencies.java | 65 ------------------- .../firebird/rdb/tables/Rdb$generators.java | 60 +++++++++++++++++ .../lukas/firebird/rdb.properties | 2 +- .../firebird/generatedclasses/Sequences.java | 27 ++++++++ 6 files changed, 115 insertions(+), 81 deletions(-) delete mode 100644 jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$dependencies.java create mode 100644 jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$generators.java create mode 100644 jOOQ-test/src/org/jooq/test/firebird/generatedclasses/Sequences.java diff --git a/jOOQ-meta/src/main/java/org/jooq/util/firebird/FirebirdDatabase.java b/jOOQ-meta/src/main/java/org/jooq/util/firebird/FirebirdDatabase.java index 0e401962da..16e640ffa6 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/firebird/FirebirdDatabase.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/firebird/FirebirdDatabase.java @@ -35,6 +35,7 @@ */ package org.jooq.util.firebird; +import static org.jooq.util.firebird.rdb.Tables.RDB$GENERATORS; import static org.jooq.util.firebird.rdb.Tables.RDB$INDEX_SEGMENTS; import static org.jooq.util.firebird.rdb.Tables.RDB$REF_CONSTRAINTS; import static org.jooq.util.firebird.rdb.Tables.RDB$RELATIONS; @@ -45,12 +46,14 @@ import java.util.ArrayList; import java.util.List; import org.jooq.Record; -import org.jooq.Result; import org.jooq.impl.Factory; import org.jooq.util.AbstractDatabase; import org.jooq.util.ArrayDefinition; import org.jooq.util.ColumnDefinition; +import org.jooq.util.DataTypeDefinition; +import org.jooq.util.DefaultDataTypeDefinition; import org.jooq.util.DefaultRelations; +import org.jooq.util.DefaultSequenceDefinition; import org.jooq.util.EnumDefinition; import org.jooq.util.PackageDefinition; import org.jooq.util.RoutineDefinition; @@ -131,7 +134,7 @@ public class FirebirdDatabase extends AbstractDatabase { Rdb$indexSegments isp = RDB$INDEX_SEGMENTS.as("isp"); Rdb$indexSegments isf = RDB$INDEX_SEGMENTS.as("isf"); - Result fetch = create() + for (Record record : create() .selectDistinct( fk.RDB$CONSTRAINT_NAME.trim().as("fk"), fk.RDB$RELATION_NAME.trim().as("fkTable"), @@ -147,10 +150,7 @@ public class FirebirdDatabase extends AbstractDatabase { .orderBy( fk.RDB$CONSTRAINT_NAME.asc(), isf.RDB$FIELD_POSITION.asc()) - .fetch(); - - System.out.println(fetch.format(1000)); - for (Record record : fetch) { + .fetch()) { String pkName = record.getValue("pk", String.class); String pkTable = record.getValue("pkTable", String.class); @@ -179,6 +179,20 @@ public class FirebirdDatabase extends AbstractDatabase { @Override protected List getSequences0() throws SQLException { List result = new ArrayList(); + + for (String sequenceName : create() + .select(RDB$GENERATORS.RDB$GENERATOR_NAME.trim()) + .from(RDB$GENERATORS) + .orderBy(1) + .fetch(RDB$GENERATORS.RDB$GENERATOR_NAME.trim())) { + + SchemaDefinition schema = getSchemata().get(0); + DataTypeDefinition type = new DefaultDataTypeDefinition( + this, schema, FirebirdDataType.BIGINT.getTypeName(), 0, 0, 0); + + result.add(new DefaultSequenceDefinition(schema, sequenceName, type )); + } + return result; } @@ -186,13 +200,11 @@ public class FirebirdDatabase extends AbstractDatabase { protected List getTables0() throws SQLException { List result = new ArrayList(); - for (Record recTableName : create() + for (String tableName : create() .select(RDB$RELATIONS.RDB$RELATION_NAME.trim()) .from(RDB$RELATIONS) .orderBy(1) - .fetch()) { - - String tableName = recTableName.getValueAsString(0); + .fetch(0, String.class)) { TableDefinition tableDef = new FirebirdTableDefinition(getSchemata().get(0), tableName, ""); result.add(tableDef); diff --git a/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/Tables.java b/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/Tables.java index a9233f705d..66fb15aa9c 100644 --- a/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/Tables.java +++ b/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/Tables.java @@ -12,16 +12,16 @@ package org.jooq.util.firebird.rdb; comments = "This class is generated by jOOQ") public final class Tables { - /** - * The table RDB$DEPENDENCIES - */ - public static final org.jooq.util.firebird.rdb.tables.Rdb$dependencies RDB$DEPENDENCIES = org.jooq.util.firebird.rdb.tables.Rdb$dependencies.RDB$DEPENDENCIES; - /** * The table RDB$FIELDS */ public static final org.jooq.util.firebird.rdb.tables.Rdb$fields RDB$FIELDS = org.jooq.util.firebird.rdb.tables.Rdb$fields.RDB$FIELDS; + /** + * The table RDB$GENERATORS + */ + public static final org.jooq.util.firebird.rdb.tables.Rdb$generators RDB$GENERATORS = org.jooq.util.firebird.rdb.tables.Rdb$generators.RDB$GENERATORS; + /** * The table RDB$INDEX_SEGMENTS */ diff --git a/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$dependencies.java b/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$dependencies.java deleted file mode 100644 index 07941ff59e..0000000000 --- a/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$dependencies.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * This class is generated by jOOQ - */ -package org.jooq.util.firebird.rdb.tables; - -/** - * This class is generated by jOOQ. - */ -@javax.annotation.Generated(value = {"http://www.jooq.org", "2.5.0"}, - comments = "This class is generated by jOOQ") -public class Rdb$dependencies extends org.jooq.impl.TableImpl { - - private static final long serialVersionUID = 2134234347; - - /** - * The singleton instance of RDB$DEPENDENCIES - */ - public static final org.jooq.util.firebird.rdb.tables.Rdb$dependencies RDB$DEPENDENCIES = new org.jooq.util.firebird.rdb.tables.Rdb$dependencies(); - - /** - * The class holding records for this type - */ - @Override - public java.lang.Class getRecordType() { - return org.jooq.Record.class; - } - - /** - * The table column RDB$DEPENDENCIES.RDB$DEPENDENT_NAME - */ - public final org.jooq.TableField RDB$DEPENDENT_NAME = createField("RDB$DEPENDENT_NAME", org.jooq.impl.SQLDataType.CHAR, this); - - /** - * The table column RDB$DEPENDENCIES.RDB$DEPENDED_ON_NAME - */ - public final org.jooq.TableField RDB$DEPENDED_ON_NAME = createField("RDB$DEPENDED_ON_NAME", org.jooq.impl.SQLDataType.CHAR, this); - - /** - * The table column RDB$DEPENDENCIES.RDB$FIELD_NAME - */ - public final org.jooq.TableField RDB$FIELD_NAME = createField("RDB$FIELD_NAME", org.jooq.impl.SQLDataType.CHAR, this); - - /** - * The table column RDB$DEPENDENCIES.RDB$DEPENDENT_TYPE - */ - public final org.jooq.TableField RDB$DEPENDENT_TYPE = createField("RDB$DEPENDENT_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this); - - /** - * The table column RDB$DEPENDENCIES.RDB$DEPENDED_ON_TYPE - */ - public final org.jooq.TableField RDB$DEPENDED_ON_TYPE = createField("RDB$DEPENDED_ON_TYPE", org.jooq.impl.SQLDataType.SMALLINT, this); - - public Rdb$dependencies() { - super("RDB$DEPENDENCIES"); - } - - public Rdb$dependencies(java.lang.String alias) { - super(alias, null, org.jooq.util.firebird.rdb.tables.Rdb$dependencies.RDB$DEPENDENCIES); - } - - @Override - public org.jooq.util.firebird.rdb.tables.Rdb$dependencies as(java.lang.String alias) { - return new org.jooq.util.firebird.rdb.tables.Rdb$dependencies(alias); - } -} diff --git a/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$generators.java b/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$generators.java new file mode 100644 index 0000000000..aa6427b819 --- /dev/null +++ b/jOOQ-meta/src/main/java/org/jooq/util/firebird/rdb/tables/Rdb$generators.java @@ -0,0 +1,60 @@ +/** + * This class is generated by jOOQ + */ +package org.jooq.util.firebird.rdb.tables; + +/** + * This class is generated by jOOQ. + */ +@javax.annotation.Generated(value = {"http://www.jooq.org", "2.5.0"}, + comments = "This class is generated by jOOQ") +public class Rdb$generators extends org.jooq.impl.TableImpl { + + private static final long serialVersionUID = 152901621; + + /** + * The singleton instance of RDB$GENERATORS + */ + public static final org.jooq.util.firebird.rdb.tables.Rdb$generators RDB$GENERATORS = new org.jooq.util.firebird.rdb.tables.Rdb$generators(); + + /** + * The class holding records for this type + */ + @Override + public java.lang.Class getRecordType() { + return org.jooq.Record.class; + } + + /** + * The table column RDB$GENERATORS.RDB$GENERATOR_NAME + */ + public final org.jooq.TableField RDB$GENERATOR_NAME = createField("RDB$GENERATOR_NAME", org.jooq.impl.SQLDataType.CHAR, this); + + /** + * The table column RDB$GENERATORS.RDB$GENERATOR_ID + */ + public final org.jooq.TableField RDB$GENERATOR_ID = createField("RDB$GENERATOR_ID", org.jooq.impl.SQLDataType.SMALLINT, this); + + /** + * The table column RDB$GENERATORS.RDB$SYSTEM_FLAG + */ + public final org.jooq.TableField RDB$SYSTEM_FLAG = createField("RDB$SYSTEM_FLAG", org.jooq.impl.SQLDataType.SMALLINT, this); + + /** + * The table column RDB$GENERATORS.RDB$DESCRIPTION + */ + public final org.jooq.TableField RDB$DESCRIPTION = createField("RDB$DESCRIPTION", org.jooq.impl.SQLDataType.CLOB, this); + + public Rdb$generators() { + super("RDB$GENERATORS"); + } + + public Rdb$generators(java.lang.String alias) { + super(alias, null, org.jooq.util.firebird.rdb.tables.Rdb$generators.RDB$GENERATORS); + } + + @Override + public org.jooq.util.firebird.rdb.tables.Rdb$generators as(java.lang.String alias) { + return new org.jooq.util.firebird.rdb.tables.Rdb$generators(alias); + } +} diff --git a/jOOQ-test/configuration/org/jooq/configuration/lukas/firebird/rdb.properties b/jOOQ-test/configuration/org/jooq/configuration/lukas/firebird/rdb.properties index 2f7d71d70b..3fcc32a67f 100644 --- a/jOOQ-test/configuration/org/jooq/configuration/lukas/firebird/rdb.properties +++ b/jOOQ-test/configuration/org/jooq/configuration/lukas/firebird/rdb.properties @@ -6,7 +6,7 @@ jdbc.Password=TEST generator=org.jooq.util.DefaultGenerator generator.database=org.jooq.util.firebird.FirebirdDatabase -generator.database.includes=RDB\\$RELATIONS,RDB\\$RELATION_FIELDS,RDB\\$FIELDS,RDB\\$RELATION_CONSTRAINTS,RDB\\$REF_CONSTRAINTS,RDB\\$DEPENDENCIES,RDB\\$INDEX_SEGMENTS +generator.database.includes=RDB\\$RELATIONS,RDB\\$RELATION_FIELDS,RDB\\$FIELDS,RDB\\$RELATION_CONSTRAINTS,RDB\\$REF_CONSTRAINTS,RDB\\$INDEX_SEGMENTS,RDB\\$GENERATORS generator.database.excludes= generator.generate.deprecated=false generator.generate.fields=both diff --git a/jOOQ-test/src/org/jooq/test/firebird/generatedclasses/Sequences.java b/jOOQ-test/src/org/jooq/test/firebird/generatedclasses/Sequences.java new file mode 100644 index 0000000000..e9186eda4e --- /dev/null +++ b/jOOQ-test/src/org/jooq/test/firebird/generatedclasses/Sequences.java @@ -0,0 +1,27 @@ +/** + * This class is generated by jOOQ + */ +package org.jooq.test.firebird.generatedclasses; + +/** + * This class is generated by jOOQ. + * + * Convenience access to all sequences in + */ +public final class Sequences { + + /** + * The sequence SQL$DEFAULT + */ + public static final org.jooq.Sequence SQL$DEFAULT = new org.jooq.impl.SequenceImpl("SQL$DEFAULT", null, org.jooq.impl.SQLDataType.BIGINT); + + /** + * The sequence S_AUTHOR_ID + */ + public static final org.jooq.Sequence S_AUTHOR_ID = new org.jooq.impl.SequenceImpl("S_AUTHOR_ID", null, org.jooq.impl.SQLDataType.BIGINT); + + /** + * No instances + */ + private Sequences() {} +}