Author: tolusha
Date: 2010-12-27 08:22:15 -0500 (Mon, 27 Dec 2010)
New Revision: 3730
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
Log:
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java 2010-12-27
11:03:47 UTC (rev 3729)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/FullBackupJob.java 2010-12-27
13:22:15 UTC (rev 3730)
@@ -133,6 +133,11 @@
public static final int DB_DIALECT_DB2V8 = DBConstants.DB_DIALECT_DB2V8.hashCode();
/**
+ * PGSQL dialect.
+ */
+ public static final int DB_DIALECT_PGSQL = DBConstants.DB_DIALECT_PGSQL.hashCode();
+
+ /**
* {@inheritDoc}
*/
@Override
@@ -179,6 +184,7 @@
notifyListeners();
Connection jdbcConn = null;
+ Statement lockStatemnt = null;
try
{
WorkspaceEntry workspaceEntry = null;
@@ -262,26 +268,29 @@
// Lock tables
ResultSet rs = null;
- Statement st = null;
try
{
DatabaseMetaData metaData = jdbcConn.getMetaData();
rs = metaData.getTables(null, null, "%", new
String[]{"TABLE"});
- st = jdbcConn.createStatement();
+ lockStatemnt = jdbcConn.createStatement();
int dialect = DialectDetecter.detect(metaData).hashCode();
- while (rs.next())
+ if (dialect == DB_DIALECT_HSQLDB)
{
- String tableName = rs.getString("TABLE_NAME");
- if (dialect == DB_DIALECT_HSQLDB)
+ while (rs.next())
{
- st.execute("SET TABLE " + tableName + " READONLY
TRUE");
+ lockStatemnt.execute("SET TABLE " +
rs.getString("TABLE_NAME") + " READONLY TRUE");
}
- else
+ }
+ else if (dialect == DB_DIALECT_MYSQL || dialect == DB_DIALECT_MYSQL_UTF8)
+ {
+ String lock = "";
+ while (rs.next())
{
- st.execute("LOCK TABLES " + tableName + " WRITE");
+ lock += rs.getString("TABLE_NAME") + " READ,";
}
+ lockStatemnt.execute("LOCK TABLES " + lock.substring(0,
lock.length() - 1));
}
}
finally
@@ -290,19 +299,15 @@
{
rs.close();
}
-
- if (st != null)
- {
- st.close();
- }
}
+ // dump JCR data
for (String script[] : scripts)
{
dumpTable(jdbcConn, script[0], script[1]);
}
- // dump LOCK data
+ // dump JCR LOCK data
LockManagerEntry lockEntry = workspaceEntry.getLockManager();
if (lockEntry != null)
{
@@ -355,41 +360,42 @@
{
if (jdbcConn != null)
{
- // unlock tables
try
{
- ResultSet rs = null;
- Statement st = null;
- try
+ // unlock tables
+ if (lockStatemnt != null)
{
- DatabaseMetaData metaData = jdbcConn.getMetaData();
- st = jdbcConn.createStatement();
- int dialect = DialectDetecter.detect(metaData).hashCode();
+ ResultSet rs = null;
+ try
+ {
+ DatabaseMetaData metaData = jdbcConn.getMetaData();
+ int dialect = DialectDetecter.detect(metaData).hashCode();
- if (dialect == DB_DIALECT_HSQLDB)
- {
- rs = metaData.getTables(null, null, "%", new
String[]{"TABLE"});
- while (rs.next())
+ if (dialect == DB_DIALECT_HSQLDB)
{
- String tableName = rs.getString("TABLE_NAME");
- st.execute("SET TABLE " + tableName + " READONLY
FALSE");
+ rs = metaData.getTables(null, null, "%", new
String[]{"TABLE"});
+ while (rs.next())
+ {
+ String tableName = rs.getString("TABLE_NAME");
+ lockStatemnt.execute("SET TABLE " + tableName +
" READONLY FALSE");
+ }
}
+ else
+ {
+ lockStatemnt.execute("UNLOCK TABLES");
+ }
}
- else
+ finally
{
- st.execute("UNLOCK TABLES");
- }
- }
- finally
- {
- if (rs != null)
- {
- rs.close();
- }
+ if (rs != null)
+ {
+ rs.close();
+ }
- if (st != null)
- {
- st.close();
+ if (lockStatemnt != null)
+ {
+ lockStatemnt.close();
+ }
}
}
Modified:
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2010-12-27
11:03:47 UTC (rev 3729)
+++
jcr/trunk/exo.jcr.component.ext/src/main/java/org/exoplatform/services/jcr/ext/backup/impl/rdbms/RdbmsWorkspaceInitializer.java 2010-12-27
13:22:15 UTC (rev 3730)
@@ -169,8 +169,6 @@
protected void fullRdbmsRestore() throws RepositoryException
{
Connection jdbcConn = null;
- Statement st = null;
-
try
{
String dsName =
workspaceEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.SOURCE_NAME);
@@ -208,15 +206,6 @@
RDBMSBackupInfoReader backupInfo = new RDBMSBackupInfoReader(restorePath);
- // Lock db
- if (dialect != FullBackupJob.DB_DIALECT_HSQLDB)
- {
- RestoreTableHelper helper = new
RestoreTableHelper(RestoreTableHelper.ITEM_TABLE, isMultiDb, backupInfo);
-
- st = jdbcConn.createStatement();
- st.execute("LOCK TABLES " + helper.getTableName() + "
WRITE");
- }
-
restoreJCRTables(jdbcConn, dialect, isMultiDb, backupInfo);
restoreLockTables(jdbcConn, isMultiDb, backupInfo);
@@ -252,27 +241,6 @@
}
finally
{
- if (st != null)
- {
- try
- {
- st.execute("UNLOCK TABLES");
- }
- catch (SQLException e)
- {
- throw new RepositoryException(e);
- }
-
- try
- {
- st.close();
- }
- catch (SQLException e)
- {
- throw new RepositoryException(e);
- }
- }
-
if (jdbcConn != null)
{
try
@@ -796,7 +764,14 @@
ba.read(readBuffer);
String value = new String(readBuffer);
- insertNode.setBoolean(targetIndex + 1,
value.equals("t"));
+ if (dialect == FullBackupJob.DB_DIALECT_PGSQL)
+ {
+ insertNode.setBoolean(targetIndex + 1,
value.equals("t"));
+ }
+ else
+ {
+ insertNode.setBoolean(targetIndex + 1,
value.equals("1"));
+ }
}
else if (columnType.get(i) == Types.BOOLEAN)
{
Show replies by date