diff options
author | rescobar | 2011-07-22 18:10:47 +0000 |
---|---|---|
committer | Ryan D. Brooks | 2011-07-22 18:10:47 +0000 |
commit | cd99d08062843397efa1690f4d7769d4bc4acb7f (patch) | |
tree | 5313cf7f45fc2dffb8efa36e5cef45fd73f20791 /plugins/org.eclipse.osee.framework.branch.management/src | |
parent | fc8c3c9888711db33d6eb20e55549312e3a579d3 (diff) | |
download | org.eclipse.osee-cd99d08062843397efa1690f4d7769d4bc4acb7f.tar.gz org.eclipse.osee-cd99d08062843397efa1690f4d7769d4bc4acb7f.tar.xz org.eclipse.osee-cd99d08062843397efa1690f4d7769d4bc4acb7f.zip |
refinement[ats_LCBBP]: Use truncate sql cmd for table cleanup
Diffstat (limited to 'plugins/org.eclipse.osee.framework.branch.management/src')
-rw-r--r-- | plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java | 47 |
1 files changed, 45 insertions, 2 deletions
diff --git a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java index e4779f3eee9..0cb6147022f 100644 --- a/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java +++ b/plugins/org.eclipse.osee.framework.branch.management/src/org/eclipse/osee/framework/branch/management/exchange/handler/BaseDbSaxHandler.java @@ -10,12 +10,19 @@ *******************************************************************************/ package org.eclipse.osee.framework.branch.management.exchange.handler; +import java.sql.DatabaseMetaData; +import java.sql.ResultSet; +import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import org.eclipse.osee.framework.branch.management.exchange.TranslationManager; +import org.eclipse.osee.framework.branch.management.internal.Activator; import org.eclipse.osee.framework.core.exception.OseeCoreException; import org.eclipse.osee.framework.database.IOseeDatabaseService; import org.eclipse.osee.framework.database.core.OseeConnection; +import org.eclipse.osee.framework.database.core.SupportedDatabase; +import org.eclipse.osee.framework.logging.OseeLog; import org.eclipse.osee.framework.resource.management.Options; /** @@ -84,7 +91,7 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { } public boolean isStorageNeeded() { - return this.isCacheAll != true && this.data.size() > this.cacheLimit; + return !isCacheAll && data.size() > cacheLimit; } protected void addData(Object[] objects) { @@ -98,8 +105,44 @@ public abstract class BaseDbSaxHandler extends BaseExportImportSaxHandler { } } + private boolean isTruncateSupported() throws OseeCoreException { + boolean isTruncateSupported = false; + DatabaseMetaData metaData = connection.getMetaData(); + if (!SupportedDatabase.isDatabaseType(metaData, SupportedDatabase.derby)) { + ResultSet resultSet = null; + try { + resultSet = metaData.getTablePrivileges(null, null, getMetaData().getTableName().toUpperCase()); + while (resultSet.next()) { + String value = resultSet.getString("PRIVILEGE"); + if ("TRUNCATE".equalsIgnoreCase(value)) { + isTruncateSupported = true; + break; + } + } + } catch (SQLException ex1) { + OseeLog.log(Activator.class, Level.INFO, ex1); + } finally { + if (resultSet != null) { + try { + resultSet.close(); + } catch (SQLException ex) { + // Do Nothing + } + } + } + } + return isTruncateSupported; + } + public void clearDataTable() throws OseeCoreException { - getDatabaseService().runPreparedUpdate(connection, String.format("DELETE FROM %s", getMetaData().getTableName())); + String cmd = isTruncateSupported() ? "TRUNCATE TABLE" : "DELETE FROM"; + String deleteSql = String.format("%s %s", cmd, getMetaData().getTableName()); + try { + getDatabaseService().runPreparedUpdate(connection, deleteSql); + } catch (OseeCoreException ex) { + OseeLog.log(Activator.class, Level.INFO, ex, "Error clearing: %s", deleteSql); + throw ex; + } } protected IOseeDatabaseService getDatabaseService() { |