提交 20fdb9fd 编写于 作者: A Alexander Fedorov

#2556 add attach settings

Former-commit-id: 318883f3
上级 f1890092
......@@ -33,10 +33,16 @@ public interface DBGController {
public static final String DATABASE_NAME = "databaseName"; //$NON-NLS-1$
public static final String SCHEMA_NAME = "schemaName"; //$NON-NLS-1$
public static final String PROCEDURE_OID = "procedureOID"; //$NON-NLS-1$
public static final String PROCESS_ID = "processID"; //$NON-NLS-1$
public static final String PROCEDURE_NAME = "procedureName"; //$NON-NLS-1$
public static final String PROCEDURE_CALL = "procedureCall"; //$NON-NLS-1$
public static final String ATTACH_PROCESS = "attachProcess"; //$NON-NLS-1$
public static final String ATTACH_PROCESS_ANY = "-1"; //$NON-NLS-1$
public static final String ATTACH_KIND = "attachKind"; //$NON-NLS-1$
public static final String ATTACH_KIND_LOCAL = "LOCAL"; //$NON-NLS-1$
public static final String ATTACH_KIND_GLOBAL = "GLOBAL"; //$NON-NLS-1$
public static final String SCRIPT_EXECUTE = "scriptExecute"; //$NON-NLS-1$
public static final String SCRIPT_TEXT = "scriptText"; //$NON-NLS-1$
DBPDataSourceContainer getDataSourceContainer();
Map<String, Object> getDebugConfiguration();
......
......@@ -63,10 +63,11 @@ public abstract class DatabaseLaunchDelegate extends LaunchConfigurationDelegate
attributes.put(DBGController.SCHEMA_NAME, DebugCore.extractSchemaName(configuration));
attributes.put(DBGController.PROCEDURE_OID, DebugCore.extractProcedureOid(configuration));
attributes.put(DBGController.PROCEDURE_NAME, DebugCore.extractProcedureName(configuration));
attributes.put(DBGController.PROCEDURE_CALL, DebugCore.extractProcedureCall(configuration));
//FIXME:AF:extract from launch configuration
//FIXME -1 - target PID (-1 for ANY PID)
attributes.put(DBGController.PROCESS_ID, -1);
attributes.put(DBGController.ATTACH_PROCESS, DebugCore.extractAttachProcess(configuration));
attributes.put(DBGController.ATTACH_KIND, DebugCore.extractAttachKind(configuration));
attributes.put(DBGController.SCRIPT_EXECUTE, DebugCore.extractScriptExecute(configuration));
attributes.put(DBGController.SCRIPT_TEXT, DebugCore.extractScriptText(configuration));
//Well, put it all for now
attributes.putAll(configuration.getAttributes());
return attributes;
......
......@@ -80,8 +80,17 @@ public class DebugCore {
public static final String ATTR_PROCEDURE_NAME = BUNDLE_SYMBOLIC_NAME + '.' + "ATTR_PROCEDURE_NAME"; //$NON-NLS-1$
public static final String ATTR_PROCEDURE_NAME_DEFAULT = ""; //$NON-NLS-1$
public static final String ATTR_PROCEDURE_CALL = BUNDLE_SYMBOLIC_NAME + '.' + "ATTR_PROCEDURE_CALL"; //$NON-NLS-1$
public static final String ATTR_PROCEDURE_CALL_DEFAULT = ""; //$NON-NLS-1$
public static final String ATTR_ATTACH_PROCESS = BUNDLE_SYMBOLIC_NAME + '.' + "ATTACH_PROCESS"; //$NON-NLS-1$
public static final String ATTR_ATTACH_PROCESS_DEFAULT = DBGController.ATTACH_PROCESS_ANY;
public static final String ATTR_ATTACH_KIND = BUNDLE_SYMBOLIC_NAME + '.' + "ATTR_ATTACH_KIND"; //$NON-NLS-1$
public static final String ATTR_ATTACH_KIND_DEFAULT = DBGController.ATTACH_KIND_LOCAL;
public static final String ATTR_SCRIPT_EXECUTE = BUNDLE_SYMBOLIC_NAME + '.' + "ATTR_SCRIPT_EXECUTE"; //$NON-NLS-1$
public static final String ATTR_SCRIPT_EXECUTE_DEFAULT = Boolean.FALSE.toString();
public static final String ATTR_SCRIPT_TEXT = BUNDLE_SYMBOLIC_NAME + '.' + "ATTR_SCRIPT_TEXT"; //$NON-NLS-1$
public static final String ATTR_SCRIPT_TEXT_DEFAULT = ""; //$NON-NLS-1$
public static final String ATTR_NODE_PATH = BUNDLE_SYMBOLIC_NAME + '.' + "ATTR_NODE_PATH"; //$NON-NLS-1$
public static final String ATTR_NODE_PATH_DEFAULT = ""; //$NON-NLS-1$
......@@ -119,13 +128,13 @@ public class DebugCore {
return call;
}
public static String composeProcedureCall(DBSProcedure procedure) {
public static String composeScriptText(DBSProcedure procedure) {
try {
return composeProcedureCall(procedure, new VoidProgressMonitor());
} catch (DBException e) {
String message = NLS.bind("Failed to compose call for {0}", procedure);
log.error(message , e);
return ATTR_PROCEDURE_CALL_DEFAULT;
return ATTR_SCRIPT_TEXT_DEFAULT;
}
}
......@@ -189,8 +198,20 @@ public class DebugCore {
return extractStringAttribute(configuration, ATTR_PROCEDURE_NAME, ATTR_PROCEDURE_NAME_DEFAULT);
}
public static String extractProcedureCall(ILaunchConfiguration configuration) {
return extractStringAttribute(configuration, ATTR_PROCEDURE_CALL, ATTR_PROCEDURE_CALL_DEFAULT);
public static String extractAttachProcess(ILaunchConfiguration configuration) {
return extractStringAttribute(configuration, ATTR_ATTACH_PROCESS, ATTR_ATTACH_PROCESS_DEFAULT);
}
public static String extractAttachKind(ILaunchConfiguration configuration) {
return extractStringAttribute(configuration, ATTR_ATTACH_KIND, ATTR_ATTACH_KIND_DEFAULT);
}
public static String extractScriptExecute(ILaunchConfiguration configuration) {
return extractStringAttribute(configuration, ATTR_SCRIPT_EXECUTE, ATTR_SCRIPT_EXECUTE_DEFAULT);
}
public static String extractScriptText(ILaunchConfiguration configuration) {
return extractStringAttribute(configuration, ATTR_SCRIPT_TEXT, ATTR_SCRIPT_TEXT_DEFAULT);
}
public static String extractNodePath(ILaunchConfiguration configuration) {
......@@ -249,7 +270,9 @@ public class DebugCore {
}
final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel();
DBNDatabaseNode node = navigatorModel.getNodeByObject(dbsObject);
return node.getNodeItemPath();
if (node != null) {
return node.getNodeItemPath();
}
}
if (object instanceof String) {
// well, let's be positive and assume it's a node path already
......
......@@ -26,20 +26,18 @@ public class DebugUIMessages extends NLS {
public static String DatabaseStandardBreakpointPane_description;
public static String DatabaseStandardBreakpointPane_name;
public static String DatabaseTab_driver_group_text;
public static String DatabaseTab_connection_group_text;
public static String DatabaseTab_driver_label_text;
public static String DatabaseTab_datasource_group_text;
public static String DatabaseTab_datasource_label_text;
public static String DatabaseTab_database_group_text;
public static String DatabaseTab_procedure_group_text;
public static String DatabaseTab_database_label_text;
public static String DatabaseTab_schema_group_text;
public static String DatabaseTab_schema_label_text;
public static String DatabaseTab_oid_group_text;
public static String DatabaseTab_oid_label_text;
public static String DatabaseTab_name_group_text;
public static String DatabaseTab_name_label_text;
public static String DatabaseTab_call_group_text;
public static String DatabaseTab_call_label_text;
public static String DatabaseTab_attach_group_text;
public static String DatabaseTab_script_execute_text;
public static String DatabaseTab_name;
......
......@@ -17,20 +17,18 @@
DatabaseStandardBreakpointPane_name=Breakpoint Settings
DatabaseStandardBreakpointPane_description=Breakpoint settings
DatabaseTab_driver_group_text=Connection settings
DatabaseTab_driver_label_text=Driver:
DatabaseTab_datasource_group_text=Connection
DatabaseTab_datasource_label_text=Connection:
DatabaseTab_database_group_text=Database settings
DatabaseTab_database_label_text=Database:
DatabaseTab_schema_group_text=Schema
DatabaseTab_schema_label_text=Schema:
DatabaseTab_oid_group_text=OID
DatabaseTab_oid_label_text=OID:
DatabaseTab_name_group_text=Procedure settings
DatabaseTab_name_label_text=Name:
DatabaseTab_call_group_text=Call
DatabaseTab_call_label_text=Call:
DatabaseTab_connection_group_text=Connection settings
DatabaseTab_driver_label_text=Driver
DatabaseTab_datasource_label_text=DataSource
DatabaseTab_procedure_group_text=Procedure settings
DatabaseTab_database_label_text=Database
DatabaseTab_schema_label_text=Schema
DatabaseTab_oid_label_text=OID
DatabaseTab_name_label_text=Name
DatabaseTab_attach_group_text=Attach settings
DatabaseTab_script_execute_text=Execute script
DatabaseTab_name=&Main
......
......@@ -31,7 +31,6 @@ import org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNModel;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.struct.DBSObject;
public class PostgreSqlDebugCore {
......@@ -66,7 +65,11 @@ public class PostgreSqlDebugCore {
workingCopy.setAttribute(DebugCore.ATTR_SCHEMA_NAME, schemaName);
workingCopy.setAttribute(DebugCore.ATTR_PROCEDURE_OID, String.valueOf(procedure.getObjectId()));
workingCopy.setAttribute(DebugCore.ATTR_PROCEDURE_NAME, procedureName);
workingCopy.setAttribute(DebugCore.ATTR_PROCEDURE_CALL, DebugCore.composeProcedureCall(procedure));
workingCopy.setAttribute(DebugCore.ATTR_ATTACH_PROCESS, DebugCore.ATTR_ATTACH_PROCESS_DEFAULT);
workingCopy.setAttribute(DebugCore.ATTR_ATTACH_KIND, DebugCore.ATTR_ATTACH_KIND_DEFAULT);
workingCopy.setAttribute(DebugCore.ATTR_SCRIPT_EXECUTE, DebugCore.ATTR_SCRIPT_EXECUTE_DEFAULT);
workingCopy.setAttribute(DebugCore.ATTR_SCRIPT_TEXT, DebugCore.composeScriptText(procedure));
final DBNModel navigatorModel = DBeaverCore.getInstance().getNavigatorModel();
DBNDatabaseNode node = navigatorModel.getNodeByObject(procedure);
workingCopy.setAttribute(DebugCore.ATTR_NODE_PATH, node.getNodeItemPath());
......
......@@ -142,11 +142,10 @@ public class PostgreDebugController extends DBGBaseController {
public void attachSession(DBGSession session, DBCExecutionContext sessionContext, Map<String, Object> configuration, DBRProgressMonitor monitor) throws DBException {
PostgreDebugSession pgSession = (PostgreDebugSession) session;
JDBCExecutionContext sessionJdbc = (JDBCExecutionContext) sessionContext;
//FIXME -1 - target PID (-1 for ANY PID)
int oid = Integer.parseInt(String.valueOf(configuration.get(PROCEDURE_OID)));
int pid = Integer.parseInt(String.valueOf(configuration.get(PROCESS_ID)));
int pid = Integer.parseInt(String.valueOf(configuration.get(ATTACH_PROCESS)));
boolean global = configuration.get(ATTACH_KIND) == PostgreDebugAttachKind.LOCAL; //FIXME Only local now
String call = (String) configuration.get(PROCEDURE_CALL);
String call = (String) configuration.get(SCRIPT_TEXT);
pgSession.attach(sessionJdbc, oid, pid,global,call);
//DBPDataSource dataSource = sessionContext.getDataSource();
//executeProcedure(dataSource, configuration, monitor);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册