ozeigermann 2004/06/07 09:16:32
Modified: src/stores/org/apache/slide/store/impl/rdbms
PostgresRDBMSAdapter.java
Log:
Added Sequence support for Postgres
Revision Changes Path
1.6 +69 -5
jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java
Index: PostgresRDBMSAdapter.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/stores/org/apache/slide/store/impl/rdbms/PostgresRDBMSAdapter.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- PostgresRDBMSAdapter.java 19 Apr 2004 12:38:18 -0000 1.5
+++ PostgresRDBMSAdapter.java 7 Jun 2004 16:16:32 -0000 1.6
@@ -25,6 +25,7 @@
import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.slide.common.Service;
@@ -54,11 +55,15 @@
* @version $Revision$
*/
-public class PostgresRDBMSAdapter extends StandardRDBMSAdapter {
+public class PostgresRDBMSAdapter extends StandardRDBMSAdapter implements
SequenceAdapter {
protected static String LOG_CHANNEL =
PostgresRDBMSAdapter.class.getName();
+ protected static String normalizeSequenceName(String sequenceName) {
+ return sequenceName.replace('-', '_').toUpperCase() + "_SEQ";
+ }
+
public PostgresRDBMSAdapter(Service service, Logger logger) {
super(service, logger);
}
@@ -335,4 +340,63 @@
return new ServiceAccessException(service, e);
}
}
+
+ 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 nextval('" +
normalizeSequenceName(sequenceName)+"');";
+
+ 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 * FROM " +
normalizeSequenceName(sequenceName));
+ res = selectStatement.executeQuery();
+ return true;
+ } catch (SQLException e) {
+ return false;
+ } finally {
+ close(selectStatement, res);
+ }
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]