Skip to content

Commit ea17120

Browse files
committed
Add support for TIME/TIMESTAMP WITH TIME ZONE types
1 parent 4c4b637 commit ea17120

File tree

7 files changed

+132
-22
lines changed

7 files changed

+132
-22
lines changed

net.java.amateras.db/src/net/java/amateras/db/dialect/AbstractDialect.java

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -317,10 +317,29 @@ protected String createColumnDDL(RootModel root, TableModel tableModel,
317317
ColumnModel columnModel, boolean schema, boolean alterTable, StringBuilder additions, boolean comment){
318318
StringBuffer sb = new StringBuffer();
319319
sb.append(StringUtils.rpad(columnModel.getColumnName(), 30) );
320-
sb.append(TAB).append(columnModel.getColumnType().getName());
321-
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
322-
sb.append("(").append(columnModel.getSize()).append(")");
320+
321+
if (columnModel.getColumnType().getType() == Types.TIME_WITH_TIMEZONE) {
322+
sb.append(TAB).append("TIME");
323+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
324+
sb.append("(").append(columnModel.getSize()).append(")");
325+
}
326+
sb.append(" WITH TIME ZONE");
327+
328+
} else if (columnModel.getColumnType().getType() == Types.TIMESTAMP_WITH_TIMEZONE) {
329+
sb.append(TAB).append("TIMESTAMP");
330+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
331+
sb.append("(").append(columnModel.getSize()).append(")");
332+
}
333+
sb.append(" WITH TIME ZONE");
334+
335+
} else {
336+
sb.append(TAB).append(columnModel.getColumnType().getName());
337+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
338+
sb.append("(").append(columnModel.getSize()).append(")");
339+
}
323340
}
341+
342+
324343
if(columnModel.getDefaultValue().length()!=0){
325344
sb.append(TAB).append(" DEFAULT ").append(columnModel.getDefaultValue());
326345
}

net.java.amateras.db/src/net/java/amateras/db/dialect/ColumnType.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class ColumnType implements IColumnType, Serializable {
99
private boolean supportSize;
1010
private int type;
1111

12-
public ColumnType(String name, String logicalName, boolean supportSize,int type){
12+
public ColumnType(String name, String logicalName, boolean supportSize, int type){
1313
this.name = name;
1414
this.logicalName = logicalName;
1515
this.supportSize = supportSize;

net.java.amateras.db/src/net/java/amateras/db/dialect/H2Dialect.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ public class H2Dialect extends AbstractDialect {
3030
new ColumnType("DOUBLE PRECISION", Messages.getResourceString("type.real"), false, Types.DOUBLE),
3131
new ColumnType("DATE", Messages.getResourceString("type.date"), false, Types.DATE),
3232
new ColumnType("TIME", Messages.getResourceString("type.time"), true, Types.TIME),
33+
new ColumnType("TIME WITH TIME ZONE", Messages.getResourceString("type.time"), true, Types.TIME_WITH_TIMEZONE),
3334
new ColumnType("TIMESTAMP", Messages.getResourceString("type.datetime"), true, Types.TIMESTAMP),
35+
new ColumnType("TIMESTAMP WITH TIME ZONE", Messages.getResourceString("type.datetime"), true, Types.TIMESTAMP_WITH_TIMEZONE),
3436
};
3537

3638
public H2Dialect(){
@@ -45,9 +47,25 @@ protected String createColumnDDL(RootModel root, TableModel tableModel,
4547
if(columnModel.isAutoIncrement()){
4648
sb.append(" IDENTITY");
4749
} else {
48-
sb.append(" ").append(columnModel.getColumnType().getName());
49-
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
50-
sb.append("(").append(columnModel.getSize()).append(")");
50+
if (columnModel.getColumnType().getType() == Types.TIME_WITH_TIMEZONE) {
51+
sb.append(" TIME");
52+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
53+
sb.append("(").append(columnModel.getSize()).append(")");
54+
}
55+
sb.append(" WITH TIME ZONE");
56+
57+
} else if (columnModel.getColumnType().getType() == Types.TIMESTAMP_WITH_TIMEZONE) {
58+
sb.append(" TIMESTAMP");
59+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
60+
sb.append("(").append(columnModel.getSize()).append(")");
61+
}
62+
sb.append(" WITH TIME ZONE");
63+
64+
} else {
65+
sb.append(" ").append(columnModel.getColumnType().getName());
66+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
67+
sb.append("(").append(columnModel.getSize()).append(")");
68+
}
5169
}
5270
}
5371
if(columnModel.getDefaultValue().length()!=0){

net.java.amateras.db/src/net/java/amateras/db/dialect/HsqldbDialect.java

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ public class HsqldbDialect extends AbstractDialect {
3333
new ColumnType("BIT VARYING", Messages.getResourceString("type.bit"), true, Types.BIT),
3434
new ColumnType("DATE", Messages.getResourceString("type.date"), false, Types.DATE),
3535
new ColumnType("TIME", Messages.getResourceString("type.time"), true, Types.TIME),
36+
new ColumnType("TIME WITH TIME ZONE", Messages.getResourceString("type.time"), true, Types.TIME_WITH_TIMEZONE),
3637
new ColumnType("TIMESTAMP", Messages.getResourceString("type.datetime"), true, Types.TIMESTAMP),
38+
new ColumnType("TIMESTAMP WITH TIME ZONE", Messages.getResourceString("type.datetime"), true, Types.TIMESTAMP_WITH_TIMEZONE),
3739
new ColumnType("INTERVAL", Messages.getResourceString("type.other"), false, Types.OTHER),
3840
new ColumnType("BOOLEAN", Messages.getResourceString("type.boolean"), false, Types.BOOLEAN),
3941
new ColumnType("OTHER", Messages.getResourceString("type.other"), false, Types.OTHER)
@@ -49,10 +51,28 @@ protected String createColumnDDL(RootModel root, TableModel tableModel,
4951
ColumnModel columnModel, boolean schema, boolean alterTable, StringBuilder additions, boolean comment){
5052
StringBuffer sb = new StringBuffer();
5153
sb.append(columnModel.getColumnName());
52-
sb.append(" ").append(columnModel.getColumnType().getName());
53-
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
54-
sb.append("(").append(columnModel.getSize()).append(")");
54+
55+
if (columnModel.getColumnType().getType() == Types.TIME_WITH_TIMEZONE) {
56+
sb.append(" TIME");
57+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
58+
sb.append("(").append(columnModel.getSize()).append(")");
59+
}
60+
sb.append(" WITH TIME ZONE");
61+
62+
} else if (columnModel.getColumnType().getType() == Types.TIMESTAMP_WITH_TIMEZONE) {
63+
sb.append(" TIMESTAMP");
64+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
65+
sb.append("(").append(columnModel.getSize()).append(")");
66+
}
67+
sb.append(" WITH TIME ZONE");
68+
69+
} else {
70+
sb.append(" ").append(columnModel.getColumnType().getName());
71+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
72+
sb.append("(").append(columnModel.getSize()).append(")");
73+
}
5574
}
75+
5676
if(columnModel.getDefaultValue().length()!=0){
5777
sb.append(" DEFAULT ").append(columnModel.getDefaultValue());
5878
}

net.java.amateras.db/src/net/java/amateras/db/dialect/PostgreSQLDialect.java

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ public class PostgreSQLDialect extends AbstractDialect {
2424
new ColumnType("SMALLINT", Messages.getResourceString("type.integer"), false, Types.SMALLINT),
2525
new ColumnType("TEXT", Messages.getResourceString("type.string"), false, Types.VARCHAR),
2626
new ColumnType("TIME", Messages.getResourceString("type.time"), true, Types.TIME),
27+
new ColumnType("TIME WITH TIME ZONE", Messages.getResourceString("type.time"), true, Types.TIME_WITH_TIMEZONE),
2728
new ColumnType("TIMESTAMP", Messages.getResourceString("type.datetime"), true, Types.TIMESTAMP),
29+
new ColumnType("TIMESTAMP WITH TIME ZONE", Messages.getResourceString("type.datetime"), true, Types.TIMESTAMP_WITH_TIMEZONE),
2830
new ColumnType("SERIAL", Messages.getResourceString("type.serial"), false, Types.INTEGER),
2931
new ColumnType("BIGSERIAL", Messages.getResourceString("type.serial"), false, Types.BIGINT),
3032
new ColumnType("XML", Messages.getResourceString("type.xml"), false, Types.SQLXML),
@@ -51,9 +53,25 @@ protected String createColumnDDL(RootModel root, TableModel tableModel,
5153
sb.append(" SERIAL");
5254
}
5355
} else {
54-
sb.append(" ").append(columnModel.getColumnType().getName());
55-
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
56-
sb.append("(").append(columnModel.getSize()).append(")");
56+
if (columnModel.getColumnType().getType() == Types.TIME_WITH_TIMEZONE) {
57+
sb.append(" TIME");
58+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
59+
sb.append("(").append(columnModel.getSize()).append(")");
60+
}
61+
sb.append(" WITH TIME ZONE");
62+
63+
} else if (columnModel.getColumnType().getType() == Types.TIMESTAMP_WITH_TIMEZONE) {
64+
sb.append(" TIMESTAMP");
65+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
66+
sb.append("(").append(columnModel.getSize()).append(")");
67+
}
68+
sb.append(" WITH TIME ZONE");
69+
70+
} else {
71+
sb.append(" ").append(columnModel.getColumnType().getName());
72+
if(columnModel.getColumnType().supportSize() && columnModel.getSize().length() > 0){
73+
sb.append("(").append(columnModel.getSize()).append(")");
74+
}
5775
}
5876
if(columnModel.isNotNull()){
5977
sb.append(" NOT NULL");

net.java.amateras.db/src/net/java/amateras/db/visual/editpart/TableEditDialog.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.java.amateras.db.visual.editpart;
22

3+
import java.sql.Types;
34
import java.util.ArrayList;
45
import java.util.List;
56

@@ -932,10 +933,26 @@ public String getSql(){
932933

933934
private void updateTableItem(TableItem item, ColumnModel model){
934935
StringBuilder sb = new StringBuilder();
935-
sb.append(model.getColumnType().getName());
936-
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
937-
sb.append("(").append(model.getSize()).append(")");
936+
937+
if (model.getColumnType().getType() == Types.TIME_WITH_TIMEZONE) {
938+
sb.append("TIME");
939+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
940+
sb.append("(").append(model.getSize()).append(")");
941+
}
942+
sb.append(" WITH TIME ZONE");
943+
} else if (model.getColumnType().getType() == Types.TIMESTAMP_WITH_TIMEZONE) {
944+
sb.append("TIMESTAMP");
945+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
946+
sb.append("(").append(model.getSize()).append(")");
947+
}
948+
sb.append(" WITH TIME ZONE");
949+
} else {
950+
sb.append(model.getColumnType().getName());
951+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
952+
sb.append("(").append(model.getSize()).append(")");
953+
}
938954
}
955+
939956

940957
item.setText(0, model.getLogicalName());
941958
item.setText(1, model.getColumnName());

net.java.amateras.db/src/net/java/amateras/db/visual/editpart/TableEditPart.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package net.java.amateras.db.visual.editpart;
22

3+
import java.sql.Types;
34
import java.util.List;
45

56
import net.java.amateras.db.DBPlugin;
@@ -82,13 +83,30 @@ private ColumnFigure[] createColumnFigure(RootModel root, TableModel table, Colu
8283
StringBuffer sb = new StringBuffer();
8384
if(root.getLogicalMode()){
8485
sb.append(model.getColumnType().getLogicalName());
86+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
87+
sb.append("(").append(model.getSize()).append(")");
88+
}
8589
} else {
86-
sb.append(model.getColumnType().getName());
87-
}
88-
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
89-
sb.append("(");
90-
sb.append(model.getSize());
91-
sb.append(")");
90+
if (model.getColumnType().getType() == Types.TIME_WITH_TIMEZONE) {
91+
sb.append("TIME");
92+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
93+
sb.append("(").append(model.getSize()).append(")");
94+
}
95+
sb.append(" WITH TIME ZONE");
96+
97+
} else if (model.getColumnType().getType() == Types.TIMESTAMP_WITH_TIMEZONE) {
98+
sb.append("TIMESTAMP");
99+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
100+
sb.append("(").append(model.getSize()).append(")");
101+
}
102+
sb.append(" WITH TIME ZONE");
103+
104+
} else {
105+
sb.append(model.getColumnType().getName());
106+
if(model.getColumnType().supportSize() && model.getSize().length() > 0){
107+
sb.append("(").append(model.getSize()).append(")");
108+
}
109+
}
92110
}
93111
ColumnFigure label1 = new ColumnFigure();
94112
ColumnFigure label2 = new ColumnFigure();

0 commit comments

Comments
 (0)