提交 6807b8be 编写于 作者: J jurgen

Multitab results

上级 d701a827
......@@ -336,7 +336,7 @@ public class CoreMessages extends NLS {
public static String controls_resultset_viewer_ms;
public static String controls_resultset_viewer_status_inserted_;
public static String controls_resultset_viewer_status_empty;
public static String controls_resultset_viewer_status_no_data;
public static String controls_resultset_viewer_status_row;
......
......@@ -202,6 +202,7 @@ controls_resultset_viewer_job_update=Update data
controls_resultset_viewer_monitor_aply_changes=Apply resultset changes
controls_resultset_viewer_ms=ms
controls_resultset_viewer_status_inserted_=Inserted: {0} / Deleted: {1} / Updated: {2}
controls_resultset_viewer_status_empty=Empty
controls_resultset_viewer_status_no_data=No data
controls_resultset_viewer_status_row=Row
controls_resultset_viewer_status_rows=\ row(s)
......@@ -614,7 +615,7 @@ editors_entity_monitor_add_node=Add node "
editors_entity_monitor_preview_changes=Preview changes
editors_entity_properties_text=Properties
editors_entity_properties_tooltip_suffix=\ Properties
editors_sql_data_grid=Data Grid
editors_sql_data_grid=Results
editors_sql_description=SQL Editor
editors_sql_error_cant_execute_query_message=Can''t execute more than one query in one editor simultaneously
editors_sql_error_cant_execute_query_title=Can''t execute query
......
......@@ -187,7 +187,7 @@ ui_properties_category_information=\u0418\u043D\u0444\u043E\u0440\u043C\u0430\u0
ui_properties_category_structure=\u0421\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0430
ui_properties_task_add_folder=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u043F\u0430\u043F\u043A\u0443 "
ui_properties_task_add_node=\u0414\u043E\u0431\u0430\u0432\u0438\u0442\u044C \u0443\u0437\u0435\u043B "
editors_sql_data_grid=\u0422\u0430\u0431\u043B\u0438\u0446\u0430 \u0440\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442\u043E\u0432
editors_sql_data_grid=\u0420\u0435\u0437\u0443\u043B\u044C\u0442\u0430\u0442
editors_sql_description=\u0420\u0435\u0434\u0430\u043A\u0442\u043E\u0440 SQL
editors_sql_error_cant_execute_query_message=\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043D\u0435\u0441\u043A\u043E\u043B\u044C\u043A\u0438\u0445 \u0437\u0430\u043F\u0440\u043E\u0441\u043E\u0432 \u043E\u0434\u043D\u043E\u0432\u0440\u0435\u043C\u0435\u043D\u043D\u043E \u043D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E.
editors_sql_error_cant_execute_query_title=\u041D\u0435\u0432\u043E\u0437\u043C\u043E\u0436\u043D\u043E \u0432\u044B\u043F\u043E\u043B\u043D\u0438\u0442\u044C \u0437\u0430\u043F\u0440\u043E\u0441.
......@@ -382,6 +382,7 @@ controls_resultset_viewer_monitor_aply_changes=\u041F\u0440\u0438\u043C\u0435\u0
controls_resultset_viewer_ms=\u043C\u0441
controls_resultset_viewer_status_inserted_=\u0412\u0441\u0442\u0430\u0432\u043B\u0435\u043D\u043E: {0} / \u0443\u0434\u0430\u043B\u0435\u043D\u043E: {1} / \u0438\u0437\u043C\u0435\u043D\u0435\u043D\u043E: {2}
controls_resultset_viewer_status_no_data=\u041D\u0435\u0442 \u0434\u0430\u043D\u043D\u044B\u0445
controls_resultset_viewer_status_empty=\u041F\u0443\u0441\u0442\u043E
controls_resultset_viewer_status_row=\u0421\u0442\u0440\u043E\u043A\u0430
controls_resultset_viewer_status_rows=\ \u0441\u0442\u0440\u043E\u043A
controls_resultset_viewer_status_rows_fetched=\ \u0441\u0442\u0440\u043E\u043A \u043F\u043E\u043B\u0443\u0447\u0435\u043D\u043E
......
......@@ -417,11 +417,11 @@ public class SQLQueryJob extends DataSourceJob
if (fetchResultSets) {
// Fetch fake result set
LocalResultSet fakeResultSet = new LocalResultSet(context, curStatement);
if (updateCount >= 0) {
fakeResultSet.addColumn("Affected Rows", DBSDataKind.NUMERIC);
if (updateCount > 0) {
fakeResultSet.addColumn("Updated Rows", DBSDataKind.NUMERIC);
fakeResultSet.addRow(updateCount);
} else {
fakeResultSet.addColumn("Result", DBSDataKind.NUMERIC);
}
fetchQueryData(context, fakeResultSet);
}
......@@ -500,6 +500,27 @@ public class SQLQueryJob extends DataSourceJob
dataReceiver.fetchStart(context, curResultSet);
try {
// Retrieve source entity
{
DBCResultSetMetaData rsMeta = curResultSet.getResultSetMetaData();
String sourceName = null;
for (DBCAttributeMetaData attr : rsMeta.getAttributes()) {
String entityName = attr.getEntityName();
if (!CommonUtils.isEmpty(entityName)) {
if (sourceName == null) {
sourceName = entityName;
} else if (!sourceName.equals(entityName)) {
// Multiple source entities
sourceName = null;
break;
}
}
}
if (!CommonUtils.isEmpty(sourceName)) {
curResult.setSourceEntity(sourceName);
}
}
// Fetch all rows
while ((!hasLimits() || rowCount < rsMaxRows) && curResultSet.nextRow()) {
if (monitor.isCanceled()) {
break;
......
......@@ -33,6 +33,7 @@ public class SQLQueryResult
private boolean hasResultSet;
private Throwable error;
private long queryTime;
private String sourceEntity;
public SQLQueryResult(SQLStatementInfo statement)
{
......@@ -105,4 +106,14 @@ public class SQLQueryResult
{
this.queryTime = queryTime;
}
public String getSourceEntity()
{
return sourceEntity;
}
public void setSourceEntity(String sourceEntity)
{
this.sourceEntity = sourceEntity;
}
}
......@@ -37,6 +37,7 @@ public interface ICommandIds
//public static final String CMD_OBJECT_FILTER = "org.jkiss.dbeaver.core.object.filter"; //$NON-NLS-1$
public static final String CMD_EXECUTE_STATEMENT = "org.jkiss.dbeaver.ui.editors.sql.run.statement"; //$NON-NLS-1$
public static final String CMD_EXECUTE_STATEMENT_NEW = "org.jkiss.dbeaver.ui.editors.sql.run.resultSet"; //$NON-NLS-1$
public static final String CMD_EXECUTE_SCRIPT = "org.jkiss.dbeaver.ui.editors.sql.run.script"; //$NON-NLS-1$
public static final String CMD_EXPLAIN_PLAN = "org.jkiss.dbeaver.ui.editors.sql.run.explain"; //$NON-NLS-1$
public static final String CMD_ANALYSE_STATEMENT = "org.jkiss.dbeaver.ui.editors.sql.run.analyse"; //$NON-NLS-1$
......
......@@ -971,7 +971,7 @@ public class ResultSetViewer extends Viewer implements IDataSourceProvider, ISpr
{
if (model.getRowCount() == 0) {
if (model.getVisibleColumnCount() == 0) {
setStatus("Empty");
setStatus(CoreMessages.controls_resultset_viewer_status_empty + getExecutionTimeMessage());
} else {
setStatus(CoreMessages.controls_resultset_viewer_status_no_data + getExecutionTimeMessage());
}
......
......@@ -586,11 +586,11 @@ public class SQLEditor extends SQLEditorBase
if (newTab) {
createResultSetViewer();
}
CTabItem curTab = resultTabs.getSelection();
if (!(curTab.getData() instanceof ResultSetViewer)) {
if (!(resultTabs.getSelection().getData() instanceof ResultSetViewer)) {
// Set first results viewer by default
resultTabs.setSelection(0);
}
final CTabItem curTab = resultTabs.getSelection();
final ResultSetViewer resultsView = getResultSetViewer();
// Prepare execution job
......@@ -672,6 +672,14 @@ public class SQLEditor extends SQLEditorBase
if (queries.size() < 2) {
getSelectionProvider().setSelection(originalSelection);
}
curTab.setToolTipText(result.getStatement().getQuery());
if (!CommonUtils.isEmpty(result.getSourceEntity())) {
curTab.setText(result.getSourceEntity());
} else {
int tabIndex = getTabIndex(curTab);
curTab.setText(
CoreMessages.editors_sql_data_grid + (tabIndex == 0 ? "" : " [" + (tabIndex + 1) + "]"));
}
if (result.getQueryTime() > DBeaverCore.getGlobalPreferenceStore().getLong(PrefConstants.AGENT_LONG_OPERATION_TIMEOUT) * 1000) {
DBeaverUI.notifyAgent(
......@@ -716,7 +724,6 @@ public class SQLEditor extends SQLEditorBase
} else {
resultsView.setDataFilter(new DBDDataFilter(), false);
resultsView.refresh();
curTab.setToolTipText(queries.get(0).getQuery());
}
} else {
job.schedule();
......@@ -724,6 +731,18 @@ public class SQLEditor extends SQLEditorBase
}
}
private int getTabIndex(CTabItem tab)
{
CTabItem[] items = resultTabs.getItems();
for (int i = 0; i < items.length; i++) {
if (items[i] == tab) {
return i;
}
}
log.warn("Bad tab: " + tab);
return 0;
}
private void checkSession()
throws DBException
{
......@@ -892,7 +911,7 @@ public class SQLEditor extends SQLEditorBase
public ResultSetViewer getResultSetViewer()
{
CTabItem curTab = resultTabs == null ? null : resultTabs.getSelection();
if (curTab != null) {
if (curTab != null && !curTab.isDisposed()) {
Object tabData = curTab.getData();
if (tabData instanceof ResultSetViewer) {
return (ResultSetViewer) tabData;
......
......@@ -163,6 +163,7 @@ public class SQLEditorContributor extends BasicTextEditorActionContributor
super.contributeToToolBar(manager);
manager.add(ActionUtils.makeCommandContribution(getPage().getWorkbenchWindow(), ICommandIds.CMD_EXECUTE_STATEMENT));
manager.add(ActionUtils.makeCommandContribution(getPage().getWorkbenchWindow(), ICommandIds.CMD_EXECUTE_STATEMENT_NEW));
manager.add(ActionUtils.makeCommandContribution(getPage().getWorkbenchWindow(), ICommandIds.CMD_EXECUTE_SCRIPT));
manager.add(new Separator());
manager.add(ActionUtils.makeCommandContribution(getPage().getWorkbenchWindow(), ICommandIds.CMD_EXPLAIN_PLAN));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册