1 package org.apache.torque.engine.platform;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.torque.engine.database.model.Domain;
23 import org.apache.torque.engine.database.model.SchemaType;
24
25 /***
26 * Postgresql Platform implementation.
27 *
28 * @author <a href="mailto:mpoeschl@marmot.at">Martin Poeschl</a>
29 * @version $Id: PlatformPostgresqlImpl.java 491219 2006-12-30 12:39:20Z tfischer $
30 */
31 public class PlatformPostgresqlImpl extends PlatformDefaultImpl
32 {
33 /***
34 * Default constructor.
35 */
36 public PlatformPostgresqlImpl()
37 {
38 super();
39 initialize();
40 }
41
42 /***
43 * Initializes db specific domain mapping.
44 */
45 private void initialize()
46 {
47 setSchemaDomainMapping(new Domain(SchemaType.BIT, "BOOLEAN"));
48 setSchemaDomainMapping(new Domain(SchemaType.TINYINT, "INT2"));
49 setSchemaDomainMapping(new Domain(SchemaType.SMALLINT, "INT2"));
50 setSchemaDomainMapping(new Domain(SchemaType.BIGINT, "INT8"));
51 setSchemaDomainMapping(new Domain(SchemaType.REAL, "FLOAT"));
52 setSchemaDomainMapping(new Domain(SchemaType.BOOLEANCHAR, "CHAR"));
53 setSchemaDomainMapping(new Domain(SchemaType.BOOLEANINT, "INT2"));
54 setSchemaDomainMapping(new Domain(SchemaType.DOUBLE, "DOUBLE PRECISION"));
55 setSchemaDomainMapping(new Domain(SchemaType.LONGVARCHAR, "TEXT"));
56 setSchemaDomainMapping(new Domain(SchemaType.BINARY, "BYTEA"));
57 setSchemaDomainMapping(new Domain(SchemaType.VARBINARY, "BYTEA"));
58 setSchemaDomainMapping(new Domain(SchemaType.LONGVARBINARY, "BYTEA"));
59 setSchemaDomainMapping(new Domain(SchemaType.BLOB, "BYTEA"));
60 setSchemaDomainMapping(new Domain(SchemaType.CLOB, "TEXT"));
61 }
62
63 /***
64 * @see Platform#getNativeIdMethod()
65 */
66 public String getNativeIdMethod()
67 {
68 return Platform.SEQUENCE;
69 }
70
71 /***
72 * @see Platform#getAutoIncrement()
73 */
74 public String getAutoIncrement()
75 {
76 return "";
77 }
78
79 /***
80 * @see Platform#hasScale(String)
81 * TODO collect info for all platforms
82 */
83 public boolean hasScale(String sqlType)
84 {
85 if ("INT2".equalsIgnoreCase(sqlType)
86 || "TEXT".equalsIgnoreCase(sqlType))
87 {
88 return false;
89 }
90 return true;
91 }
92
93 /***
94 * @see Platform#hasSize(String)
95 * TODO collect info for all platforms
96 */
97 public boolean hasSize(String sqlType)
98 {
99 if ("INT2".equalsIgnoreCase(sqlType)
100 || "TEXT".equalsIgnoreCase(sqlType))
101 {
102 return false;
103 }
104 return true;
105 }
106 }