01: package com.teamkonzept.db;
02:
03: /**
04: * provides databasespecific strings
05: *
06: * @author
07: * @version
08: * @see DBStringFactory
09: */
10: public class PostgreSQLStringFactory extends DBStringFactory {
11:
12: private static final String IF_NULL_THAN = " COALESCE";
13: private static final String POSTGRESQL_TEMP = " TEMPORARY ";
14: private static final String AUX_CLAUSE = " 1 = 1 ";
15: private static final String CHECK_EXISTENCE = " SELECT TABLENAME FROM PG_TABLES WHERE TABLENAME ";
16: private static final String ESCAPE = " ";
17: private static final String UPPER_ORDER = "upper";
18:
19: /** spez. Postgresbefehl */
20: public String specDeclareAsTemp() {
21: return POSTGRESQL_TEMP;
22: }
23:
24: /** if null then...*/
25: protected String specNvl() {
26: return IF_NULL_THAN;
27: }
28:
29: /** ESCAPE*/
30: protected String specEscape() {
31: return ESCAPE;
32: }
33:
34: /** wird nur für postgres gebraucht, da postgres casesensitive sortiert
35: @return version des upper befehls*/
36: protected String specupperorder() {
37: return UPPER_ORDER;
38: }
39:
40: protected String specCheckExistence() {
41: return CHECK_EXISTENCE;
42: }
43:
44: /** left outer join on the given columns */
45: protected String specLeftOuterJoinFrom(String leftColumn,
46: String rightColumn, String leftTable, String rightTable) {
47: return outerJoinFrom("LEFT", leftColumn, rightColumn,
48: leftTable, rightTable);
49: }
50:
51: /** from-clause for given columns and tables/** right outer loin on the given columns */
52: protected String specRightOuterJoinFrom(String leftColumn,
53: String rightColumn, String leftTable, String rightTable) {
54: return outerJoinFrom("RIGHT", leftColumn, rightColumn,
55: leftTable, rightTable);
56: }
57:
58: private String outerJoinFrom(String orientation, String leftColumn,
59: String rightColumn, String leftTable, String rightTable) {
60:
61: return leftTable + " " + orientation + " JOIN " + rightTable
62: + " ON ( " + leftColumn + " = " + rightColumn + " ) ";
63: }
64:
65: protected String specLeftOuterJoin(String leftColumn,
66: String rightColumn) {
67: return AUX_CLAUSE;
68: }
69:
70: protected String specRightOuterJoin(String leftColumn,
71: String rightColumn) {
72: return AUX_CLAUSE;
73: }
74: }
|