exo-jcr SVN: r5116 - in jcr/trunk/exo.jcr.component.core/src: test/java/org/exoplatform/services/jcr/impl/util/jdbc and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-28 03:02:26 -0400 (Fri, 28 Oct 2011)
New Revision: 5116
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java
Log:
EXOJCR-1585: Fix bug
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 15:49:58 UTC (rev 5115)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-28 07:02:26 UTC (rev 5116)
@@ -99,6 +99,7 @@
try
{
dbCleaner.executeCleanScripts();
+
try
{
dbCleaner.executeCommitScripts();
@@ -107,6 +108,7 @@
{
LOG.error("Can't remove temporary objects", e);
}
+
jdbcConn.commit();
}
catch (SQLException e)
@@ -171,6 +173,19 @@
dialect = DialectDetecter.detect(jdbcConn.getMetaData());
}
+ // Sybase doesn't allow DDL scripts inside transaction
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
+ {
+ if (!jdbcConn.getAutoCommit())
+ {
+ jdbcConn.setAutoCommit(true);
+ }
+ }
+ else
+ {
+ jdbcConn.setAutoCommit(false);
+ }
+
if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
@@ -178,19 +193,6 @@
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
{
- // Sybase doesn't allow DDL scripts inside transaction
- if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
- {
- if (!jdbcConn.getAutoCommit())
- {
- jdbcConn.setAutoCommit(true);
- }
- }
- else
- {
- jdbcConn.setAutoCommit(false);
- }
-
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
dbCleanerScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
@@ -875,6 +877,7 @@
List<String> cleanScripts = new ArrayList<String>();
List<String> commitScripts = new ArrayList<String>();
+ List<String> rollbackScripts = new ArrayList<String>();
String constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
cleanScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM " + dropCommand(false, constraintName, dialect));
@@ -883,6 +886,7 @@
String constraint =
"CONSTRAINT " + constraintName + " FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
commitScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " + constraint);
+ rollbackScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " + constraint);
cleanScripts
.add("delete from JCR_SVALUE where PROPERTY_ID IN (select ID from JCR_SITEM where CONTAINER_NAME='"
@@ -899,12 +903,12 @@
String deleteItems =
"delete from JCR_SITEM where I_CLASS=1 and CONTAINER_NAME='" + containerName + "' and PARENT_ID=?";
- return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), commitScripts,
+ return new DBCleaner(jdbcConn, cleanScripts, rollbackScripts, commitScripts,
new RecursiveDBCleanHelper(jdbcConn, selectItems, deleteItems));
}
cleanScripts.add("delete from JCR_SITEM where CONTAINER_NAME='" + containerName + "'");
- return new DBCleaner(jdbcConn, new ArrayList<String>(), commitScripts, cleanScripts);
+ return new DBCleaner(jdbcConn, cleanScripts, rollbackScripts, commitScripts);
}
else
{
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java 2011-10-27 15:49:58 UTC (rev 5115)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/util/jdbc/TestDBCleaner.java 2011-10-28 07:02:26 UTC (rev 5116)
@@ -250,8 +250,8 @@
DBCleaner repositoryDBCleaner = DBCleanService.getRepositoryDBCleaner(jdbcConn, repositoryEntry);
repositoryDBCleaner.executeCleanScripts();
+ repositoryDBCleaner.executeCommitScripts();
jdbcConn.commit();
- repositoryDBCleaner.executeCommitScripts();
// check - does JCR_SITEM become empty
res = statement.executeQuery("select * from JCR_SITEM where ID='" + wsName + id + "'");
@@ -297,7 +297,9 @@
repositoryDBCleaner.executeCleanScripts();
jdbcConn.rollback();
+
repositoryDBCleaner.executeRollbackScripts();
+ jdbcConn.commit();
// check - does JCR_SITEM become empty
res = statement.executeQuery("select * from JCR_SITEM where ID='" + wsName + id + "'");
14 years, 6 months
exo-jcr SVN: r5115 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: util/io and 1 other directory.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2011-10-27 11:49:58 -0400 (Thu, 27 Oct 2011)
New Revision: 5115
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
Log:
EXOJCR-1598: RepositoryCreationService.removeRepository doesn't free memory resources associated with removed repository
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-10-27 15:45:29 UTC (rev 5114)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/query/lucene/MultiIndex.java 2011-10-27 15:49:58 UTC (rev 5115)
@@ -259,6 +259,18 @@
private final IndexerIoModeHandler modeHandler;
/**
+ * The shutdown hook
+ */
+ private final Thread hook = new Thread()
+ {
+ @Override
+ public void run()
+ {
+ stopped = true;
+ }
+ };
+
+ /**
* The unique id of the workspace corresponding to this multi index
*/
final String workspaceId;
@@ -367,14 +379,16 @@
{
public Void run()
{
- Runtime.getRuntime().addShutdownHook(new Thread()
+ try
{
- @Override
- public void run()
- {
- stopped = true;
- }
- });
+ Runtime.getRuntime().addShutdownHook(hook);
+ }
+ catch (IllegalStateException e)
+ {
+ // can't register shutdown hook because
+ // jvm shutdown sequence has already begun,
+ // silently ignore...
+ }
return null;
}
});
@@ -1340,7 +1354,6 @@
*/
void close()
{
-
// stop index merger
// when calling this method we must not lock this MultiIndex, otherwise
// a deadlock might occur
@@ -1395,6 +1408,24 @@
modeHandler.removeIndexerIoModeListener(this);
indexUpdateMonitor.removeIndexUpdateMonitorListener(this);
this.stopped = true;
+ // Remove the hook that will stop the threads if they are still running
+ SecurityHelper.doPrivilegedAction(new PrivilegedAction<Object>()
+ {
+ public Void run()
+ {
+ try
+ {
+ Runtime.getRuntime().removeShutdownHook(hook);
+ }
+ catch (IllegalStateException e)
+ {
+ // can't register shutdown hook because
+ // jvm shutdown sequence has already begun,
+ // silently ignore...
+ }
+ return null;
+ }
+ });
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java 2011-10-27 15:45:29 UTC (rev 5114)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/io/FileCleaner.java 2011-10-27 15:49:58 UTC (rev 5115)
@@ -46,6 +46,22 @@
protected final ConcurrentLinkedQueue<File> files = new ConcurrentLinkedQueue<File>();
+ /**
+ * The shutdown hook
+ */
+ private final Thread hook = new Thread()
+ {
+ @Override
+ public void run()
+ {
+ File file = null;
+ while ((file = files.poll()) != null)
+ {
+ PrivilegedFileHelper.delete(file);
+ }
+ }
+ };
+
public FileCleaner()
{
this(DEFAULT_TIMEOUT);
@@ -123,7 +139,24 @@
catch (Exception e)
{
}
-
+ // Remove the hook for final cleaning up
+ SecurityHelper.doPrivilegedAction(new PrivilegedAction<Object>()
+ {
+ public Void run()
+ {
+ try
+ {
+ Runtime.getRuntime().removeShutdownHook(hook);
+ }
+ catch (IllegalStateException e)
+ {
+ // can't register shutdown hook because
+ // jvm shutdown sequence has already begun,
+ // silently ignore...
+ }
+ return null;
+ }
+ });
if (files != null && files.size() > 0)
log.warn("There are uncleared files: " + files.size());
@@ -170,22 +203,11 @@
// register shutdown hook for final cleaning up
try
{
- Runtime.getRuntime().addShutdownHook(new Thread()
- {
- @Override
- public void run()
- {
- File file = null;
- while ((file = files.poll()) != null)
- {
- PrivilegedFileHelper.delete(file);
- }
- }
- });
+ Runtime.getRuntime().addShutdownHook(hook);
}
catch (IllegalStateException e)
{
- // can't register shutdownhook because
+ // can't register shutdown hook because
// jvm shutdown sequence has already begun,
// silently ignore...
}
14 years, 6 months
exo-jcr SVN: r5114 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc.
by do-not-reply@jboss.org
Author: nfilotto
Date: 2011-10-27 11:45:29 -0400 (Thu, 27 Oct 2011)
New Revision: 5114
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
Log:
EXOJCR-1590: Fix issue that occurs when the statistics are enabled
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-10-27 15:03:27 UTC (rev 5113)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-10-27 15:45:29 UTC (rev 5114)
@@ -924,7 +924,12 @@
if (deleteLocks)
{
boolean failed = true;
- JDBCStorageConnection conn = (JDBCStorageConnection)openConnection();
+ WorkspaceStorageConnection wsc = openConnection(false);
+ if (wsc instanceof StatisticsJDBCStorageConnection)
+ {
+ wsc = ((StatisticsJDBCStorageConnection)wsc).getNestedWorkspaceStorageConnection();
+ }
+ JDBCStorageConnection conn = (JDBCStorageConnection)wsc;
try
{
conn.deleteLockProperties();
14 years, 6 months
exo-jcr SVN: r5113 - in jcr/trunk/exo.jcr.component.ext: src/test/java/org/exoplatform/services/jcr/ext/backup/usecase and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 11:03:27 -0400 (Thu, 27 Oct 2011)
New Revision: 5113
Modified:
jcr/trunk/exo.jcr.component.ext/pom.xml
jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/usecase/TestBackupRestore.java
Log:
EXOJCR-1585: add tests for restoring workspace only
Modified: jcr/trunk/exo.jcr.component.ext/pom.xml
===================================================================
--- jcr/trunk/exo.jcr.component.ext/pom.xml 2011-10-27 15:03:02 UTC (rev 5112)
+++ jcr/trunk/exo.jcr.component.ext/pom.xml 2011-10-27 15:03:27 UTC (rev 5113)
@@ -196,7 +196,6 @@
<exclude>**/backup/BaseRDBMSBackupTest.java</exclude>
<exclude>**/backup/TestBackupScheduler.java</exclude>
<exclude>**/backup/TestBackupRestart.java</exclude>
- <exclude>**/backup/usecase/TestLoadBackup.java*</exclude>
<exclude>**/replication/**</exclude>
<exclude>**/repository/creation/cluster/**</exclude>
</excludes>
Modified: jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/usecase/TestBackupRestore.java
===================================================================
--- jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/usecase/TestBackupRestore.java 2011-10-27 15:03:02 UTC (rev 5112)
+++ jcr/trunk/exo.jcr.component.ext/src/test/java/org/exoplatform/services/jcr/ext/backup/usecase/TestBackupRestore.java 2011-10-27 15:03:27 UTC (rev 5113)
@@ -18,7 +18,11 @@
import org.exoplatform.container.xml.InitParams;
import org.exoplatform.container.xml.PropertiesParam;
+import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.core.ManageableRepository;
+import org.exoplatform.services.jcr.ext.backup.BackupChain;
+import org.exoplatform.services.jcr.ext.backup.BackupChainLog;
+import org.exoplatform.services.jcr.ext.backup.BackupConfig;
import org.exoplatform.services.jcr.ext.backup.BackupJob;
import org.exoplatform.services.jcr.ext.backup.BackupManager;
import org.exoplatform.services.jcr.ext.backup.ExtendedBackupManager;
@@ -27,6 +31,7 @@
import org.exoplatform.services.jcr.ext.backup.RepositoryBackupConfig;
import org.exoplatform.services.jcr.ext.backup.impl.BackupManagerImpl;
import org.exoplatform.services.jcr.ext.backup.impl.JobRepositoryRestore;
+import org.exoplatform.services.jcr.ext.backup.impl.JobWorkspaceRestore;
import org.exoplatform.services.jcr.impl.core.SessionImpl;
import java.io.File;
@@ -45,26 +50,110 @@
{
public void testBackupRestoreExistingRepositorySingleDB() throws Exception
{
- repositoryBackupRestore("db1");
- repositoryBackupRestore("db1");
+ repositoryBackupRestore("db1", 1);
+ repositoryBackupRestore("db1", 2);
}
public void testBackupRestoreExistingRepositoryMultiDB() throws Exception
{
- repositoryBackupRestore("db2");
- repositoryBackupRestore("db2");
+ repositoryBackupRestore("db2", 3);
+ repositoryBackupRestore("db2", 4);
}
- protected void repositoryBackupRestore(String repositoryName) throws Exception
+ public void testBackupRestoreExistingWorkspaceSingleDB() throws Exception
{
- addConent(repositoryName);
+ workspaceBackupRestore("db1", 5);
+ workspaceBackupRestore("db1", 6);
+ }
+ public void testBackupRestoreExistingWorkspaceMultiDB() throws Exception
+ {
+ workspaceBackupRestore("db2", 7);
+ workspaceBackupRestore("db2", 8);
+ }
+
+ protected void workspaceBackupRestore(String repositoryName, int number) throws Exception
+ {
+ addConent(repositoryName, number);
+ String workspaceName =
+ repositoryService.getRepository(repositoryName).getConfiguration().getSystemWorkspaceName();
+
+ WorkspaceEntry wsEntry = null;
+ for (WorkspaceEntry entry : repositoryService.getRepository(repositoryName).getConfiguration()
+ .getWorkspaceEntries())
+ {
+ if (entry.getName().equals(workspaceName))
+ {
+ wsEntry = entry;
+ break;
+ }
+ }
+
BackupManagerImpl backupManagerImpl = (BackupManagerImpl)getBackupManager();
backupManagerImpl.start();
File backDir = new File("target/backup/" + repositoryName);
backDir.mkdirs();
+ BackupConfig config = new BackupConfig();
+ config.setRepository(repositoryName);
+ config.setWorkspace(workspaceName);
+ config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
+ config.setBackupDir(backDir);
+
+ BackupChain bch = backupManagerImpl.startBackup(config);
+
+ // wait till full backup will stop
+ while (bch.getFullBackupState() != BackupChain.FINISHED)
+ {
+ Thread.yield();
+ Thread.sleep(30);
+ }
+
+ if (bch != null)
+ {
+ backupManagerImpl.stopBackup(bch);
+ }
+
+ // restore
+ File backLog = new File(bch.getLogFilePath());
+ if (backLog.exists())
+ {
+ BackupChainLog bchLog = new BackupChainLog(backLog);
+
+ assertNotNull(bchLog.getStartedTime());
+ assertNotNull(bchLog.getFinishedTime());
+
+ backupManagerImpl.restoreExistingWorkspace(bchLog, repositoryName, wsEntry, false);
+
+ JobWorkspaceRestore restore = backupManagerImpl.getLastRestore(repositoryName, workspaceName);
+ assertNotNull(restore);
+ // if (restore != null)
+ // {
+ // if (restore.getStateRestore() != JobWorkspaceRestore.RESTORE_SUCCESSFUL)
+ // {
+ // fail(restore.getRestoreException().getMessage());
+ // }
+ // }
+ }
+ else
+ {
+ fail("There are no backup files in " + backDir.getAbsolutePath());
+ }
+
+ checkConent(repositoryName, number);
+ }
+
+ protected void repositoryBackupRestore(String repositoryName, int number) throws Exception
+ {
+ addConent(repositoryName, number);
+
+ BackupManagerImpl backupManagerImpl = (BackupManagerImpl)getBackupManager();
+ backupManagerImpl.start();
+
+ File backDir = new File("target/backup/" + repositoryName);
+ backDir.mkdirs();
+
RepositoryBackupConfig config = new RepositoryBackupConfig();
config.setRepository(repositoryName);
config.setBackupType(BackupManager.FULL_BACKUP_ONLY);
@@ -110,7 +199,7 @@
fail("There are no backup files in " + backDir.getAbsolutePath());
}
- checkConent(repositoryName);
+ checkConent(repositoryName, number);
}
protected ExtendedBackupManager getBackupManager()
@@ -126,39 +215,41 @@
return new BackupManagerImpl(initParams, repositoryService);
}
- protected void addConent(String repositoryName) throws Exception
+ protected void addConent(String repositoryName, int number) throws Exception
{
ManageableRepository repository = repositoryService.getRepository(repositoryName);
- String wsName = repository.getConfiguration().getSystemWorkspaceName();
-
- SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
- try
+ for (String wsName : repository.getWorkspaceNames())
{
- Node rootNode = session.getRootNode().addNode("test");
+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
+ try
+ {
+ Node rootNode = session.getRootNode().addNode("test" + number);
- rootNode.addNode("node1").setProperty("prop1", "value1");
- session.save();
+ rootNode.addNode("node1").setProperty("prop1", "value1");
+ session.save();
+ }
+ finally
+ {
+ session.logout();
+ }
}
- finally
- {
- session.logout();
- }
}
- protected void checkConent(String repositoryName) throws Exception
+ protected void checkConent(String repositoryName, int number) throws Exception
{
ManageableRepository repository = repositoryService.getRepository(repositoryName);
- String wsName = repository.getConfiguration().getSystemWorkspaceName();
-
- SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
- try
+ for (String wsName : repository.getWorkspaceNames())
{
- Node rootNode = session.getRootNode().getNode("test");
- assertEquals(rootNode.getNode("node1").getProperty("prop1").getString(), "value1");
+ SessionImpl session = (SessionImpl)repository.login(credentials, wsName);
+ try
+ {
+ Node rootNode = session.getRootNode().getNode("test" + number);
+ assertEquals(rootNode.getNode("node1").getProperty("prop1").getString(), "value1");
+ }
+ finally
+ {
+ session.logout();
+ }
}
- finally
- {
- session.logout();
- }
}
}
14 years, 6 months
exo-jcr SVN: r5112 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 11:03:02 -0400 (Thu, 27 Oct 2011)
New Revision: 5112
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
Log:
EXOJCR-1585: fix workpace DBCleaner for SingleDB
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 13:18:52 UTC (rev 5111)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 15:03:02 UTC (rev 5112)
@@ -30,7 +30,9 @@
import java.io.IOException;
import java.security.PrivilegedExceptionAction;
import java.sql.Connection;
+import java.sql.ResultSet;
import java.sql.SQLException;
+import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
@@ -806,7 +808,7 @@
}
/**
- * Returns database cleaner for manual cleaning for workspace.
+ * Returns database cleaner for manual cleaning of workspace.
*
* @param jdbcConn
* database connection which need to use
@@ -829,47 +831,111 @@
dialect = DialectDetecter.detect(jdbcConn.getMetaData());
}
- if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
- || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
- || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
- || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8)
- || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
+ // Sybase doesn't allow DDL scripts inside transaction
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
- // Sybase doesn't allow DDL scripts inside transaction
- if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
+ if (!jdbcConn.getAutoCommit())
{
- if (!jdbcConn.getAutoCommit())
+ jdbcConn.setAutoCommit(true);
+ }
+ }
+ else
+ {
+ jdbcConn.setAutoCommit(false);
+ }
+
+ if (!isMultiDB)
+ {
+ boolean cleanWithHelper = false;
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
+ {
+ cleanWithHelper = true;
+ }
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ {
+ cleanWithHelper = true;
+
+ Statement st = jdbcConn.createStatement();
+ st.execute("SELECT ENGINE FROM information_schema.TABLES where TABLE_SCHEMA='" + jdbcConn.getCatalog()
+ + "' and (TABLE_NAME='JCR_SITEM' or TABLE_NAME='JCR_MITEM')");
+ ResultSet result = st.getResultSet();
+ if (result.next())
{
- jdbcConn.setAutoCommit(true);
+ String engine = result.getString("ENGINE");
+ if (engine.equalsIgnoreCase("MyISAM"))
+ {
+ cleanWithHelper = false;
+ }
}
}
- else
+
+ String containerName = wsEntry.getName();
+ String multiDb = isMultiDB ? "M" : "S";
+
+ List<String> cleanScripts = new ArrayList<String>();
+ List<String> commitScripts = new ArrayList<String>();
+
+ String constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
+ cleanScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM " + dropCommand(false, constraintName, dialect));
+
+ constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
+ String constraint =
+ "CONSTRAINT " + constraintName + " FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
+ commitScripts.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD " + constraint);
+
+ cleanScripts
+ .add("delete from JCR_SVALUE where PROPERTY_ID IN (select ID from JCR_SITEM where CONTAINER_NAME='"
+ + containerName + "')");
+ cleanScripts.add("delete from JCR_SREF where PROPERTY_ID IN (select ID from JCR_SITEM where CONTAINER_NAME='"
+ + containerName + "')");
+
+ if (cleanWithHelper)
{
- jdbcConn.setAutoCommit(false);
- }
+ cleanScripts.add("delete from JCR_SITEM where I_CLASS=2 and CONTAINER_NAME='" + containerName + "'");
- ArrayList<String> cleanScripts = new ArrayList<String>();
- cleanScripts.addAll(getRenameScripts(isMultiDB, dialect));
- cleanScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
- cleanScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
+ String selectItems =
+ "select ID from JCR_SITEM where I_CLASS=1 and CONTAINER_NAME='" + containerName + "' and PARENT_ID=?";
+ String deleteItems =
+ "delete from JCR_SITEM where I_CLASS=1 and CONTAINER_NAME='" + containerName + "' and PARENT_ID=?";
- ArrayList<String> commitScript = new ArrayList<String>();
- commitScript.addAll(getRemoveOldObjectsScripts(isMultiDB, dialect));
- commitScript.addAll(getRestoreIndexesScripts(isMultiDB, dialect));
+ return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), commitScripts,
+ new RecursiveDBCleanHelper(jdbcConn, selectItems, deleteItems));
+ }
- return new DBCleaner(jdbcConn, cleanScripts, getRollbackScripts(isMultiDB, dialect),
- commitScript);
+ cleanScripts.add("delete from JCR_SITEM where CONTAINER_NAME='" + containerName + "'");
+ return new DBCleaner(jdbcConn, new ArrayList<String>(), commitScripts, cleanScripts);
}
else
{
- List<String> cleanScripts = new ArrayList<String>();
-
- cleanScripts.addAll(getDropTableScripts(isMultiDB, dialect));
- cleanScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
- cleanScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
+ {
+ ArrayList<String> cleanScripts = new ArrayList<String>();
+ cleanScripts.addAll(getRenameScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), getRestoreIndexesScripts(
- isMultiDB, dialect));
+ ArrayList<String> commitScript = new ArrayList<String>();
+ commitScript.addAll(getRemoveOldObjectsScripts(isMultiDB, dialect));
+ commitScript.addAll(getRestoreIndexesScripts(isMultiDB, dialect));
+
+ return new DBCleaner(jdbcConn, cleanScripts, getRollbackScripts(isMultiDB, dialect), commitScript);
+ }
+ else
+ {
+ List<String> cleanScripts = new ArrayList<String>();
+
+ cleanScripts.addAll(getDropTableScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
+
+ return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), getRestoreIndexesScripts(isMultiDB,
+ dialect));
+ }
}
}
}
14 years, 6 months
exo-jcr SVN: r5111 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: storage/jdbc and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 09:18:52 -0400 (Thu, 27 Oct 2011)
New Revision: 5111
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
Log:
EXOJCR-1591: support usecase when parameter dialect is not set into conf
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 12:53:34 UTC (rev 5110)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 13:18:52 UTC (rev 5111)
@@ -21,6 +21,7 @@
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
+import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper;
import org.exoplatform.services.log.ExoLogger;
@@ -152,8 +153,8 @@
RepositoryConfigurationException
{
final boolean isMultiDB =
- Boolean.parseBoolean(repoEntry.getWorkspaceEntries().get(0).getContainer().getParameterValue(
- JDBCWorkspaceDataContainer.MULTIDB));
+ Boolean.parseBoolean(repoEntry.getWorkspaceEntries().get(0).getContainer()
+ .getParameterValue(JDBCWorkspaceDataContainer.MULTIDB));
if (isMultiDB)
{
@@ -161,7 +162,12 @@
}
String dialect =
- repoEntry.getWorkspaceEntries().get(0).getContainer().getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT);
+ repoEntry.getWorkspaceEntries().get(0).getContainer()
+ .getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT, DBConstants.DB_DIALECT_AUTO);
+ if (DBConstants.DB_DIALECT_GENERIC.equals(dialect) || DBConstants.DB_DIALECT_AUTO.equalsIgnoreCase(dialect))
+ {
+ dialect = DialectDetecter.detect(jdbcConn.getMetaData());
+ }
if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
@@ -816,7 +822,12 @@
boolean isMultiDB =
Boolean.parseBoolean(wsEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.MULTIDB));
- String dialect = wsEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT);
+ String dialect =
+ wsEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT, DBConstants.DB_DIALECT_AUTO);
+ if (DBConstants.DB_DIALECT_GENERIC.equals(dialect) || DBConstants.DB_DIALECT_AUTO.equalsIgnoreCase(dialect))
+ {
+ dialect = DialectDetecter.detect(jdbcConn.getMetaData());
+ }
if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
|| dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-10-27 12:53:34 UTC (rev 5110)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/storage/jdbc/JDBCWorkspaceDataContainer.java 2011-10-27 13:18:52 UTC (rev 5111)
@@ -317,7 +317,8 @@
this.isManaged = false;
LOG.info("Connect to JCR database as user '" + this.dbUserName + "'");
- if (pDbDialect == DBConstants.DB_DIALECT_GENERIC || DBConstants.DB_DIALECT_AUTO.equalsIgnoreCase(pDbDialect))
+ if (DBConstants.DB_DIALECT_GENERIC.equals(pDbDialect)
+ || DBConstants.DB_DIALECT_AUTO.equalsIgnoreCase(pDbDialect))
{
// try to detect via JDBC metadata
Connection jdbcConn = null;
14 years, 6 months
exo-jcr SVN: r5110 - jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 08:53:34 -0400 (Thu, 27 Oct 2011)
New Revision: 5110
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
Log:
EXOJCR-1589: Incorrect type of exception thrown in method NodeImpl.setProperty(String, Value) when property value violate a node type.`
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2011-10-27 12:30:37 UTC (rev 5109)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/ItemImpl.java 2011-10-27 12:53:34 UTC (rev 5110)
@@ -497,7 +497,8 @@
if (defs == null || defs.getAnyDefinition() == null)
{
- throw new RepositoryException("Property definition '" + propertyName.getAsString() + "' is not found.");
+ throw new ConstraintViolationException("Property definition '" + propertyName.getAsString()
+ + "' is not found.");
}
PropertyDefinitionData def = defs.getDefinition(isMultiValue);
14 years, 6 months
exo-jcr SVN: r5109 - in jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl: util/jdbc and 1 other directory.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 08:30:37 -0400 (Thu, 27 Oct 2011)
New Revision: 5109
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java
Log:
EXOJCR-1591: TESTING: Can't restore workspace 'backup' via backup console (RDBMS multi-db only)
* don't clean JCR_S(M)CONTAINER TABLE
* use the dialect from configuration
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 08:07:02 UTC (rev 5108)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 12:30:37 UTC (rev 5109)
@@ -21,7 +21,6 @@
import org.exoplatform.services.jcr.config.RepositoryEntry;
import org.exoplatform.services.jcr.config.WorkspaceEntry;
import org.exoplatform.services.jcr.impl.storage.jdbc.DBConstants;
-import org.exoplatform.services.jcr.impl.storage.jdbc.DialectDetecter;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import org.exoplatform.services.jcr.impl.util.jdbc.DBInitializerHelper;
import org.exoplatform.services.log.ExoLogger;
@@ -32,7 +31,6 @@
import java.sql.Connection;
import java.sql.SQLException;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import javax.naming.InitialContext;
@@ -162,14 +160,18 @@
return null;
}
- String dialect = DialectDetecter.detect(jdbcConn.getMetaData());
+ String dialect =
+ repoEntry.getWorkspaceEntries().get(0).getContainer().getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT);
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI)
- || dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8)
- || dialect.equals(DBConstants.DB_DIALECT_SYBASE) || dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
{
// Sybase doesn't allow DDL scripts inside transaction
- if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
if (!jdbcConn.getAutoCommit())
{
@@ -183,94 +185,28 @@
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
- dbCleanerScripts.addAll(getTableCreationScript(getInitializationDBScript(isMultiDB, dialect), isMultiDB,
- dialect));
- dbCleanerScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
ArrayList<String> afterRestoreScript = new ArrayList<String>();
- afterRestoreScript.addAll(getRemoveOldObjectsScript(isMultiDB, dialect));
- afterRestoreScript.addAll(getRestoreIndexesScript(isMultiDB, dialect));
+ afterRestoreScript.addAll(getRemoveOldObjectsScripts(isMultiDB, dialect));
+ afterRestoreScript.addAll(getRestoreIndexesScripts(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, dbCleanerScripts, getRollbackRenamedScript(isMultiDB, dialect),
+ return new DBCleaner(jdbcConn, dbCleanerScripts, getRollbackScripts(isMultiDB, dialect),
afterRestoreScript);
}
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getDropTableScripts(isMultiDB, dialect));
- dbCleanerScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
- dbCleanerScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, dbCleanerScripts, new ArrayList<String>(), getRestoreIndexesScript(isMultiDB,
+ return new DBCleaner(jdbcConn, dbCleanerScripts, new ArrayList<String>(), getRestoreIndexesScripts(isMultiDB,
dialect));
}
/**
- * Prepare database initialization script.
- *
- * @param initializationDBScript
- * list with scripts
- * @param isMultiDB
- * boolean, is multi-db
- * @param dialect
- * string, dialect of DB
- * @return List with database initialization scripts
- */
- private static Collection<? extends String> getTableCreationScript(List<String> initializationDBScript,
- boolean isMultiDB, String dialect)
- {
- if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
- {
- String multiDb = isMultiDB ? "M" : "S";
-
- for (int i = 0; i < initializationDBScript.size(); i++)
- {
- String query = initializationDBScript.get(i);
- if (query.contains("JCR_PK_" + multiDb + "ITEM PRIMARY KEY(ID),"))
- {
- query =
- query.replace("JCR_PK_" + multiDb + "ITEM PRIMARY KEY(ID),", "JCR_PK_" + multiDb
- + "ITEM PRIMARY KEY(ID)");
- query =
- query.replace("CONSTRAINT JCR_FK_" + multiDb + "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_"
- + multiDb + "ITEM(ID)", "");
- initializationDBScript.set(i, query);
- }
- else if (query.contains("CONSTRAINT JCR_PK_" + multiDb + "VALUE PRIMARY KEY(ID),"))
- {
- query =
- query.replace("CONSTRAINT JCR_PK_" + multiDb + "VALUE PRIMARY KEY(ID),", "CONSTRAINT JCR_PK_"
- + multiDb + "VALUE PRIMARY KEY(ID)");
- query =
- query.replace("CONSTRAINT JCR_FK_" + multiDb
- + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)", "");
- initializationDBScript.set(i, query);
- }
- }
- }
- else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
- {
- String multiDb = isMultiDB ? "M" : "S";
-
- for (int i = 0; i < initializationDBScript.size(); i++)
- {
- String query = initializationDBScript.get(i);
- if (query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT")
- || query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT_NAME")
- || query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT_ID")
- || query.contains("JCR_IDX_" + multiDb + "VALUE_PROPERTY")
- || query.contains("JCR_IDX_" + multiDb + "REF_PROPERTY"))
- {
- initializationDBScript.remove(i);
- i--;
- }
- }
- }
-
- return initializationDBScript;
- }
-
- /**
* Prepare of restore tables. (Drop constraint, etc...)
*
* @param isMultiDb
@@ -278,14 +214,15 @@
* @param dialect
* String, dialect of DB
*/
- private static List<String> getRemoveIndexesScript(boolean isMultiDB, String dialect)
+ private static List<String> getRemoveIndexesScripts(boolean isMultiDB, String dialect)
{
ArrayList<String> dropScript = new ArrayList<String>();
String multiDb = isMultiDB ? "M" : "S";
String constraintName;
- if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL))
{
return dropScript;
}
@@ -293,7 +230,8 @@
constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM " + dropCommand(false, constraintName, dialect));
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI))
{
constraintName = validateConstraintName("JCR_PK_" + multiDb + "VALUE", dialect);
dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE " + dropCommand(true, constraintName, dialect));
@@ -307,9 +245,6 @@
constraintName = validateConstraintName("JCR_PK_" + multiDb + "REF", dialect);
dropScript.add("ALTER TABLE JCR_" + multiDb + "REF " + dropCommand(true, constraintName, dialect));
- constraintName = validateConstraintName("JCR_PK_" + multiDb + "CONTAINER", dialect);
- dropScript.add("ALTER TABLE JCR_" + multiDb + "CONTAINER " + dropCommand(true, constraintName, dialect));
-
dropScript.add("DROP INDEX JCR_IDX_" + multiDb + "ITEM_PARENT_FK");
dropScript.add("DROP INDEX JCR_IDX_" + multiDb + "ITEM_PARENT");
dropScript.add("DROP INDEX JCR_IDX_" + multiDb + "ITEM_PARENT_NAME");
@@ -317,7 +252,7 @@
dropScript.add("DROP INDEX JCR_IDX_" + multiDb + "VALUE_PROPERTY");
dropScript.add("DROP INDEX JCR_IDX_" + multiDb + "REF_PROPERTY");
}
- else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE DROP CONSTRAINT JCR_FK_" + multiDb + "VALUE_PROPERTY");
dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM DROP CONSTRAINT JCR_PK_" + multiDb + "ITEM");
@@ -335,7 +270,7 @@
* @param dialect
* String, dialect of DB
*/
- private static List<String> getRestoreIndexesScript(boolean isMultiDB, String dialect)
+ private static List<String> getRestoreIndexesScripts(boolean isMultiDB, String dialect)
throws RepositoryConfigurationException
{
ArrayList<String> addScript = new ArrayList<String>();
@@ -345,7 +280,7 @@
String constraintName;
String constraint;
- if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
addScript.add("ALTER TABLE JCR_" + multiDb + "ITEM ADD CONSTRAINT JCR_PK_" + multiDb
+ "ITEM PRIMARY KEY(ID)");
@@ -359,19 +294,23 @@
addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD CONSTRAINT JCR_FK_" + multiDb
+ "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)");
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT ", isMultiDB, dialect));
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_NAME", isMultiDB,
+ addScript.add(DBInitializerHelper.getObjectScript("CREATE UNIQUE INDEX JCR_IDX_" + multiDb
+ + "ITEM_PARENT ON JCR_" + multiDb + "ITEM", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("CREATE UNIQUE INDEX JCR_IDX_" + multiDb
+ + "ITEM_PARENT_NAME ON JCR_" + multiDb + "ITEM", isMultiDB,
dialect));
- addScript
- .add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_ID", isMultiDB, dialect));
- addScript
- .add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "VALUE_PROPERTY", isMultiDB, dialect));
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "REF_PROPERTY", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("CREATE UNIQUE INDEX JCR_IDX_" + multiDb
+ + "ITEM_PARENT_ID ON JCR_" + multiDb + "ITEM", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("CREATE UNIQUE INDEX JCR_IDX_" + multiDb
+ + "VALUE_PROPERTY ON JCR_" + multiDb + "VALUE", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("CREATE UNIQUE INDEX JCR_IDX_" + multiDb
+ + "REF_PROPERTY ON JCR_" + multiDb + "REF", isMultiDB, dialect));
return addScript;
}
- if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL))
{
constraintName = validateConstraintName("JCR_FK_" + multiDb + "VALUE_PROPERTY", dialect);
constraint =
@@ -379,7 +318,8 @@
addScript.add("ALTER TABLE JCR_" + multiDb + "VALUE ADD " + constraint);
}
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI))
{
constraintName = validateConstraintName("JCR_PK_" + multiDb + "VALUE", dialect);
constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(ID)";
@@ -398,17 +338,18 @@
constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(NODE_ID, PROPERTY_ID, ORDER_NUM)";
addScript.add("ALTER TABLE JCR_" + multiDb + "REF ADD " + constraint);
- constraintName = validateConstraintName("JCR_PK_" + multiDb + "CONTAINER", dialect);
- constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(VERSION)";
- addScript.add("ALTER TABLE JCR_" + multiDb + "CONTAINER ADD " + constraint);
-
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_FK", isMultiDB, dialect));
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT ", isMultiDB, dialect));
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_NAME", isMultiDB, dialect));
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_ID", isMultiDB, dialect));
- addScript
- .add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "VALUE_PROPERTY", isMultiDB, dialect));
- addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "REF_PROPERTY", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_FK ON JCR_" + multiDb
+ + "ITEM", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT ON JCR_" + multiDb
+ + "ITEM", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_NAME ON JCR_" + multiDb
+ + "ITEM", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "ITEM_PARENT_ID ON JCR_" + multiDb
+ + "ITEM", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "VALUE_PROPERTY ON JCR_" + multiDb
+ + "VALUE", isMultiDB, dialect));
+ addScript.add(DBInitializerHelper.getObjectScript("JCR_IDX_" + multiDb + "REF_PROPERTY ON JCR_" + multiDb
+ + "REF", isMultiDB, dialect));
}
constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
@@ -429,14 +370,11 @@
*/
private static String validateConstraintName(String string, String dialect)
{
- if (dialect.equals(DBConstants.DB_DIALECT_DB2) || dialect.equals(DBConstants.DB_DIALECT_DB2V8))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_DB2)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_DB2V8))
{
return string.substring(0, DB2_CONSTRAINT_NAME_LENGTH_LIMIT);
}
- else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE) && string.equals("JCR_PK_SCONTAINER"))
- {
- return "JCR_PK_MCONTAINER";
- }
else
{
return string;
@@ -454,7 +392,8 @@
*/
protected static String dropCommand(boolean isPrimaryKey, String constraintName, String dialect)
{
- if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8))
{
return isPrimaryKey == true ? "DROP PRIMARY KEY" : "DROP FOREIGN KEY " + constraintName;
}
@@ -477,16 +416,16 @@
List<String> cleanScripts = new ArrayList<String>();
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI))
{
- cleanScripts.add("drop trigger BI_JCR_" + isMultiDB + "VALUE");
- cleanScripts.add("drop sequence JCR_" + isMultiDB + "VALUE_SEQ");
+ cleanScripts.add("DROP TRIGGER BI_JCR_" + isMultiDB + "VALUE");
+ cleanScripts.add("DROP SEQUENCE JCR_" + isMultiDB + "VALUE_SEQ");
}
- cleanScripts.add("drop table JCR_" + isMultiDB + "VALUE");
- cleanScripts.add("drop table JCR_" + isMultiDB + "ITEM");
- cleanScripts.add("drop table JCR_" + isMultiDB + "REF");
- cleanScripts.add("drop table JCR_" + isMultiDB + "CONTAINER");
+ cleanScripts.add("DROP TABLE JCR_" + isMultiDB + "VALUE");
+ cleanScripts.add("DROP TABLE JCR_" + isMultiDB + "ITEM");
+ cleanScripts.add("DROP TABLE JCR_" + isMultiDB + "REF");
return cleanScripts;
}
@@ -507,7 +446,8 @@
List<String> renameScripts = new ArrayList<String>();
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI))
{
// JCR_[S,M]VALUE
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME TO JCR_" + isMultiDB + "VALUE"
@@ -544,15 +484,6 @@
renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB + "ITEM_PARENT_ID RENAME TO JCR_IDX_" + isMultiDB
+ "ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX);
- // JCR_[S,M]CONTAINER
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER RENAME TO JCR_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX
- + " RENAME CONSTRAINT JCR_PK_" + isMultiDB + "CONTAINER TO JCR_PK_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "CONTAINER RENAME TO JCR_PK_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
-
// JCR_[S,M]REF
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO JCR_" + isMultiDB + "REF"
+ OLD_OBJECT_SUFFIX);
@@ -563,7 +494,8 @@
renameScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB + "REF_PROPERTY RENAME TO JCR_IDX_" + isMultiDB
+ "REF_PROPERTY" + OLD_OBJECT_SUFFIX);
}
- else if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8))
{
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME TO JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX);
@@ -572,28 +504,22 @@
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO JCR_" + isMultiDB + "REF"
+ OLD_OBJECT_SUFFIX);
-
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER RENAME TO JCR_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
}
- else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
renameScripts.add("sp_rename JCR_" + isMultiDB + "VALUE, JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX);
renameScripts.add("sp_rename JCR_" + isMultiDB + "ITEM, JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX);
- renameScripts.add("sp_rename JCR_" + isMultiDB + "CONTAINER, JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX);
renameScripts.add("sp_rename JCR_" + isMultiDB + "REF, JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX);
renameScripts.add("sp_rename JCR_FK_" + isMultiDB + "VALUE_PROPERTY, JCR_FK_" + isMultiDB + "VALUE_PROPERTY"
+ OLD_OBJECT_SUFFIX);
renameScripts.add("sp_rename JCR_FK_" + isMultiDB + "ITEM_PARENT, JCR_FK_" + isMultiDB + "ITEM_PARENT_OLD");
}
- else if (dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
{
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE RENAME TO JCR_" + isMultiDB + "VALUE"
+ OLD_OBJECT_SUFFIX);
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM RENAME TO JCR_" + isMultiDB + "ITEM"
+ OLD_OBJECT_SUFFIX);
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER RENAME TO JCR_" + isMultiDB + "CONTAINER"
- + OLD_OBJECT_SUFFIX);
renameScripts
.add("ALTER TABLE JCR_" + isMultiDB + "REF RENAME TO JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX);
@@ -603,9 +529,6 @@
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_FK_"
+ isMultiDB + "ITEM_PARENT");
- renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX
- + " DROP CONSTRAINT JCR_PK_" + isMultiDB + "CONTAINER");
-
renameScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX + " DROP CONSTRAINT JCR_PK_"
+ isMultiDB + "ITEM");
@@ -645,7 +568,7 @@
* return list with query
* @throws RepositoryConfigurationException
*/
- protected static List<String> getRollbackRenamedScript(boolean multiDb, String dialect)
+ protected static List<String> getRollbackScripts(boolean multiDb, String dialect)
throws RepositoryConfigurationException
{
final String isMultiDB = (multiDb ? "M" : "S");
@@ -654,7 +577,8 @@
rollbackScripts.addAll(getDropTableScripts(multiDb, dialect));
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI))
{
// JCR_[S,M]VALUE
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
@@ -691,14 +615,6 @@
rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB + "ITEM_PARENT_ID" + OLD_OBJECT_SUFFIX
+ " RENAME TO JCR_IDX_" + isMultiDB + "ITEM_PARENT_ID");
- // JCR_[S,M]CONTAINER
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
- + isMultiDB + "CONTAINER");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER RENAME CONSTRAINT JCR_PK_" + isMultiDB
- + "CONTAINER" + OLD_OBJECT_SUFFIX + " TO JCR_PK_" + isMultiDB + "CONTAINER");
- rollbackScripts.add("ALTER INDEX JCR_PK_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_PK_"
- + isMultiDB + "CONTAINER");
-
// JCR_[S,M]REF
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ "REF");
@@ -709,25 +625,22 @@
rollbackScripts.add("ALTER INDEX JCR_IDX_" + isMultiDB + "REF_PROPERTY" + OLD_OBJECT_SUFFIX
+ " RENAME TO JCR_IDX_" + isMultiDB + "REF_PROPERTY");
}
- else if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8))
{
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "ITEM");
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "VALUE");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
- + isMultiDB + "CONTAINER");
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ "REF");
}
- else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
rollbackScripts.add("sp_rename JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB
+ "VALUE");
rollbackScripts.add("sp_rename JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB + "ITEM");
- rollbackScripts.add("sp_rename JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB
- + "CONTAINER");
rollbackScripts.add("sp_rename JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX + ", JCR_" + isMultiDB + "REF");
rollbackScripts.add("sp_rename JCR_FK_" + isMultiDB + "VALUE_PROPERTY" + OLD_OBJECT_SUFFIX + ", JCR_FK_"
@@ -736,14 +649,12 @@
rollbackScripts.add("sp_rename JCR_FK_" + isMultiDB + "ITEM_PARENT" + OLD_OBJECT_SUFFIX + ", JCR_FK_"
+ isMultiDB + "ITEM_PARENT");
}
- else if (dialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
{
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "VALUE");
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "ITEM");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
- + isMultiDB + "CONTAINER");
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ "REF");
@@ -756,9 +667,6 @@
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM ADD CONSTRAINT JCR_FK_" + isMultiDB
+ "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + isMultiDB + "ITEM(ID)");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER ADD CONSTRAINT JCR_PK_" + isMultiDB
- + "CONTAINER PRIMARY KEY(VERSION)");
-
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE ADD CONSTRAINT JCR_PK_" + isMultiDB
+ "VALUE PRIMARY KEY(ID)");
@@ -794,7 +702,7 @@
* @return List
* return list with query
*/
- protected static List<String> getRemoveOldObjectsScript(boolean multiDb, String dialect)
+ protected static List<String> getRemoveOldObjectsScripts(boolean multiDb, String dialect)
{
List<String> afterRetoreScripts = new ArrayList<String>();
@@ -809,15 +717,17 @@
/**
* Create list with queries to initialization database.
*
- * @param multiDb
+ * @param isMultiDb
* @param dialect
* @return
* @throws RepositoryConfigurationException
*/
- protected static List<String> getInitializationDBScript(boolean multiDb, String dialect)
+ protected static List<String> getInitializationDBScripts(boolean isMultiDb, String dialect)
throws RepositoryConfigurationException
{
- String scriptsPath = DBInitializerHelper.scriptPath(dialect, multiDb);
+ String multiDb = isMultiDb ? "M" : "S";
+
+ String scriptsPath = DBInitializerHelper.scriptPath(dialect, isMultiDb);
String script;
try
{
@@ -829,15 +739,62 @@
}
List<String> scripts = new ArrayList<String>();
-
for (String query : DBInitializerHelper.scripts(script))
{
- scripts.add(DBInitializerHelper.cleanWhitespaces(query));
+ // Skip creation JCR_S(M)CONTAINER TABLE
+ if (!query.contains("CREATE TABLE JCR_" + multiDb + "CONTAINER"))
+ {
+ scripts.add(DBInitializerHelper.cleanWhitespaces(query));
+ }
}
- String rootParent_container = DBInitializerHelper.getRootNodeInitializeScript(multiDb);
+ scripts.add(DBInitializerHelper.getRootNodeInitializeScript(isMultiDb));
- scripts.add(rootParent_container);
+ // Filter scripts
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8))
+ {
+ for (int i = 0; i < scripts.size(); i++)
+ {
+ String query = scripts.get(i);
+ if (query.contains("JCR_PK_" + multiDb + "ITEM PRIMARY KEY(ID),"))
+ {
+ query =
+ query.replace("JCR_PK_" + multiDb + "ITEM PRIMARY KEY(ID),", "JCR_PK_" + multiDb
+ + "ITEM PRIMARY KEY(ID)");
+ query =
+ query.replace("CONSTRAINT JCR_FK_" + multiDb + "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_"
+ + multiDb + "ITEM(ID)", "");
+ scripts.set(i, query);
+ }
+ else if (query.contains("CONSTRAINT JCR_PK_" + multiDb + "VALUE PRIMARY KEY(ID),"))
+ {
+ query =
+ query.replace("CONSTRAINT JCR_PK_" + multiDb + "VALUE PRIMARY KEY(ID),", "CONSTRAINT JCR_PK_"
+ + multiDb + "VALUE PRIMARY KEY(ID)");
+ query =
+ query.replace("CONSTRAINT JCR_FK_" + multiDb
+ + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)", "");
+ scripts.set(i, query);
+ }
+ }
+ }
+ else if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
+ {
+ for (int i = 0; i < scripts.size(); i++)
+ {
+ String query = scripts.get(i);
+ if (query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT")
+ || query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT_NAME")
+ || query.contains("JCR_IDX_" + multiDb + "ITEM_PARENT_ID")
+ || query.contains("JCR_IDX_" + multiDb + "VALUE_PROPERTY")
+ || query.contains("JCR_IDX_" + multiDb + "REF_PROPERTY"))
+ {
+ scripts.remove(i);
+ i--;
+ }
+ }
+ }
return scripts;
}
@@ -859,14 +816,16 @@
boolean isMultiDB =
Boolean.parseBoolean(wsEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.MULTIDB));
- String dialect = DialectDetecter.detect(jdbcConn.getMetaData());
+ String dialect = wsEntry.getContainer().getParameterValue(JDBCWorkspaceDataContainer.DB_DIALECT);
- if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI)
- || dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8)
- || dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8)
+ || dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
// Sybase doesn't allow DDL scripts inside transaction
- if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
+ if (dialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
if (!jdbcConn.getAutoCommit())
{
@@ -880,15 +839,14 @@
ArrayList<String> cleanScripts = new ArrayList<String>();
cleanScripts.addAll(getRenameScripts(isMultiDB, dialect));
- cleanScripts.addAll(getTableCreationScript(getInitializationDBScript(isMultiDB, dialect), isMultiDB,
- dialect));
- cleanScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
+ cleanScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
ArrayList<String> commitScript = new ArrayList<String>();
- commitScript.addAll(getRemoveOldObjectsScript(isMultiDB, dialect));
- commitScript.addAll(getRestoreIndexesScript(isMultiDB, dialect));
+ commitScript.addAll(getRemoveOldObjectsScripts(isMultiDB, dialect));
+ commitScript.addAll(getRestoreIndexesScripts(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, cleanScripts, getRollbackRenamedScript(isMultiDB, dialect),
+ return new DBCleaner(jdbcConn, cleanScripts, getRollbackScripts(isMultiDB, dialect),
commitScript);
}
else
@@ -896,10 +854,10 @@
List<String> cleanScripts = new ArrayList<String>();
cleanScripts.addAll(getDropTableScripts(isMultiDB, dialect));
- cleanScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
- cleanScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
+ cleanScripts.addAll(getInitializationDBScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getRemoveIndexesScripts(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), getRestoreIndexesScript(
+ return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), getRestoreIndexesScripts(
isMultiDB, dialect));
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java 2011-10-27 08:07:02 UTC (rev 5108)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializerHelper.java 2011-10-27 12:30:37 UTC (rev 5109)
@@ -66,51 +66,51 @@
public static String scriptPath(String dbDialect, boolean multiDb)
{
String sqlPath = null;
- if (dbDialect == DBConstants.DB_DIALECT_ORACLEOCI)
+ if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLEOCI))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.ora.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_ORACLE)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_ORACLE))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.ora.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_PGSQL)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_PGSQL))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.pgsql.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_MYSQL)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.mysql.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_MYSQL_UTF8)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MYSQL_UTF8))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.mysql-utf8.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_MSSQL)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_MSSQL))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.mssql.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_DERBY)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_DERBY))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.derby.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_DB2)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_DB2))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.db2.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_DB2V8)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_DB2V8))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.db2v8.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_SYBASE)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_SYBASE))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.sybase.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_INGRES)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_INGRES))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.ingres.sql";
}
- else if (dbDialect == DBConstants.DB_DIALECT_HSQLDB)
+ else if (dbDialect.equalsIgnoreCase(DBConstants.DB_DIALECT_HSQLDB))
{
sqlPath = "/conf/storage/jcr-" + (multiDb ? "m" : "s") + "jdbc.sql";
}
14 years, 6 months
exo-jcr SVN: r5108 - in jcr/trunk/exo.jcr.component.core/src/main: java/org/exoplatform/services/jcr/impl/util/jdbc and 1 other directories.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 04:07:02 -0400 (Thu, 27 Oct 2011)
New Revision: 5108
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql
jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql
Log:
EXOJCR-1509: restore previous script for table creation for MySQL
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 06:23:13 UTC (rev 5107)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/clean/rdbms/DBCleanService.java 2011-10-27 08:07:02 UTC (rev 5108)
@@ -183,13 +183,13 @@
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
- dbCleanerScripts.addAll(prepareInirializationScript(getInitializationDBScript(isMultiDB, dialect), isMultiDB,
+ dbCleanerScripts.addAll(getTableCreationScript(getInitializationDBScript(isMultiDB, dialect), isMultiDB,
dialect));
- dbCleanerScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
ArrayList<String> afterRestoreScript = new ArrayList<String>();
- afterRestoreScript.addAll(getAfterRestoreScript(isMultiDB, dialect));
- afterRestoreScript.addAll(getPostTablesRestoreScript(isMultiDB, dialect));
+ afterRestoreScript.addAll(getRemoveOldObjectsScript(isMultiDB, dialect));
+ afterRestoreScript.addAll(getRestoreIndexesScript(isMultiDB, dialect));
return new DBCleaner(jdbcConn, dbCleanerScripts, getRollbackRenamedScript(isMultiDB, dialect),
afterRestoreScript);
@@ -198,9 +198,9 @@
ArrayList<String> dbCleanerScripts = new ArrayList<String>();
dbCleanerScripts.addAll(getDropTableScripts(isMultiDB, dialect));
dbCleanerScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
- dbCleanerScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
+ dbCleanerScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, dbCleanerScripts, new ArrayList<String>(), getPostTablesRestoreScript(isMultiDB,
+ return new DBCleaner(jdbcConn, dbCleanerScripts, new ArrayList<String>(), getRestoreIndexesScript(isMultiDB,
dialect));
}
@@ -216,7 +216,7 @@
* string, dialect of DB
* @return List with database initialization scripts
*/
- private static Collection<? extends String> prepareInirializationScript(List<String> initializationDBScript,
+ private static Collection<? extends String> getTableCreationScript(List<String> initializationDBScript,
boolean isMultiDB, String dialect)
{
if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL_UTF8))
@@ -226,12 +226,26 @@
for (int i = 0; i < initializationDBScript.size(); i++)
{
String query = initializationDBScript.get(i);
- if (query.contains("JCR_FK_" + multiDb + "ITEM_PARENT")
- || query.contains("JCR_FK_" + multiDb + "VALUE_PROPERTY"))
+ if (query.contains("JCR_PK_" + multiDb + "ITEM PRIMARY KEY(ID),"))
{
- initializationDBScript.remove(i);
- i--;
+ query =
+ query.replace("JCR_PK_" + multiDb + "ITEM PRIMARY KEY(ID),", "JCR_PK_" + multiDb
+ + "ITEM PRIMARY KEY(ID)");
+ query =
+ query.replace("CONSTRAINT JCR_FK_" + multiDb + "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_"
+ + multiDb + "ITEM(ID)", "");
+ initializationDBScript.set(i, query);
}
+ else if (query.contains("CONSTRAINT JCR_PK_" + multiDb + "VALUE PRIMARY KEY(ID),"))
+ {
+ query =
+ query.replace("CONSTRAINT JCR_PK_" + multiDb + "VALUE PRIMARY KEY(ID),", "CONSTRAINT JCR_PK_"
+ + multiDb + "VALUE PRIMARY KEY(ID)");
+ query =
+ query.replace("CONSTRAINT JCR_FK_" + multiDb
+ + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)", "");
+ initializationDBScript.set(i, query);
+ }
}
}
else if (dialect.equals(DBConstants.DB_DIALECT_SYBASE))
@@ -264,13 +278,12 @@
* @param dialect
* String, dialect of DB
*/
- private static List<String> getPreTablesRestoreScript(boolean isMultiDB, String dialect)
+ private static List<String> getRemoveIndexesScript(boolean isMultiDB, String dialect)
{
ArrayList<String> dropScript = new ArrayList<String>();
String multiDb = isMultiDB ? "M" : "S";
String constraintName;
- String constraint;
if (dialect.equals(DBConstants.DB_DIALECT_MYSQL) || dialect.equals(DBConstants.DB_DIALECT_MYSQL))
{
@@ -278,29 +291,23 @@
}
constraintName = validateConstraintName("JCR_FK_" + multiDb + "ITEM_PARENT", dialect);
- constraint = "CONSTRAINT " + constraintName + " FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM " + dropCommand(false, constraintName, dialect));
if (dialect.equals(DBConstants.DB_DIALECT_ORACLE) || dialect.equals(DBConstants.DB_DIALECT_ORACLEOCI))
{
constraintName = validateConstraintName("JCR_PK_" + multiDb + "VALUE", dialect);
- constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(ID)";
dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE " + dropCommand(true, constraintName, dialect));
constraintName = validateConstraintName("JCR_FK_" + multiDb + "VALUE_PROPERTY", dialect);
- constraint =
- "CONSTRAINT " + constraintName + " FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" + multiDb + "ITEM(ID)";
dropScript.add("ALTER TABLE JCR_" + multiDb + "VALUE " + dropCommand(false, constraintName, dialect));
constraintName = validateConstraintName("JCR_PK_" + multiDb + "ITEM", dialect);
dropScript.add("ALTER TABLE JCR_" + multiDb + "ITEM " + dropCommand(true, constraintName, dialect));
constraintName = validateConstraintName("JCR_PK_" + multiDb + "REF", dialect);
- constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(NODE_ID, PROPERTY_ID, ORDER_NUM)";
dropScript.add("ALTER TABLE JCR_" + multiDb + "REF " + dropCommand(true, constraintName, dialect));
constraintName = validateConstraintName("JCR_PK_" + multiDb + "CONTAINER", dialect);
- constraint = "CONSTRAINT " + constraintName + " PRIMARY KEY(VERSION)";
dropScript.add("ALTER TABLE JCR_" + multiDb + "CONTAINER " + dropCommand(true, constraintName, dialect));
dropScript.add("DROP INDEX JCR_IDX_" + multiDb + "ITEM_PARENT_FK");
@@ -328,7 +335,7 @@
* @param dialect
* String, dialect of DB
*/
- private static List<String> getPostTablesRestoreScript(boolean isMultiDB, String dialect)
+ private static List<String> getRestoreIndexesScript(boolean isMultiDB, String dialect)
throws RepositoryConfigurationException
{
ArrayList<String> addScript = new ArrayList<String>();
@@ -707,17 +714,10 @@
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "ITEM");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "ITEM ADD CONSTRAINT JCR_FK_" + isMultiDB
- + "ITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_" + isMultiDB + "ITEM(ID)");
-
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "VALUE");
- rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "VALUE ADD CONSTRAINT JCR_FK_" + isMultiDB
- + "VALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_" + isMultiDB + "ITEM(ID)");
-
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "CONTAINER" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_"
+ isMultiDB + "CONTAINER");
-
rollbackScripts.add("ALTER TABLE JCR_" + isMultiDB + "REF" + OLD_OBJECT_SUFFIX + " RENAME TO JCR_" + isMultiDB
+ "REF");
}
@@ -794,7 +794,7 @@
* @return List
* return list with query
*/
- protected static List<String> getAfterRestoreScript(boolean multiDb, String dialect)
+ protected static List<String> getRemoveOldObjectsScript(boolean multiDb, String dialect)
{
List<String> afterRetoreScripts = new ArrayList<String>();
@@ -878,18 +878,18 @@
jdbcConn.setAutoCommit(false);
}
- ArrayList<String> dbCleanerScripts = new ArrayList<String>();
- dbCleanerScripts.addAll(getRenameScripts(isMultiDB, dialect));
- dbCleanerScripts.addAll(prepareInirializationScript(getInitializationDBScript(isMultiDB, dialect), isMultiDB,
+ ArrayList<String> cleanScripts = new ArrayList<String>();
+ cleanScripts.addAll(getRenameScripts(isMultiDB, dialect));
+ cleanScripts.addAll(getTableCreationScript(getInitializationDBScript(isMultiDB, dialect), isMultiDB,
dialect));
- dbCleanerScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
+ cleanScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
- ArrayList<String> afterRestoreScript = new ArrayList<String>();
- afterRestoreScript.addAll(getAfterRestoreScript(isMultiDB, dialect));
- afterRestoreScript.addAll(getPostTablesRestoreScript(isMultiDB, dialect));
+ ArrayList<String> commitScript = new ArrayList<String>();
+ commitScript.addAll(getRemoveOldObjectsScript(isMultiDB, dialect));
+ commitScript.addAll(getRestoreIndexesScript(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, dbCleanerScripts, getRollbackRenamedScript(isMultiDB, dialect),
- afterRestoreScript);
+ return new DBCleaner(jdbcConn, cleanScripts, getRollbackRenamedScript(isMultiDB, dialect),
+ commitScript);
}
else
{
@@ -897,9 +897,9 @@
cleanScripts.addAll(getDropTableScripts(isMultiDB, dialect));
cleanScripts.addAll(getInitializationDBScript(isMultiDB, dialect));
- cleanScripts.addAll(getPreTablesRestoreScript(isMultiDB, dialect));
+ cleanScripts.addAll(getRemoveIndexesScript(isMultiDB, dialect));
- return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), getPostTablesRestoreScript(
+ return new DBCleaner(jdbcConn, cleanScripts, new ArrayList<String>(), getRestoreIndexesScript(
isMultiDB, dialect));
}
}
Modified: jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java 2011-10-27 06:23:13 UTC (rev 5107)
+++ jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/util/jdbc/DBInitializer.java 2011-10-27 08:07:02 UTC (rev 5108)
@@ -47,8 +47,6 @@
static public String SQL_CREATETABLE = "^(CREATE(\\s)+TABLE(\\s)+(IF(\\s)+NOT(\\s)+EXISTS(\\s)+)*){1}";
- static public String SQL_ALTERTABLE = "^(ALTER(\\s)+TABLE(\\s)+(IF(\\s)+NOT(\\s)+EXISTS(\\s)+)*){1}";
-
static public String SQL_CREATEVIEW = "^(CREATE(\\s)+VIEW(\\s)+(IF(\\s)+NOT(\\s)+EXISTS(\\s)+)*){1}";
static public String SQL_OBJECTNAME = "((JCR_[A-Z_]+){1}(\\s*?|(\\(\\))*?)+)+?";
@@ -73,8 +71,6 @@
protected final Pattern creatTablePattern;
- protected final Pattern alterTablePattern;
-
protected final Pattern creatViewPattern;
protected final Pattern dbObjectNamePattern;
@@ -96,7 +92,6 @@
this.script = script(scriptPath);
this.creatTablePattern = Pattern.compile(SQL_CREATETABLE, Pattern.CASE_INSENSITIVE);
- this.alterTablePattern = Pattern.compile(SQL_ALTERTABLE, Pattern.CASE_INSENSITIVE);
this.creatViewPattern = Pattern.compile(SQL_CREATEVIEW, Pattern.CASE_INSENSITIVE);
this.dbObjectNamePattern = Pattern.compile(SQL_OBJECTNAME, Pattern.CASE_INSENSITIVE);
this.creatIndexPattern = Pattern.compile(SQL_CREATEINDEX, Pattern.CASE_INSENSITIVE);
@@ -149,25 +144,6 @@
}
}
}
- else if ((tMatcher = alterTablePattern.matcher(sql)).find())
- {
- // CREATE TABLE
- tMatcher = dbObjectNamePattern.matcher(sql);
- if (tMatcher.find())
- {
- // got table name
- String tableName = sql.substring(tMatcher.start(), tMatcher.end());
- if (isTableExists(conn, tableName))
- {
- if (LOG.isDebugEnabled())
- {
- LOG.debug("Table is already exists " + tableName);
- }
- existingTables.add(tableName);
- return true;
- }
- }
- }
else if ((tMatcher = creatViewPattern.matcher(sql)).find())
{
// CREATE VIEW
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql 2011-10-27 06:23:13 UTC (rev 5107)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql-utf8.sql 2011-10-27 08:07:02 UTC (rev 5108)
@@ -12,9 +12,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID)
+ CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID),
+ CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_MITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_MITEM ADD CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT ON JCR_MITEM(PARENT_ID, NAME(255), I_INDEX, I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_NAME ON JCR_MITEM(I_CLASS, PARENT_ID, NAME(255), I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_ID ON JCR_MITEM(I_CLASS, PARENT_ID, ID, VERSION DESC);
@@ -25,9 +25,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(56) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID)
+ CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID),
+ CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_MITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_MVALUE ADD CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MVALUE_PROPERTY ON JCR_MVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_MVALUE_STORAGE_DESC ON JCR_MVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_MREF(
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql 2011-10-27 06:23:13 UTC (rev 5107)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-mjdbc.mysql.sql 2011-10-27 08:07:02 UTC (rev 5108)
@@ -12,9 +12,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID)
+ CONSTRAINT JCR_PK_MITEM PRIMARY KEY(ID),
+ CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_MITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_MITEM ADD CONSTRAINT JCR_FK_MITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT ON JCR_MITEM(PARENT_ID, NAME, I_INDEX, I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_NAME ON JCR_MITEM(I_CLASS, PARENT_ID, NAME, I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_MITEM_PARENT_ID ON JCR_MITEM(I_CLASS, PARENT_ID, ID, VERSION DESC);
@@ -25,9 +25,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(96) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID)
+ CONSTRAINT JCR_PK_MVALUE PRIMARY KEY(ID),
+ CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_MITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_MVALUE ADD CONSTRAINT JCR_FK_MVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_MITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_MVALUE_PROPERTY ON JCR_MVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_MVALUE_STORAGE_DESC ON JCR_MVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_MREF(
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql 2011-10-27 06:23:13 UTC (rev 5107)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql-utf8.sql 2011-10-27 08:07:02 UTC (rev 5108)
@@ -14,8 +14,8 @@
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID)
+ CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_SITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_SITEM ADD CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT ON JCR_SITEM(CONTAINER_NAME, PARENT_ID, NAME(255), I_INDEX, I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_NAME ON JCR_SITEM(I_CLASS, CONTAINER_NAME, PARENT_ID, NAME(255), I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_ID ON JCR_SITEM(I_CLASS, CONTAINER_NAME, PARENT_ID, ID, VERSION DESC);
@@ -27,8 +27,8 @@
PROPERTY_ID VARCHAR(56) NOT NULL,
STORAGE_DESC VARCHAR(512),
CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID)
+ CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_SITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_SVALUE ADD CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SVALUE_PROPERTY ON JCR_SVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_SVALUE_STORAGE_DESC ON JCR_SVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_SREF(
Modified: jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql 2011-10-27 06:23:13 UTC (rev 5107)
+++ jcr/trunk/exo.jcr.component.core/src/main/resources/conf/storage/jcr-sjdbc.mysql.sql 2011-10-27 08:07:02 UTC (rev 5108)
@@ -13,9 +13,9 @@
N_ORDER_NUM INTEGER,
P_TYPE INTEGER,
P_MULTIVALUED BOOLEAN,
- CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID)
+ CONSTRAINT JCR_PK_SITEM PRIMARY KEY(ID),
+ CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_SITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_SITEM ADD CONSTRAINT JCR_FK_SITEM_PARENT FOREIGN KEY(PARENT_ID) REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT ON JCR_SITEM(CONTAINER_NAME, PARENT_ID, NAME, I_INDEX, I_CLASS, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_NAME ON JCR_SITEM(I_CLASS, CONTAINER_NAME, PARENT_ID, NAME, I_INDEX, VERSION DESC);
CREATE UNIQUE INDEX JCR_IDX_SITEM_PARENT_ID ON JCR_SITEM(I_CLASS, CONTAINER_NAME, PARENT_ID, ID, VERSION DESC);
@@ -26,9 +26,9 @@
ORDER_NUM INTEGER NOT NULL,
PROPERTY_ID VARCHAR(96) NOT NULL,
STORAGE_DESC VARCHAR(512),
- CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID)
+ CONSTRAINT JCR_PK_SVALUE PRIMARY KEY(ID),
+ CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_SITEM(ID)
) ENGINE=InnoDB;
-ALTER TABLE JCR_SVALUE ADD CONSTRAINT JCR_FK_SVALUE_PROPERTY FOREIGN KEY(PROPERTY_ID) REFERENCES JCR_SITEM(ID);
CREATE UNIQUE INDEX JCR_IDX_SVALUE_PROPERTY ON JCR_SVALUE(PROPERTY_ID, ORDER_NUM);
CREATE INDEX JCR_IDX_SVALUE_STORAGE_DESC ON JCR_SVALUE(PROPERTY_ID, STORAGE_DESC);
CREATE TABLE JCR_SREF(
14 years, 6 months
exo-jcr SVN: r5107 - jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/lock.
by do-not-reply@jboss.org
Author: tolusha
Date: 2011-10-27 02:23:13 -0400 (Thu, 27 Oct 2011)
New Revision: 5107
Modified:
jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/lock/TestLockImpl.java
Log:
EXOJCR-1590: small fix
Modified: jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/lock/TestLockImpl.java
===================================================================
--- jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/lock/TestLockImpl.java 2011-10-27 06:10:58 UTC (rev 5106)
+++ jcr/trunk/exo.jcr.component.core/src/test/java/org/exoplatform/services/jcr/impl/core/lock/TestLockImpl.java 2011-10-27 06:23:13 UTC (rev 5107)
@@ -22,7 +22,6 @@
import org.exoplatform.services.jcr.core.ExtendedNode;
import org.exoplatform.services.jcr.impl.core.NodeImpl;
import org.exoplatform.services.jcr.impl.core.lock.cacheable.AbstractCacheableLockManager;
-import org.exoplatform.services.jcr.impl.storage.JCRInvalidItemStateException;
import org.exoplatform.services.jcr.impl.storage.jdbc.JDBCWorkspaceDataContainer;
import javax.jcr.Node;
@@ -146,7 +145,7 @@
node.unlock();
fail("Exception should be thrown");
}
- catch (JCRInvalidItemStateException e)
+ catch (Exception e)
{
}
14 years, 6 months