1 package org.apache.torque.adapter;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 import java.sql.Connection;
20 import java.sql.SQLException;
21 import java.sql.Statement;
22
23 /***
24 * This is used to connect to SapDB databases.
25 *
26 * <a href="http://www.sapdb.org">http://www.sapdb.org</a>
27 *
28 * @author <a href="mailto:dave.polito@planetcad.com">Dave Polito</a>
29 * @version $Id: DBSapDB.java 239630 2005-08-24 12:25:32Z henning $
30 */
31 public class DBSapDB extends DB
32 {
33 /***
34 * Empty constructor.
35 */
36 protected DBSapDB()
37 {
38 }
39
40 /***
41 * This method is used to ignore case.
42 *
43 * @param in The string to transform to upper case.
44 * @return The upper case string.
45 */
46 public String toUpperCase(String in)
47 {
48 return new StringBuffer("UPPER(").append(in).append(")").toString();
49 }
50
51 /***
52 * This method is used to ignore case.
53 *
54 * @param in The string whose case to ignore.
55 * @return The string in a case that can be ignored.
56 */
57 public String ignoreCase(String in)
58 {
59 return new StringBuffer("UPPER(").append(in).append(")").toString();
60 }
61
62 /***
63 * @see org.apache.torque.adapter.DB#getIDMethodType()
64 */
65 public String getIDMethodType()
66 {
67 return SEQUENCE;
68 }
69
70 /***
71 * Returns the next key from a sequence. Uses the following
72 * implementation:
73 *
74 * <blockquote><code><pre>
75 * select sequenceName.nextval from dual
76 * </pre></code></blockquote>
77 *
78 * @param sequenceName The name of the sequence (should be of type
79 * <code>String</code>).
80 * @return SQL to retreive the next database key.
81 * @see org.apache.torque.adapter.DB#getIDMethodSQL(Object)
82 */
83 public String getIDMethodSQL(Object sequenceName)
84 {
85 return ("select " + sequenceName + ".nextval from dual");
86 }
87
88 /***
89 * Locks the specified table.
90 *
91 * @param con The JDBC connection to use.
92 * @param table The name of the table to lock.
93 * @exception SQLException No Statement could be created or executed.
94 */
95 public void lockTable(Connection con, String table) throws SQLException
96 {
97 Statement statement = con.createStatement();
98
99 StringBuffer stmt = new StringBuffer();
100 stmt.append("SELECT next_id FROM ")
101 .append(table)
102 .append(" FOR UPDATE");
103
104 statement.executeQuery(stmt.toString());
105 }
106
107 /***
108 * This method is for the SqlExpression.quoteAndEscape rules. The rule is,
109 * any string in a SqlExpression with a BACKSLASH will either be changed to
110 * "//" or left as "\". SapDB does not need the escape character.
111 *
112 * @return false.
113 */
114
115 public boolean escapeText()
116 {
117 return false;
118 }
119
120 /***
121 * Unlocks the specified table.
122 *
123 * @param con The JDBC connection to use.
124 * @param table The name of the table to unlock.
125 * @exception SQLException No Statement could be created or
126 * executed.
127 */
128 public void unlockTable(Connection con, String table) throws SQLException
129 {
130
131
132 con.commit();
133 }
134 }