提交 73c51a59 编写于 作者: S Sergei.Rider

Merge remote-tracking branch 'origin/devel' into devel

......@@ -40,7 +40,7 @@
<element name="parameter">
<complexType>
<attribute name="name" type="string"/>
<attribute name="logName" type="string"/>
<attribute name="longName" type="string"/>
<attribute name="description" type="string"/>
<attribute name="hasArg" type="boolean"/>
<attribute name="exitAfterExecute" type="boolean"/>
......
......@@ -253,6 +253,9 @@ public class DBeaverApplication implements IApplication, DBPApplication {
// Error may occur if -data parameter was specified at startup
System.err.println("Can't switch workspace to '" + defaultHomePath + "' - " + e.getMessage()); //$NON-NLS-1$ //$NON-NLS-2$
}
// Custom parameters
DBeaverCommandLine.handleCustomParameters();
return true;
}
......
......@@ -20,22 +20,20 @@ import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IExtensionRegistry;
import org.eclipse.core.runtime.Platform;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.core.CoreCommands;
import org.jkiss.dbeaver.core.DBeaverUI;
import org.jkiss.dbeaver.core.application.rpc.IInstanceController;
import org.jkiss.dbeaver.core.application.rpc.InstanceClient;
import org.jkiss.dbeaver.ui.ActionUtils;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.ArrayUtils;
import org.jkiss.utils.CommonUtils;
import org.osgi.framework.Bundle;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.*;
/**
* Command line processing.
......@@ -50,6 +48,8 @@ public class DBeaverCommandLine
{
private static final Log log = Log.getLog(DBeaverCommandLine.class);
public static final String EXTENSION_ID = "org.jkiss.dbeaver.commandLine";
public static final String PARAM_HELP = "help";
public static final String PARAM_FILE = "f";
public static final String PARAM_STOP = "stop";
......@@ -81,6 +81,54 @@ public class DBeaverCommandLine
.addOption("showlocation", false, "Show location")
;
public interface ParameterHandler {
void handleParameter(String name, String value);
}
private static class ParameterDescriptor {
String name;
String longName;
String description;
boolean hasArg;
boolean exitAfterExecute;
ParameterHandler handler;
public ParameterDescriptor(IConfigurationElement config) throws Exception {
this.name = config.getAttribute("name");
this.longName = config.getAttribute("longName");
this.description = config.getAttribute("description");
this.hasArg = CommonUtils.toBoolean(config.getAttribute("hasArg"));
this.exitAfterExecute = CommonUtils.toBoolean(config.getAttribute("exitAfterExecute"));
Bundle cBundle = Platform.getBundle(config.getContributor().getName());
Class<?> implClass = cBundle.loadClass(config.getAttribute("handler"));
handler = (ParameterHandler) implClass.newInstance();
}
}
private static Map<String, ParameterDescriptor> customParameters = new LinkedHashMap<>();
static {
IExtensionRegistry er = Platform.getExtensionRegistry();
// Load datasource providers from external plugins
IConfigurationElement[] extElements = er.getConfigurationElementsFor(EXTENSION_ID);
for (IConfigurationElement ext : extElements) {
if ("parameter".equals(ext.getName())) {
try {
ParameterDescriptor parameter = new ParameterDescriptor(ext);
customParameters.put(parameter.name, parameter);
} catch (Exception e) {
log.error("Can't load contributed parameter", e);
}
}
}
for (ParameterDescriptor param : customParameters.values()) {
ALL_OPTIONS.addOption(param.name, param.longName, param.hasArg, param.description);
}
}
/**
* @return true if called should exit after CLI processing
*/
......@@ -171,7 +219,7 @@ public class DBeaverCommandLine
HelpFormatter helpFormatter = new HelpFormatter();
helpFormatter.setWidth(120);
helpFormatter.setOptionComparator((o1, o2) -> 0);
helpFormatter.printHelp("dbeaver", GeneralUtils.getProductTitle(), ALL_OPTIONS, "(C) 2017 JKISS", true);
helpFormatter.printHelp("dbeaver", GeneralUtils.getProductTitle(), ALL_OPTIONS, "(C) 2018 JKISS", true);
return true;
}
if (commandLine.hasOption(PARAM_NEW_INSTANCE)) {
......@@ -200,4 +248,21 @@ public class DBeaverCommandLine
}
return false;
}
public static void handleCustomParameters() {
CommandLine commandLine = getCommandLine();
if (commandLine == null) {
return;
}
for (ParameterDescriptor param : customParameters.values()) {
if (!param.exitAfterExecute) {
}
if (commandLine.hasOption(param.name)) {
param.handler.handleParameter(
param.name,
param.hasArg ? commandLine.getOptionValue(param.name) : null);
}
}
}
}
......@@ -1105,7 +1105,7 @@ pref_page_database_general_label_double_click_connection_expand_collapse = Expan
pref_page_connection_types_label_table_column_name = Name
pref_page_connection_types_label_table_column_description = Description
pref_page_connection_types_label_delete_connection_type = Delete connection type
pref_page_connection_types_label_delete_connection_type_description = Are you sure you want to delete connection type ' {0} '?\n All connections of this type will be reset to default type ({1})
pref_page_connection_types_label_delete_connection_type_description = Are you sure you want to delete connection type ''{0}'' ?\n All connections of this type will be reset to default type ({1})
pref_page_connection_types_group_settings = Settings
pref_page_connection_types_label_name = Name
pref_page_connection_types_label_description = Description
......
......@@ -35,14 +35,14 @@ import org.jkiss.dbeaver.ui.actions.navigator.NavigatorActionExecuteTool;
import org.jkiss.dbeaver.ui.navigator.NavigatorUtils;
import org.jkiss.utils.CommonUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.*;
public class DataSourceToolsContributor extends DataSourceMenuContributor
{
private static final boolean SHOW_GROUPS_AS_SUBMENU = false;
@Override
protected void fillContributionItems(List<IContributionItem> menuItems)
{
......@@ -72,12 +72,21 @@ public class DataSourceToolsContributor extends DataSourceMenuContributor
IWorkbenchPart activePart = workbenchWindow.getActivePage().getActivePart();
if (activePart != null) {
Map<ToolGroupDescriptor, IMenuManager> groupsMap = new HashMap<>();
Set<ToolGroupDescriptor> groupSet = new HashSet<>();
for (ToolDescriptor tool : tools) {
hasTools = true;
IMenuManager parentMenu = null;
if (tool.getGroup() != null) {
parentMenu = getGroupMenu(menuItems, groupsMap, tool.getGroup());
if (SHOW_GROUPS_AS_SUBMENU) {
parentMenu = getGroupMenu(menuItems, groupsMap, tool.getGroup());
} else {
if (!groupSet.contains(tool.getGroup())) {
groupSet.add(tool.getGroup());
menuItems.add(new Separator(tool.getGroup().getId()));
}
}
}
IAction action = ActionUtils.makeAction(
new NavigatorActionExecuteTool(workbenchWindow, tool),
activePart.getSite(),
......
......@@ -496,6 +496,7 @@
<extension point="org.jkiss.dbeaver.tools">
<tools>
<toolGroup id="org.jkiss.dbeaver.ext.db2.tools.maintenance" label="Statistics"/>
<tool
class="org.jkiss.dbeaver.ext.db2.tools.DB2ToolShowError"
description="Display SQL Error Message"
......@@ -508,6 +509,7 @@
class="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2RunstatsTool"
description="Runstats"
id="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2RunstatsTool"
group="org.jkiss.dbeaver.ext.db2.tools.maintenance"
label="%tool.org.jkiss.dbeaver.ext.db2.table.runstats.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.db2.model.DB2Table"/>
......@@ -516,6 +518,7 @@
class="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2ReorgTableTool"
description="Reorg table"
id="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2ReorgTableTool"
group="org.jkiss.dbeaver.ext.db2.tools.maintenance"
label="%tool.org.jkiss.dbeaver.ext.db2.table.reorg.name"
singleton="true">
<objectType name="org.jkiss.dbeaver.ext.db2.model.DB2Table"/>
......@@ -524,6 +527,7 @@
class="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2ReorgIndexTool"
description="Reorg index"
id="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2ReorgIndexTool"
group="org.jkiss.dbeaver.ext.db2.tools.maintenance"
label="%tool.org.jkiss.dbeaver.ext.db2.table.reorgix.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.db2.model.DB2Table"/>
......@@ -532,6 +536,7 @@
class="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2ReorgCheckTableTool"
description="Reorg check table"
id="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2ReorgCheckTableTool"
group="org.jkiss.dbeaver.ext.db2.tools.maintenance"
label="%tool.org.jkiss.dbeaver.ext.db2.table.reorgcheck.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.db2.model.DB2Table"/>
......@@ -540,6 +545,7 @@
class="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2TruncateTool"
description="Truncate table"
id="org.jkiss.dbeaver.ext.db2.tools.maintenance.DB2Truncate"
group="org.jkiss.dbeaver.ext.db2.tools.maintenance"
label="%tool.org.jkiss.dbeaver.ext.db2.table.truncate.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.db2.model.DB2Table"/>
......
......@@ -323,6 +323,7 @@
class="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolAnalyse"
description="Analyse table(s)"
id="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolAnalyse"
group="org.jkiss.dbeaver.ext.mysql.tools.maintenance"
label="Analyse"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.mysql.model.MySQLTable"/>
......@@ -331,6 +332,7 @@
class="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolCheck"
description="Check table(s)"
id="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolCheck"
group="org.jkiss.dbeaver.ext.mysql.tools.maintenance"
label="Check"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.mysql.model.MySQLTable"/>
......@@ -339,6 +341,7 @@
class="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolOptimize"
description="Optimize table(s)"
id="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolOptimize"
group="org.jkiss.dbeaver.ext.mysql.tools.maintenance"
label="Optimize"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.mysql.model.MySQLTable"/>
......@@ -347,6 +350,7 @@
class="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolRepair"
description="Repair table(s)"
id="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolRepair"
group="org.jkiss.dbeaver.ext.mysql.tools.maintenance"
label="Repair"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.mysql.model.MySQLTable"/>
......@@ -355,6 +359,7 @@
class="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolTruncate"
description="Truncate table(s)"
id="org.jkiss.dbeaver.ext.mysql.tools.maintenance.MySQLToolTruncate"
group="org.jkiss.dbeaver.ext.mysql.tools.maintenance"
label="Truncate"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.mysql.model.MySQLTable"/>
......
......@@ -426,7 +426,8 @@
<extension point="org.jkiss.dbeaver.tools">
<tools>
<toolGroup id="org.jkiss.dbeaver.ext.oracle.tools.maintenance" label="Statistics"/>
<toolGroup id="org.jkiss.dbeaver.ext.oracle.tools.statistics" label="Statistics"/>
<toolGroup id="org.jkiss.dbeaver.ext.oracle.tools.maintenance" label="Maintenance"/>
<tool
class="org.jkiss.dbeaver.ext.oracle.tools.OracleToolScript"
description="Execute script with native client"
......@@ -439,6 +440,7 @@
class="org.jkiss.dbeaver.ext.oracle.tools.maintenance.OracleToolValidateStructure"
description="Validate Structure"
id="org.jkiss.dbeaver.ext.oracle.tools.maintenance.OracleToolTruncate"
group="org.jkiss.dbeaver.ext.oracle.tools.statistics"
label="Validate Structure"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.oracle.model.OracleTable"/>
......@@ -447,6 +449,7 @@
class="org.jkiss.dbeaver.ext.oracle.tools.maintenance.OracleToolGatherStatistics"
description="Gather statistics"
id="org.jkiss.dbeaver.ext.oracle.tools.maintenance.OracleToolGatherStatistics"
group="org.jkiss.dbeaver.ext.oracle.tools.statistics"
label="Gather Statistics"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.oracle.model.OracleTable"/>
......@@ -457,6 +460,7 @@
class="org.jkiss.dbeaver.ext.oracle.tools.maintenance.OracleToolTruncate"
description="Truncate table"
id="org.jkiss.dbeaver.ext.oracle.tools.maintenance.OracleToolTruncate"
group="org.jkiss.dbeaver.ext.oracle.tools.maintenance"
label="Truncate"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.oracle.model.OracleTable"/>
......
......@@ -399,6 +399,7 @@
class="org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolAnalyze"
description="%tools.analyze.description"
id="org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolAnalyze"
group="org.jkiss.dbeaver.ext.postgresql.tools.maintenance"
label="%tools.analyze.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase"/>
......@@ -408,6 +409,7 @@
class="org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolVacuum"
description="%tools.vacuum.description"
id="org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolVacuum"
group="org.jkiss.dbeaver.ext.postgresql.tools.maintenance"
label="%tools.vacuum.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase"/>
......@@ -417,6 +419,7 @@
class="org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolTruncate"
description="%tools.truncate.description"
id="org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolTruncate"
group="org.jkiss.dbeaver.ext.postgresql.tools.maintenance"
label="%tools.truncate.name"
singleton="false">
<objectType name="org.jkiss.dbeaver.ext.postgresql.model.PostgreTableBase"/>
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册