ozeigermann 2004/06/08 06:00:06
Modified: src/stores/org/apache/slide/store/impl/rdbms
OracleRDBMSAdapter.java
Log:
Added Sequence support for Oracle
Revision Changes Path
1.3 +68 -4
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/OracleRDBMSAdapter.java
Index: OracleRDBMSAdapter.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/OracleRDBMSAdapter.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- OracleRDBMSAdapter.java 8 Jun 2004 12:36:10 -0000 1.2
+++ OracleRDBMSAdapter.java 8 Jun 2004 13:00:06 -0000 1.3
@@ -46,8 +46,12 @@
*
* @author Davide Savazzi
*/
-public class OracleRDBMSAdapter extends StandardRDBMSAdapter {
+public class OracleRDBMSAdapter extends StandardRDBMSAdapter implements
SequenceAdapter {
+ protected static String normalizeSequenceName(String sequenceName) {
+ return sequenceName.replace('-', '_').toUpperCase() + "_SEQ";
+ }
+
// Constructor
public OracleRDBMSAdapter(Service service, Logger logger) {
@@ -56,6 +60,66 @@
// Public Methods
+
+ public boolean isSequenceSupported(Connection conn) {
+ return true;
+ }
+
+ public boolean createSequence(Connection conn, String sequenceName) throws
ServiceAccessException {
+
+ String query = "CREATE SEQUENCE \"" + normalizeSequenceName(sequenceName) +
"\"";
+
+ PreparedStatement statement = null;
+
+ try {
+ statement = conn.prepareStatement(query);
+ statement.executeUpdate();
+ return true;
+ } catch (SQLException e) {
+ throw new ServiceAccessException(service, e);
+ } finally {
+ close(statement);
+ }
+
+ }
+
+ public long nextSequenceValue(Connection conn, String sequenceName) throws
ServiceAccessException {
+ String selectQuery = "SELECT \"" +
normalizeSequenceName(sequenceName)+"\".nextval FROM DUAL";
+
+ PreparedStatement selectStatement = null;
+ ResultSet res = null;
+
+ try {
+ selectStatement = conn.prepareStatement(selectQuery);
+ res = selectStatement.executeQuery();
+ if (!res.next()) {
+ throw new ServiceAccessException(service, "Could not increment
sequence " + sequenceName);
+ }
+ long value = res.getLong(1);
+ return value;
+ } catch (SQLException e) {
+ throw new ServiceAccessException(service, e);
+ } finally {
+ close(selectStatement, res);
+ }
+ }
+
+ public boolean sequenceExists(Connection conn, String sequenceName) throws
ServiceAccessException {
+
+ PreparedStatement selectStatement = null;
+ ResultSet res = null;
+
+ try {
+ selectStatement =
+ conn.prepareStatement("SELECT \"" +
normalizeSequenceName(sequenceName) + "\".currval FROM DUAL");
+ res = selectStatement.executeQuery();
+ return true;
+ } catch (SQLException e) {
+ return false;
+ } finally {
+ close(selectStatement, res);
+ }
+ }
public void removeObject(Connection connection, Uri uri, ObjectNode object)
throws ServiceAccessException, ObjectNotFoundException
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]