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]

Reply via email to