diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageLoadSettings.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageLoadSettings.java index a70b16677bede21de11b9e6423a955f8ee2e758b..d0e3b0c312a041651b562b436ea0a35a0491c072 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageLoadSettings.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/database/DatabaseConsumerPageLoadSettings.java @@ -108,6 +108,13 @@ public class DatabaseConsumerPageLoadSettings extends ActiveWizardPage DBeaverCore.getGlobalPreferenceStore().getLong(DBeaverPreferences.AGENT_LONG_OPERATION_TIMEOUT) * 1000) { - DBeaverUI.notifyAgent( - "Data transfer completed", !hasErrors ? IStatus.INFO : IStatus.ERROR); - } + UIUtils.asyncExec(() -> { + // Make a sound + Display.getCurrent().beep(); + // Notify agent + if (time > DBeaverCore.getGlobalPreferenceStore().getLong(DBeaverPreferences.AGENT_LONG_OPERATION_TIMEOUT) * 1000) { + DBeaverUI.notifyAgent( + "Data transfer completed", !hasErrors ? IStatus.INFO : IStatus.ERROR); + } + if (settings.isShowFinalMessage()) { // Show message box UIUtils.showMessageBox( null, diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/wizard/DataTransferSettings.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/wizard/DataTransferSettings.java index e9914ed841d8cf0db4e2e22e7172ec0acc753640..a8d19d67c7b41fc5c193b30f810ef1a144098d71 100644 --- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/wizard/DataTransferSettings.java +++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/tools/transfer/wizard/DataTransferSettings.java @@ -52,8 +52,7 @@ public class DataTransferSettings { IDataTransferSettings settings; IWizardPage[] pages; - private NodeSettings(DataTransferNodeDescriptor sourceNode) throws DBException - { + private NodeSettings(DataTransferNodeDescriptor sourceNode) throws DBException { this.sourceNode = sourceNode; this.settings = sourceNode.createSettings(); this.pages = sourceNode.createWizardPages(); @@ -67,7 +66,7 @@ public class DataTransferSettings { private DataTransferNodeDescriptor consumer; private DataTransferProcessorDescriptor processor; - private Map> processorPropsHistory = new HashMap<>(); + private Map> processorPropsHistory = new HashMap<>(); private Map nodeSettings = new LinkedHashMap<>(); @@ -76,8 +75,9 @@ public class DataTransferSettings { private transient int curPipeNum = 0; - public DataTransferSettings(@Nullable IDataTransferProducer[] producers, @Nullable IDataTransferConsumer[] consumers) - { + private boolean showFinalMessage = true; + + public DataTransferSettings(@Nullable IDataTransferProducer[] producers, @Nullable IDataTransferConsumer[] consumers) { dataPipes = new ArrayList<>(); if (!ArrayUtils.isEmpty(producers) && !ArrayUtils.isEmpty(consumers)) { if (producers.length != consumers.length) { @@ -149,8 +149,7 @@ public class DataTransferSettings { } } - private void addNodeSettings(DataTransferNodeDescriptor node) - { + private void addNodeSettings(DataTransferNodeDescriptor node) { if (node == null) { return; } @@ -165,8 +164,7 @@ public class DataTransferSettings { } } - void addWizardPages(DataTransferWizard wizard) - { + void addWizardPages(DataTransferWizard wizard) { for (NodeSettings nodeSettings : this.nodeSettings.values()) { if (nodeSettings.pages != null) { for (IWizardPage page : nodeSettings.pages) { @@ -176,24 +174,20 @@ public class DataTransferSettings { } } - public boolean isConsumerOptional() - { + public boolean isConsumerOptional() { return consumerOptional; } - public boolean isPageValid(IWizardPage page) - { + public boolean isPageValid(IWizardPage page) { return isPageValid(page, producer) || isPageValid(page, consumer); } - private boolean isPageValid(IWizardPage page, DataTransferNodeDescriptor node) - { + private boolean isPageValid(IWizardPage page, DataTransferNodeDescriptor node) { NodeSettings nodeSettings = node == null ? null : this.nodeSettings.get(node.getNodeClass()); return nodeSettings != null && ArrayUtils.contains(nodeSettings.pages, page); } - public Collection getSourceObjects() - { + public Collection getSourceObjects() { List dataPipes = getDataPipes(); Set objects = new HashSet<>(); for (DataTransferPipe transferPipe : dataPipes) { @@ -204,8 +198,7 @@ public class DataTransferSettings { return objects; } - public IDataTransferSettings getNodeSettings(IWizardPage page) - { + public IDataTransferSettings getNodeSettings(IWizardPage page) { for (NodeSettings nodeSettings : this.nodeSettings.values()) { if (nodeSettings.pages != null) { for (IWizardPage nodePage : nodeSettings.pages) { @@ -218,22 +211,19 @@ public class DataTransferSettings { return null; } - public IDataTransferSettings getNodeSettings(IDataTransferNode node) - { + public IDataTransferSettings getNodeSettings(IDataTransferNode node) { NodeSettings nodeSettings = this.nodeSettings.get(node.getClass()); return nodeSettings == null ? null : nodeSettings.settings; } - public Map getProcessorProperties() - { + public Map getProcessorProperties() { if (processor == null) { throw new IllegalStateException("No processor selected"); } return processorPropsHistory.get(processor); } - public void setProcessorProperties(Map properties) - { + public void setProcessorProperties(Map properties) { if (processor == null) { throw new IllegalStateException("No processor selected"); } @@ -241,13 +231,11 @@ public class DataTransferSettings { } - public List getDataPipes() - { + public List getDataPipes() { return dataPipes; } - public synchronized DataTransferPipe acquireDataPipe(DBRProgressMonitor monitor) - { + public synchronized DataTransferPipe acquireDataPipe(DBRProgressMonitor monitor) { if (curPipeNum >= dataPipes.size()) { // End of transfer // Signal last pipe about it @@ -263,28 +251,23 @@ public class DataTransferSettings { return result; } - public DataTransferNodeDescriptor getProducer() - { + public DataTransferNodeDescriptor getProducer() { return producer; } - public DataTransferNodeDescriptor getConsumer() - { + public DataTransferNodeDescriptor getConsumer() { return consumer; } - public DataTransferProcessorDescriptor getProcessor() - { + public DataTransferProcessorDescriptor getProcessor() { return processor; } - private void selectProducer(DataTransferNodeDescriptor producer) - { + private void selectProducer(DataTransferNodeDescriptor producer) { this.producer = producer; } - void selectConsumer(DataTransferNodeDescriptor consumer, DataTransferProcessorDescriptor processor) - { + void selectConsumer(DataTransferNodeDescriptor consumer, DataTransferProcessorDescriptor processor) { this.consumer = consumer; this.processor = processor; if (consumer != null && processor != null) { @@ -307,25 +290,33 @@ public class DataTransferSettings { } } - public int getMaxJobCount() - { + public int getMaxJobCount() { return maxJobCount; } - public void setMaxJobCount(int maxJobCount) - { + public void setMaxJobCount(int maxJobCount) { if (maxJobCount > 0) { this.maxJobCount = maxJobCount; } } - void loadFrom(IRunnableContext runnableContext, IDialogSettings dialogSettings) - { + public boolean isShowFinalMessage() { + return showFinalMessage; + } + + public void setShowFinalMessage(boolean showFinalMessage) { + this.showFinalMessage = showFinalMessage; + } + + void loadFrom(IRunnableContext runnableContext, IDialogSettings dialogSettings) { try { maxJobCount = dialogSettings.getInt("maxJobCount"); } catch (NumberFormatException e) { maxJobCount = DEFAULT_THREADS_NUM; } + if (dialogSettings.get("showFinalMessage") != null) { + showFinalMessage = dialogSettings.getBoolean("showFinalMessage"); + } String producerId = dialogSettings.get("producer"); if (!CommonUtils.isEmpty(producerId)) { DataTransferNodeDescriptor producerNode = DataTransferRegistry.getInstance().getNodeById(producerId); @@ -387,9 +378,9 @@ public class DataTransferSettings { } - void saveTo(IDialogSettings dialogSettings) - { + void saveTo(IDialogSettings dialogSettings) { dialogSettings.put("maxJobCount", maxJobCount); + dialogSettings.put("showFinalMessage", showFinalMessage); // Save nodes' settings for (Map.Entry entry : nodeSettings.entrySet()) { IDialogSettings nodeSection = DialogSettings.getOrCreateSection(dialogSettings, entry.getKey().getSimpleName()); @@ -414,11 +405,11 @@ public class DataTransferSettings { Map props = processorPropsHistory.get(procDescriptor); if (props != null) { StringBuilder propNames = new StringBuilder(); - for (Map.Entry prop : props.entrySet()) { + for (Map.Entry prop : props.entrySet()) { propNames.append(prop.getKey()).append(','); } procSettings.put("@propNames", propNames.toString()); - for (Map.Entry prop : props.entrySet()) { + for (Map.Entry prop : props.entrySet()) { procSettings.put(CommonUtils.toString(prop.getKey()), CommonUtils.toString(prop.getValue())); } }