|
1 | 1 | package ch.ergon.adam.gradleplugin.util;
|
2 | 2 |
|
3 |
| -import ch.ergon.adam.core.db.schema.DataType; |
4 | 3 | import ch.ergon.adam.core.db.schema.Field;
|
5 | 4 | import ch.ergon.adam.core.db.schema.Table;
|
6 | 5 | import org.jooq.Name;
|
@@ -33,57 +32,69 @@ protected List<ColumnDefinition> getElements0() throws SQLException {
|
33 | 32 |
|
34 | 33 | private DataTypeDefinition dataTypeDefinition(Field field) {
|
35 | 34 | return new DefaultDataTypeDefinition(getDatabase(), getSchema(),
|
36 |
| - typeName(field.getDataType()), field.getLength(), field.getPrecision(), field.getScale(), |
| 35 | + typeName(field), field.getLength(), field.getPrecision(), field.getScale(), |
37 | 36 | field.isNullable(), field.getDefaultValue(), getUserType(field));
|
38 | 37 | }
|
39 | 38 |
|
40 |
| - private String typeName(DataType type) { |
41 |
| - var jooqType = switch (type) { |
42 |
| - case BIGINT -> SQLDataType.BIGINT; |
43 |
| - case BIGINTUNSIGNED -> SQLDataType.BIGINTUNSIGNED; |
44 |
| - case BINARY -> SQLDataType.BINARY; |
45 |
| - case BIT -> SQLDataType.BIT; |
46 |
| - case BLOB -> SQLDataType.BLOB; |
47 |
| - case BOOLEAN -> SQLDataType.BOOLEAN; |
48 |
| - case CHAR -> SQLDataType.CHAR; |
49 |
| - case CLOB -> SQLDataType.CLOB; |
50 |
| - case DATE -> SQLDataType.DATE; |
51 |
| - case DECIMAL -> SQLDataType.DECIMAL; |
52 |
| - case DECIMAL_INTEGER -> SQLDataType.DECIMAL_INTEGER; |
53 |
| - case DOUBLE -> SQLDataType.DOUBLE; |
54 |
| - case ENUM -> SQLDataType.VARCHAR; |
55 |
| - case FLOAT -> SQLDataType.FLOAT; |
56 |
| - case INTEGER -> SQLDataType.INTEGER; |
57 |
| - case INTEGERUNSIGNED -> SQLDataType.INTEGERUNSIGNED; |
58 |
| - case INTERVALDAYTOSECOND -> SQLDataType.INTERVALDAYTOSECOND; |
59 |
| - case INTERVALYEARTOMONTH -> SQLDataType.INTERVALYEARTOMONTH; |
60 |
| - case INTERVALYEARTOSECOND -> SQLDataType.INTERVAL; |
61 |
| - case LOCALDATE -> SQLDataType.LOCALDATE; |
62 |
| - case LOCALDATETIME -> SQLDataType.LOCALDATETIME; |
63 |
| - case LOCALTIME -> SQLDataType.LOCALTIME; |
64 |
| - case LONGNVARCHAR -> SQLDataType.LONGNVARCHAR; |
65 |
| - case LONGVARBINARY -> SQLDataType.LONGVARBINARY; |
66 |
| - case LONGVARCHAR -> SQLDataType.LONGVARCHAR; |
67 |
| - case NCHAR -> SQLDataType.NCHAR; |
68 |
| - case NCLOB -> SQLDataType.NCLOB; |
69 |
| - case NUMERIC -> SQLDataType.NUMERIC; |
70 |
| - case NVARCHAR -> SQLDataType.NVARCHAR; |
71 |
| - case OFFSETDATETIME -> SQLDataType.OFFSETDATETIME; |
72 |
| - case OFFSETTIME -> SQLDataType.OFFSETTIME; |
73 |
| - case REAL -> SQLDataType.REAL; |
74 |
| - case SMALLINT -> SQLDataType.SMALLINT; |
75 |
| - case SMALLINTUNSIGNED -> SQLDataType.SMALLINTUNSIGNED; |
76 |
| - case TIME -> SQLDataType.TIME; |
77 |
| - case TIMESTAMP -> SQLDataType.TIMESTAMP; |
78 |
| - case TIMESTAMPWITHTIMEZONE -> SQLDataType.TIMESTAMPWITHTIMEZONE; |
79 |
| - case TIMEWITHTIMEZONE -> SQLDataType.TIMEWITHTIMEZONE; |
80 |
| - case TINYINT -> SQLDataType.TINYINT; |
81 |
| - case TINYINTUNSIGNED -> SQLDataType.TINYINTUNSIGNED; |
82 |
| - case UUID -> SQLDataType.UUID; |
83 |
| - case VARBINARY -> SQLDataType.VARBINARY; |
84 |
| - case VARCHAR -> SQLDataType.VARCHAR; |
85 |
| - }; |
86 |
| - return jooqType.getTypeName(); |
| 39 | + private String typeName(Field field) { |
| 40 | + var jooqType = switch (field.getDataType()) { |
| 41 | + case BIGINT -> SQLDataType.BIGINT; |
| 42 | + case BIGINTUNSIGNED -> SQLDataType.BIGINTUNSIGNED; |
| 43 | + case BINARY -> SQLDataType.BINARY; |
| 44 | + case BIT -> SQLDataType.BIT; |
| 45 | + case BLOB -> SQLDataType.BLOB; |
| 46 | + case BOOLEAN -> SQLDataType.BOOLEAN; |
| 47 | + case CHAR -> SQLDataType.CHAR; |
| 48 | + case CLOB -> SQLDataType.CLOB; |
| 49 | + case DATE -> SQLDataType.DATE; |
| 50 | + case DECIMAL -> SQLDataType.DECIMAL; |
| 51 | + case DECIMAL_INTEGER -> SQLDataType.DECIMAL_INTEGER; |
| 52 | + case DOUBLE -> SQLDataType.DOUBLE; |
| 53 | + case ENUM -> SQLDataType.VARCHAR; |
| 54 | + case FLOAT -> SQLDataType.FLOAT; |
| 55 | + case INTEGER -> SQLDataType.INTEGER; |
| 56 | + case INTEGERUNSIGNED -> SQLDataType.INTEGERUNSIGNED; |
| 57 | + case INTERVALDAYTOSECOND -> SQLDataType.INTERVALDAYTOSECOND; |
| 58 | + case INTERVALYEARTOMONTH -> SQLDataType.INTERVALYEARTOMONTH; |
| 59 | + case INTERVALYEARTOSECOND -> SQLDataType.INTERVAL; |
| 60 | + case LOCALDATE -> SQLDataType.LOCALDATE; |
| 61 | + case LOCALDATETIME -> SQLDataType.LOCALDATETIME; |
| 62 | + case LOCALTIME -> SQLDataType.LOCALTIME; |
| 63 | + case LONGNVARCHAR -> SQLDataType.LONGNVARCHAR; |
| 64 | + case LONGVARBINARY -> SQLDataType.LONGVARBINARY; |
| 65 | + case LONGVARCHAR -> SQLDataType.LONGVARCHAR; |
| 66 | + case NCHAR -> SQLDataType.NCHAR; |
| 67 | + case NCLOB -> SQLDataType.NCLOB; |
| 68 | + case NUMERIC -> SQLDataType.NUMERIC; |
| 69 | + case NVARCHAR -> SQLDataType.NVARCHAR; |
| 70 | + case OFFSETDATETIME -> SQLDataType.OFFSETDATETIME; |
| 71 | + case OFFSETTIME -> SQLDataType.OFFSETTIME; |
| 72 | + case REAL -> SQLDataType.REAL; |
| 73 | + case SMALLINT -> SQLDataType.SMALLINT; |
| 74 | + case SMALLINTUNSIGNED -> SQLDataType.SMALLINTUNSIGNED; |
| 75 | + case TIME -> SQLDataType.TIME; |
| 76 | + case TIMESTAMP -> SQLDataType.TIMESTAMP; |
| 77 | + case TIMESTAMPWITHTIMEZONE -> SQLDataType.TIMESTAMPWITHTIMEZONE; |
| 78 | + case TIMEWITHTIMEZONE -> SQLDataType.TIMEWITHTIMEZONE; |
| 79 | + case TINYINT -> SQLDataType.TINYINT; |
| 80 | + case TINYINTUNSIGNED -> SQLDataType.TINYINTUNSIGNED; |
| 81 | + case UUID -> SQLDataType.UUID; |
| 82 | + case VARBINARY -> SQLDataType.VARBINARY; |
| 83 | + case VARCHAR -> SQLDataType.VARCHAR; |
| 84 | + }; |
| 85 | + |
| 86 | + String typeName = jooqType.getTypeName(); |
| 87 | + if (field.isArray()) { |
| 88 | + return getArrayTypeName(typeName); |
| 89 | + } |
| 90 | + return typeName; |
| 91 | + } |
| 92 | + |
| 93 | + /** |
| 94 | + * Keep in sync with default case in {@link org.jooq.meta.AbstractDatabase#isArrayType(String dataType)}. |
| 95 | + */ |
| 96 | + private String getArrayTypeName(String typeName) { |
| 97 | + return typeName + " ARRAY"; |
87 | 98 | }
|
88 | 99 |
|
89 | 100 | private boolean isIdentity(Field field) {
|
|
0 commit comments