You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2009/01/11 23:43:00 UTC
svn commit: r733527 -
/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java
Author: elecharny
Date: Sun Jan 11 14:42:59 2009
New Revision: 733527
URL: http://svn.apache.org/viewvc?rev=733527&view=rev
Log:
Simplified the schema initialization
Modified:
directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java
Modified: directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java?rev=733527&r1=733526&r2=733527&view=diff
==============================================================================
--- directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java (original)
+++ directory/apacheds/trunk/mitosis/src/main/java/org/apache/directory/mitosis/store/derby/DerbyReplicationStore.java Sun Jan 11 14:42:59 2009
@@ -37,6 +37,7 @@
import javax.naming.ldap.LdapName;
import java.io.File;
import java.sql.Connection;
+import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -67,6 +68,11 @@
private Set<String> knownReplicaIds;
private final Object knownReplicaIdsLock = new Object();
private final OperationCodec operationCodec = new OperationCodec();
+
+ /** Define the Derby table names */
+ private static final String METADATA_TABLE = "REPLICATION_METADATA";
+ private static final String UUID_TABLE = "REPLICATION_UUID";
+ private static final String LOG_TABLE = "REPLICATION_LOG";
public String getTablePrefix()
@@ -128,6 +134,26 @@
initSchema();
loadMetadata();
}
+
+
+ /**
+ * Find the defined table for the replication schema
+ */
+ private Set<String> getTables( Connection con ) throws SQLException
+ {
+ DatabaseMetaData meta = con.getMetaData();
+ ResultSet res = meta.getTables( null, null, null, new String[]
+ { "TABLE" } );
+
+ Set<String> tables = new HashSet<String>();
+
+ while ( res.next() )
+ {
+ tables.add( res.getString( "TABLE_NAME" ) );
+ }
+
+ return tables;
+ }
private void initSchema()
@@ -140,40 +166,24 @@
{
con = dataSource.getConnection();
con.setAutoCommit( true );
+
+ Set<String> tables = getTables( con );
stmt = con.createStatement();
- try
- {
- rs = stmt.executeQuery( "SELECT M_KEY FROM " + metadataTableName + " WHERE M_KEY IS NULL" );
- rs.close();
- rs = null;
- }
- catch ( SQLException e )
+ if ( !tables.contains( metadataTableName ) )
{
stmt.executeUpdate( "CREATE TABLE " + metadataTableName + " ("
+ " M_KEY VARCHAR(30) NOT NULL PRIMARY KEY," + " M_VALUE VARCHAR(100) NOT NULL )" );
}
- try
- {
- rs = stmt.executeQuery( "SELECT UUID FROM " + uuidTableName + " WHERE UUID IS NULL" );
- rs.close();
- rs = null;
- }
- catch ( SQLException e )
+ if ( !tables.contains( uuidTableName ) )
{
stmt.executeUpdate( "CREATE TABLE " + uuidTableName + " (" + " UUID CHAR(36) NOT NULL PRIMARY KEY,"
+ " DN CLOB NOT NULL" + ")" );
}
- try
- {
- rs = stmt.executeQuery( "SELECT CSN_REPLICA_ID FROM " + logTableName + " WHERE CSN_REPLICA_ID IS NULL" );
- rs.close();
- rs = null;
- }
- catch ( SQLException e )
+ if ( !tables.contains( logTableName ) )
{
stmt.executeUpdate( "CREATE TABLE " + logTableName + " (" + " CSN_REPLICA_ID VARCHAR(16) NOT NULL,"
+ " CSN_TIMESTAMP BIGINT NOT NULL," + " CSN_OP_SEQ INTEGER NOT NULL,"