refactor IDBFactory to SQLDevToolsConfiguration, integrate SQL model
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/META-INF/MANIFEST.MF b/plugins/org.eclipse.datatools.sqltools.routineeditor/META-INF/MANIFEST.MF
index beac71d..dc6101f 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
Bundle-ManifestVersion: 2
Bundle-Name: DTP SQL Tools Routine Editor Plug-in
Bundle-SymbolicName: org.eclipse.datatools.sqltools.routineeditor;singleton:=true
-Bundle-Version: 0.7.0.200602241
+Bundle-Version: 0.7.0.200602242
Bundle-Activator: org.eclipse.datatools.sqltools.routineeditor.internal.RoutineEditorActivator
Bundle-Vendor: Eclipse.org
Bundle-Localization: plugin
@@ -18,10 +18,13 @@
org.eclipse.core.resources,
org.eclipse.debug.core,
org.eclipse.debug.ui,
- org.eclipse.datatools.sqltools.common.ui
+ org.eclipse.datatools.sqltools.common.ui,
+ org.eclipse.ui.ide
Eclipse-AutoStart: true
Eclipse-AutoStop: true
Export-Package: org.eclipse.datatools.sqltools.routineeditor,
org.eclipse.datatools.sqltools.routineeditor.launching;x-friends:="org.eclipse.datatools.sqltools.debugger.core",
- org.eclipse.datatools.sqltools.routineeditor.result
+ org.eclipse.datatools.sqltools.routineeditor.result,
+ org.eclipse.datatools.sqltools.routineeditor.ui.launching;x-internal:=true,
+ org.eclipse.datatools.sqltools.routineeditor.util;x-internal:=true
Bundle-ClassPath: routineeditor.jar
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/build.properties b/plugins/org.eclipse.datatools.sqltools.routineeditor/build.properties
index 452e0e1..a04ccee 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/build.properties
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/build.properties
@@ -8,7 +8,7 @@
schema/
jars.extra.classpath =
src.dir = src/
-plugin.version = 0.7.0.200602241
+plugin.version = 0.7.0.200602242
javadoc.dir = doc/api/
download.dir = ./download/
javac.source = 1.4
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.properties b/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.properties
new file mode 100644
index 0000000..dd76d9b
--- /dev/null
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.properties
@@ -0,0 +1,3 @@
+Routineeditor.edit= &Edit...
+
+Routineeditor.name=Routine Editor
\ No newline at end of file
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.xml b/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.xml
index 7636c76..5b01ba2 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.xml
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/plugin.xml
@@ -74,4 +74,60 @@
</extension>
+ <extension
+ point="org.eclipse.ui.popupMenus">
+ <objectContribution
+ id="org.eclipse.datatools.sqltools.routineeditor.objectContribution1"
+ objectClass="org.eclipse.datatools.modelbase.sql.tables.Trigger">
+ <action
+ label="%Routineeditor.edit"
+ class="org.eclipse.datatools.sqltools.routineeditor.ui.actions.EditRoutineAction"
+ menubarPath="slot1"
+ enablesFor="1"
+ id="org.eclipse.datatools.sqltools.routineeditor.ui.actions.EditRoutineAction">
+ <enablement>
+ <or>
+ <objectClass name = "org.eclipse.datatools.modelbase.sql.tables.Trigger"/>
+ </or>
+ </enablement>
+ </action>
+ <visibility>
+ <or>
+ <objectClass name = "org.eclipse.datatools.modelbase.sql.tables.Trigger"/>
+ </or>
+ </visibility>
+ </objectContribution>
+ <objectContribution
+ id="org.eclipse.datatools.sqltools.routineeditor.objectContribution2"
+ objectClass="org.eclipse.datatools.modelbase.sql.routines.Routine">
+ <action
+ label="%Routineeditor.edit"
+ class="org.eclipse.datatools.sqltools.routineeditor.ui.actions.EditRoutineAction"
+ menubarPath="slot1"
+ enablesFor="1"
+ id="org.eclipse.datatools.sqltools.routineeditor.ui.actions.EditRoutineAction">
+ <enablement>
+ <or>
+ <objectClass name = "org.eclipse.datatools.modelbase.sql.routines.Routine"/>
+ </or>
+ </enablement>
+ </action>
+ <visibility>
+ <or>
+ <objectClass name = "org.eclipse.datatools.modelbase.sql.routines.Routine"/>
+ </or>
+ </visibility>
+ </objectContribution>
+ </extension>
+
+ <extension
+ point="org.eclipse.ui.editors">
+ <editor
+ class="org.eclipse.datatools.sqltools.routineeditor.internal.RoutineEditor"
+ contributorClass="org.eclipse.datatools.sqltools.sqleditor.internal.SQLEditorActionContributor"
+ default="true"
+ icon="images/qrydoc.gif"
+ id="org.eclipse.datatools.sqltools.routineeditor.internal.RoutineEditor"
+ name="%RoutineEditor.name"/>
+ </extension>
</plugin>
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/launching/LaunchHelper.java b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/launching/LaunchHelper.java
index 4ea0d86..64700f1 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/launching/LaunchHelper.java
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/launching/LaunchHelper.java
@@ -22,12 +22,12 @@
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.Status;
import org.eclipse.datatools.sqltools.core.DatabaseIdentifier;
-import org.eclipse.datatools.sqltools.core.IDBFactory;
-import org.eclipse.datatools.sqltools.core.IDatabaseConfiguration;
+import org.eclipse.datatools.sqltools.core.SQLDevToolsConfiguration;
+import org.eclipse.datatools.sqltools.core.IDatabaseSetting;
import org.eclipse.datatools.sqltools.core.ProcIdentifier;
import org.eclipse.datatools.sqltools.core.ProcIdentifierImpl;
import org.eclipse.datatools.sqltools.core.SQLToolsFacade;
-import org.eclipse.datatools.sqltools.core.IDatabaseConfiguration.NotSupportedConfigurationException;
+import org.eclipse.datatools.sqltools.core.IDatabaseSetting.NotSupportedSettingException;
import org.eclipse.datatools.sqltools.core.dbitem.ParameterDescriptor;
import org.eclipse.datatools.sqltools.core.profile.NoSuchProfileException;
import org.eclipse.datatools.sqltools.routineeditor.internal.RoutineEditorActivator;
@@ -402,21 +402,21 @@
* @param configuration
* @param proc
*/
- private static boolean readQuotedIDConfig(ILaunchConfiguration configuration, ProcIdentifier proc)
+ public static boolean readQuotedIDConfig(ILaunchConfiguration configuration, ProcIdentifier proc)
{
- boolean quoted_id = true;
- IDBFactory factory = SQLToolsFacade.getDBFactory(proc.getDatabaseIdentifier(), null);
- IDatabaseConfiguration config = factory.getDatabaseConfiguration(proc.getDatabaseIdentifier());
+ boolean quoted_id = false;
+ SQLDevToolsConfiguration factory = SQLToolsFacade.getConfiguration(proc.getDatabaseIdentifier(), null);
+ IDatabaseSetting config = factory.getDatabaseSetting(proc.getDatabaseIdentifier());
if (config != null)
{
try
{
- Boolean value = (Boolean)config.getLaunchConfigProperty(configuration, IDatabaseConfiguration.C_QUOTED_IDENTIFIER);
+ Boolean value = (Boolean)config.getLaunchConfigProperty(configuration, IDatabaseSetting.C_QUOTED_IDENTIFIER);
quoted_id = value.booleanValue();
}
- catch (NotSupportedConfigurationException e)
+ catch (NotSupportedSettingException e)
{
- RoutineEditorActivator.getDefault().log(Messages.getString("NotSupportedConfigurationException.cause", IDatabaseConfiguration.C_QUOTED_IDENTIFIER));
+ RoutineEditorActivator.getDefault().log(Messages.getString("NotSupportedSettingException.cause", IDatabaseSetting.C_QUOTED_IDENTIFIER));
}
}
return quoted_id;
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java
index 20ad6c2..a38f17e 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/result/CallableSQLResultRunnable.java
@@ -13,20 +13,21 @@
import java.sql.CallableStatement;
import java.sql.Connection;
-import java.sql.DatabaseMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.runtime.CoreException;
+import org.eclipse.datatools.modelbase.sql.routines.ParameterMode;
+import org.eclipse.datatools.sqltools.core.DBHelper;
import org.eclipse.datatools.sqltools.core.DatabaseIdentifier;
-import org.eclipse.datatools.sqltools.core.IDBHelper;
import org.eclipse.datatools.sqltools.core.ISqlDataValidator;
import org.eclipse.datatools.sqltools.core.ProcIdentifier;
import org.eclipse.datatools.sqltools.core.SQLToolsFacade;
import org.eclipse.datatools.sqltools.core.dbitem.ParameterDescriptor;
import org.eclipse.datatools.sqltools.core.profile.NoSuchProfileException;
+import org.eclipse.datatools.sqltools.core.profile.ProfileUtil;
import org.eclipse.datatools.sqltools.editor.core.connection.IConnectionTracker;
import org.eclipse.datatools.sqltools.result.OperationCommand;
import org.eclipse.datatools.sqltools.result.Parameter;
@@ -48,15 +49,15 @@
public class CallableSQLResultRunnable extends ResultSupportRunnable
{
- Connection _connection;
- String _sql;
- String _detailSql;
- boolean _closeCon;
- IConnectionTracker _tracker;
- ILaunchConfiguration _configuration;
- ParameterInOutWrapper[] _pws;
- String _procName;
- private OperationCommand operationCommand;
+ protected Connection _connection;
+ protected String _sql;
+ protected String _detailSql;
+ protected boolean _closeCon;
+ protected IConnectionTracker _tracker;
+ protected ILaunchConfiguration _configuration;
+ protected ParameterInOutWrapper[] _pws;
+ protected String _procName;
+ protected OperationCommand _operationCommand;
/**
*
@@ -95,11 +96,11 @@
*/
protected OperationCommand getOperationCommand()
{
- if (operationCommand == null)
+ if (_operationCommand == null)
{
- operationCommand = new OperationCommand(OperationCommand.ACTION_EXECUTE, _detailSql, "Routine Editor", _databaseIdentifier.getProfileName(), _databaseIdentifier.getDBname());
+ _operationCommand = new OperationCommand(OperationCommand.ACTION_EXECUTE, _detailSql, "Routine Editor", _databaseIdentifier.getProfileName(), _databaseIdentifier.getDBname());
}
- return operationCommand;
+ return _operationCommand;
}
/**
@@ -121,14 +122,11 @@
int sqlType = pws[i].getParameterDescriptor().getSqlDataType();
int paramType = pws[i].getParameterDescriptor().getParmType();
String name = pws[i].getParameterDescriptor().getName();
- if (paramType == DatabaseMetaData.procedureColumnIn)
+ if (paramType == ParameterMode.IN)
{
j++;
}
- else if (paramType == DatabaseMetaData.procedureColumnUnknown //FIXME treat UNKNOWN type as OUT type
- || paramType == DatabaseMetaData.procedureColumnReturn
- || paramType == DatabaseMetaData.procedureColumnOut
- || paramType == DatabaseMetaData.procedureColumnInOut)
+ else if (paramType == ParameterMode.OUT || paramType == ParameterMode.INOUT)
{
if (name.equals(_procName))
@@ -191,14 +189,11 @@
int paramType = pws[i].getParameterDescriptor().getParmType();
String paramTypeName = pws[i].getParameterDescriptor().getParamTypeAsString();
String name = pws[i].getParameterDescriptor().getName();
- if (paramType == DatabaseMetaData.procedureColumnIn)
+ if (paramType == ParameterMode.IN)
{
j++;
}
- else if (paramType == DatabaseMetaData.procedureColumnUnknown //FIXME treat UNKNOWN type as OUT type
- || paramType == DatabaseMetaData.procedureColumnReturn
- || paramType == DatabaseMetaData.procedureColumnOut
- || paramType == DatabaseMetaData.procedureColumnInOut)
+ else if (paramType == ParameterMode.OUT || paramType == ParameterMode.INOUT)
{
if (name.equals(_procName))
{
@@ -235,7 +230,7 @@
{
RoutineEditorActivator.getDefault().log(e);
}
- IDBHelper helper = SQLToolsFacade.getDBFactory(getDatabaseIdentifier(), null).getDBHelper();
+ DBHelper helper = SQLToolsFacade.getConfiguration(getDatabaseIdentifier(), null).getDBHelper();
for (int i = 0; i < pws.length; i++)
{
int sqlType = pws[i].getParameterDescriptor().getSqlDataType();
@@ -247,12 +242,12 @@
String paramTypeName = pws[i].getParameterDescriptor().getParamTypeAsString();
String name = pws[i].getParameterDescriptor().getName();
- if (paramType == DatabaseMetaData.procedureColumnOut || paramType == DatabaseMetaData.procedureColumnReturn)
+ if (paramType == ParameterMode.OUT)
{
j++;
}
- else if (paramType == DatabaseMetaData.procedureColumnIn
- || paramType == DatabaseMetaData.procedureColumnInOut)
+ else if (paramType == ParameterMode.IN
+ || paramType == ParameterMode.INOUT)
{
j++;
String value = null;
@@ -271,7 +266,7 @@
Object v = null;
try
{
- ISqlDataValidator validator = SQLToolsFacade.getDBFactory(getDatabaseIdentifier(), null).getSQLDataService().getSQLDataValidator(getDatabaseIdentifier());
+ ISqlDataValidator validator = SQLToolsFacade.getConfiguration(getDatabaseIdentifier(), null).getSQLDataService().getSQLDataValidator(getDatabaseIdentifier());
v = validator.convert(pws[i].getParameterDescriptor().getTypeName(), value, getDatabaseIdentifier());
}
catch (Exception e1)
@@ -353,7 +348,7 @@
{
resultsViewAPI.showParameters(getOperationCommand(), convert(_pws));
}
- return true;
+ return super.handleSuccess(moreResult);
}
/**
@@ -392,7 +387,7 @@
{
if (_closeCon)
{
- connection.close();
+ ProfileUtil.closeConnection(this._databaseIdentifier.getProfileName(), this._databaseIdentifier.getDBname(), connection);
}
}
}
diff --git a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/util/RoutineUtil.java b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/util/RoutineUtil.java
index 7a99e49..f9944ef 100644
--- a/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/util/RoutineUtil.java
+++ b/plugins/org.eclipse.datatools.sqltools.routineeditor/src/org/eclipse/datatools/sqltools/routineeditor/util/RoutineUtil.java
@@ -11,12 +11,14 @@
*******************************************************************************/
package org.eclipse.datatools.sqltools.routineeditor.util;
-import java.sql.DatabaseMetaData;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import org.eclipse.datatools.modelbase.sql.routines.ParameterMode;
import org.eclipse.datatools.sqltools.core.ProcIdentifier;
+import org.eclipse.datatools.sqltools.core.SQLDevToolsConfiguration;
+import org.eclipse.datatools.sqltools.core.SQLToolsFacade;
import org.eclipse.datatools.sqltools.core.dbitem.ParameterDescriptor;
import org.eclipse.datatools.sqltools.sql.util.SQLUtil;
@@ -29,27 +31,6 @@
/**
* @return "exec ", "call ", "TRIGGER EVENT " or "" based on type
*/
- public static String getCallablePrefix(int type)
- {
- String prefix = "";
- switch (type)
- {
- case ProcIdentifier.TYPE_SP:
- prefix = "exec ";
- break;
- case ProcIdentifier.TYPE_UDF:
- prefix = "select ";
- break;
- case ProcIdentifier.TYPE_EVENT:
- prefix = "TRIGGER EVENT ";
- break;
- }
- return prefix;
- }
-
- /**
- * @return "exec ", "call ", "TRIGGER EVENT " or "" based on type
- */
public static String getCallableStatementPrefix(int type)
{
String prefix = "";
@@ -82,7 +63,8 @@
StringBuffer buffer = new StringBuffer(20);
buffer.append("{?=");
int type = proc == null ? ProcIdentifier.TYPE_SP : proc.getType();
- buffer.append(getCallableStatementPrefix(type));
+ SQLDevToolsConfiguration config = SQLToolsFacade.getConfigurationByProfileName(proc.getDatabaseIdentifier().getProfileName());
+ buffer.append(config.getExecutionService().getCallableStatementPrefix(proc.getType()));
String procName = null;
if (proc != null)
@@ -101,31 +83,29 @@
{
String name = pds[i].getName();
- if (pds[i].getParmType() == DatabaseMetaData.procedureColumnIn
- || pds[i].getParmType() == DatabaseMetaData.procedureColumnInOut
- || pds[i].getParmType() == DatabaseMetaData.procedureColumnOut
- || pds[i].getParmType() == DatabaseMetaData.procedureColumnUnknown)
+ if (name.equals(procName))
{
- if (name.equals(procName))
- {
- continue;
- }
- if (j != 0)
- {
- buffer.append(",?"); //$NON-NLS-1$
- }
- else
- {
- buffer.append("?");
- }
- j++;
+ continue;
}
+ if (j != 0)
+ {
+ buffer.append(",?"); //$NON-NLS-1$
+ }
+ else
+ {
+ buffer.append("?");
+ }
+ j++;
}
if (type == ProcIdentifier.TYPE_UDF || type == ProcIdentifier.TYPE_SP)
{
buffer.append(")"); //$NON-NLS-1$
}
}
+ else
+ {
+ buffer.append("()");
+ }
buffer.append("}");
return buffer.toString();
}
@@ -142,7 +122,8 @@
{
StringBuffer buffer = new StringBuffer(20);
int type = proc == null ? ProcIdentifier.TYPE_SP : proc.getType();
- buffer.append(getCallableStatementPrefix(type));
+ SQLDevToolsConfiguration config = SQLToolsFacade.getConfigurationByProfileName(proc.getDatabaseIdentifier().getProfileName());
+ buffer.append(config.getExecutionService().getCallableStatementPrefix(proc.getType()));
String LINESEPARATOR = System.getProperty("line.separator");
String procName = null;
@@ -165,8 +146,8 @@
String name = pds[i].getName();
String prefix = "";
- if (pds[i].getParmType() == DatabaseMetaData.procedureColumnIn
- || pds[i].getParmType() == DatabaseMetaData.procedureColumnInOut)
+ if (pds[i].getParmType() == ParameterMode.IN
+ || pds[i].getParmType() == ParameterMode.INOUT)
{
String value =null;
if (values!=null && values.size()>=(k+1))
@@ -194,8 +175,7 @@
j++;
}
- if (pds[i].getParmType() == DatabaseMetaData.procedureColumnOut
- || pds[i].getParmType() == DatabaseMetaData.procedureColumnUnknown)
+ if (pds[i].getParmType() == ParameterMode.OUT)
{
if (name.equals(procName))
{
@@ -238,7 +218,8 @@
{
StringBuffer buffer = new StringBuffer(20);
int type = proc == null ? ProcIdentifier.TYPE_SP : proc.getType();
- buffer.append(getCallablePrefix(type));
+ SQLDevToolsConfiguration config = SQLToolsFacade.getConfigurationByProfileName(proc.getDatabaseIdentifier().getProfileName());
+ buffer.append(config.getExecutionService().getCallableStatementPrefix(proc.getType()));
if (proc != null)
buffer.append(proc.getCallableString(quoted_id));