提交 83afbc9e 编写于 作者: S Serge Rider

#2372 DT UI deps fixes


Former-commit-id: 1b89da3d
上级 20594392
......@@ -30,6 +30,7 @@
<plugin id="org.jkiss.dbeaver.registry" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.net.ssh" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.cmp.simple" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.data.transfer" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<!-- GIS -->
<plugin id="org.jkiss.dbeaver.data.gis" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
......
......@@ -53,7 +53,7 @@
<plugin id="org.jkiss.dbeaver.ext.erd" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.ext.ui.colortheme" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.ext.ui.locks" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.data.transfer" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.data.transfer.ui" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.ext.import_config" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
<plugin id="org.jkiss.dbeaver.ext.format.sqlworkbenchj" download-size="0" install-size="0" version="0.0.0" unpack="false"/>
......
......@@ -6,8 +6,9 @@ Bundle-SymbolicName: org.jkiss.dbeaver.data.transfer.ui;singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Release-Date: 20190909
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-Activator: org.jkiss.dbeaver.tools.transfer.ui.internal.DTActivator
Bundle-Activator: org.jkiss.dbeaver.tools.transfer.ui.internal.DTUIActivator
Bundle-ActivationPolicy: lazy
Export-Package: org.jkiss.dbeaver.tools.transfer.ui.wizard
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.swt,
org.eclipse.core.expressions,
......
......@@ -2,7 +2,6 @@
<?eclipse version="3.4"?>
<plugin>
<extension-point id="org.jkiss.dbeaver.dataTransfer" name="%extension-point.org.jkiss.dbeaver.dataTransfer.name" schema="schema/org.jkiss.dbeaver.dataTransfer.exsd"/>
<extension-point id="org.jkiss.dbeaver.dataTransferConfigurator" name="%extension-point.org.jkiss.dbeaver.dataTransferConfigurator.name" schema="schema/org.jkiss.dbeaver.dataTransferConfigurator.exsd"/>
<extension point="org.eclipse.ui.commands">
......@@ -77,179 +76,6 @@
</handler>
</extension>
<extension point="org.jkiss.dbeaver.dataTransfer">
<node type="producer"
id="database_producer"
class="org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferProducer"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/table.png"
label="%dataTransfer.producer.database.name"
description="%dataTransfer.producer.database.description"
settings="org.jkiss.dbeaver.tools.transfer.database.DatabaseProducerSettings">
<sourceType type="org.jkiss.dbeaver.model.struct.DBSDataContainer"/>
</node>
<node type="consumer"
id="database_consumer"
class="org.jkiss.dbeaver.tools.transfer.database.DatabaseTransferConsumer"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/table.png"
label="%dataTransfer.consumer.database.name"
description="%dataTransfer.consumer.database.description"
settings="org.jkiss.dbeaver.tools.transfer.database.DatabaseConsumerSettings">
<sourceType type="org.jkiss.dbeaver.model.struct.DBSDataContainer"/>
</node>
<node type="producer"
id="stream_producer"
class="org.jkiss.dbeaver.tools.transfer.stream.StreamTransferProducer"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/file/file.png"
label="%dataTransfer.producer.stream.name"
description="%dataTransfer.producer.stream.description"
settings="org.jkiss.dbeaver.tools.transfer.stream.StreamProducerSettings">
<processor
id="stream.csv"
class="org.jkiss.dbeaver.tools.transfer.stream.importer.DataImporterCSV"
description="%dataTransfer.producer.stream.processor.csv.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/csv.png"
label="%dataTransfer.producer.stream.processor.csv.name">
<propertyGroup label="%dataTransfer.producer.stream.processor.csv.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.producer.stream.processor.csv.property.extension.label" defaultValue="csv,tsv,txt"/>
<property id="encoding" label="%dataTransfer.producer.stream.processor.csv.property.encoding.label" defaultValue="utf-8"/>
<property id="delimiter" label="%dataTransfer.producer.stream.processor.csv.property.delimiter.name" type="string" description="%dataTransfer.producer.stream.processor.csv.property.delimiter.description" defaultValue="," required="true"/>
<property id="header" label="%dataTransfer.producer.stream.processor.csv.property.header.name" type="string" description="%dataTransfer.producer.stream.processor.csv.property.header.description" defaultValue="top" required="true" validValues="none,top,both"/>
<property id="quoteChar" label="%dataTransfer.producer.stream.processor.csv.property.quoteChar.name" type="string" description="%dataTransfer.producer.stream.processor.csv.property.quoteChar.description" defaultValue="&quot;" required="false"/>
<property id="escapeChar" label="%dataTransfer.producer.stream.processor.csv.property.escapeChar.name" type="string" description="%dataTransfer.producer.stream.processor.csv.property.escapeChar.description" defaultValue="\" required="false"/>
<property id="nullString" label="%dataTransfer.producer.stream.processor.csv.property.nullString.name" type="string" description="%dataTransfer.producer.stream.processor.csv.property.nullString.description" defaultValue="" required="false"/>
<property id="emptyStringNull" label="%dataTransfer.producer.stream.processor.csv.property.emptyStringNull.name" type="boolean" description="%dataTransfer.producer.stream.processor.csv.property.emptyStringNull.description" defaultValue="" required="false"/>
<property id="timestampFormat" label="%dataTransfer.producer.stream.processor.csv.property.timestampFormat.name" type="string" description="%dataTransfer.producer.stream.processor.csv.property.timestampFormat.description" defaultValue="yyyy-MM-dd[ HH:mm:ss[.SSS]]" required="false"/>
</propertyGroup>
</processor>
</node>
<node type="consumer"
id="stream_consumer"
class="org.jkiss.dbeaver.tools.transfer.stream.StreamTransferConsumer"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/file/file.png"
label="%dataTransfer.consumer.stream.name"
description="%dataTransfer.consumer.stream.description"
settings="org.jkiss.dbeaver.tools.transfer.stream.StreamConsumerSettings">
<processor
id="stream.xml"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterXML"
description="%dataTransfer.processor.xml.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/xml.png"
label="%dataTransfer.processor.xml.name">
<propertyGroup label="%dataTransfer.processor.xml.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.processor.xml.property.extension.label" defaultValue="xml"/>
</propertyGroup>
</processor>
<processor
id="stream.dbunit"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterDbUnit"
description="%dataTransfer.processor.dbunit.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/xml.png"
label="%dataTransfer.processor.dbunit.name">
<propertyGroup label="%dataTransfer.processor.dbunit.propertyGroup.general.label">
<property id="upperCaseTableName" label="%dataTransfer.processor.dbunit.property.uppercase.table.name.label" type="boolean" defaultValue="true"/>
<property id="upperCaseColumnNames" label="%dataTransfer.processor.dbunit.property.uppercase.column.names.label" type="boolean" defaultValue="true"/>
<property id="extension" label="%dataTransfer.processor.dbunit.property.extension.label" defaultValue="xml"/>
<property id="includeNullValues" label="%dataTransfer.processor.dbunit.property.include.null.values.label" type="boolean" defaultValue="true"/>
<property id="nullValueString" label="%dataTransfer.processor.dbunit.property.null.value.string.label" defaultValue="[NULL]"/>
</propertyGroup>
</processor>
<processor
id="stream.json"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterJSON"
description="%dataTransfer.processor.json.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/json.png"
label="%dataTransfer.processor.json.name">
<propertyGroup label="%dataTransfer.processor.json.propertyGroup.general.label">
<property id="printTableName" label="%dataTransfer.processor.json.property.printTableName.label" type="boolean" defaultValue="true"/>
<property id="formatDateISO" label="%dataTransfer.processor.json.property.formatDateISO.label" type="boolean" defaultValue="true"/>
<property id="extension" label="%dataTransfer.processor.json.property.extension.label" defaultValue="json"/>
</propertyGroup>
</processor>
<processor
id="stream.html"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterHTML"
description="%dataTransfer.processor.html.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/html.png"
label="%dataTransfer.processor.html.name"
appFileExtension="html"
appName="%dataTransfer.processor.web.name"
html="true"
order="20">
<propertyGroup label="%dataTransfer.processor.html.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.processor.html.property.extension.label" defaultValue="html"/>
<property id="extractImages" label="%dataTransfer.processor.html.property.images.name" type="boolean" description="%dataTransfer.processor.html.property.images.description" defaultValue="true"/>
</propertyGroup>
</processor>
<processor
id="stream.csv"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterCSV"
description="%dataTransfer.processor.csv.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/csv.png"
label="%dataTransfer.processor.csv.name">
<propertyGroup label="%dataTransfer.processor.csv.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.processor.csv.property.extension.label" defaultValue="csv"/>
<property id="delimiter" label="%dataTransfer.processor.csv.property.delimiter.name" type="string" description="%dataTransfer.processor.csv.property.delimiter.description" defaultValue="," required="true"/>
<property id="header" label="%dataTransfer.processor.csv.property.header.name" type="string" description="%dataTransfer.processor.csv.property.header.description" defaultValue="top" required="true" validValues="none,top,bottom,both"/>
<property id="escape" label="%dataTransfer.processor.csv.property.escape.name" type="string" description="%dataTransfer.processor.csv.property.escape.description" defaultValue="quotes" required="true" validValues="quotes,escape"/>
<property id="quoteChar" label="%dataTransfer.processor.csv.property.quoteChar.name" type="string" description="%dataTransfer.processor.csv.property.quoteChar.description" defaultValue="&quot;" required="false"/>
<property id="quoteAlways" label="%dataTransfer.processor.csv.property.quoteAlways.name" type="boolean" description="%dataTransfer.processor.csv.property.quoteAlways.description" defaultValue="false" required="false"/>
<property id="quoteNever" label="%dataTransfer.processor.csv.property.quoteNever.name" type="boolean" description="%dataTransfer.processor.csv.property.quoteNever.description" defaultValue="false" required="false"/>
<property id="nullString" label="%dataTransfer.processor.csv.property.nullString.name" type="string" description="%dataTransfer.processor.csv.property.nullString.description" defaultValue="" required="false"/>
<property id="formatNumbers" label="%dataTransfer.processor.csv.property.formatNumbers.name" type="boolean" description="%dataTransfer.processor.csv.property.formatNumbers.description" defaultValue="false" required="false"/>
</propertyGroup>
</processor>
<processor
id="stream.markdown.table"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterMarkdownTable"
description="%dataTransfer.processor.markdownTable.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/markdown.png"
label="%dataTransfer.processor.markdownTable.name">
<propertyGroup label="%dataTransfer.processor.markdownTable.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.processor.markdownTable.property.extension.label" defaultValue="md"/>
<property id="nullString" label="%dataTransfer.processor.markdownTable.property.nullString.name" type="string" description="%dataTransfer.processor.markdownTable.property.nullString.description" defaultValue="" required="false"/>
<property id="formatNumbers" label="%dataTransfer.processor.markdownTable.property.formatNumbers.name" type="boolean" description="%dataTransfer.processor.markdownTable.property.formatNumbers.description" defaultValue="false" required="false"/>
<property id="showHeaderSeparator" label="%dataTransfer.processor.markdownTable.property.showHeaderSeparator.name" type="boolean" description="%dataTransfer.processor.markdownTable.property.showHeaderSeparator.description" defaultValue="true" required="false"/>
<property id="confluenceFormat" label="%dataTransfer.processor.markdownTable.property.confluenceFormat.name" type="boolean" description="%dataTransfer.processor.markdownTable.property.confluenceFormat.description" defaultValue="false" required="false"/>
</propertyGroup>
</processor>
<processor
id="stream.sql"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterSQL"
description="%dataTransfer.processor.sql.description"
icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/misc/sql.png"
label="%dataTransfer.processor.sql.name">
<propertyGroup label="%dataTransfer.processor.sql.propertyGroup.general.label">
<property id="includeAutoGenerated" label="%dataTransfer.processor.sql.property.includeAutoGenerated.label" description="%dataTransfer.processor.sql.property.includeAutoGenerated.description" type="boolean" defaultValue="false"/>
<property id="extension" label="%dataTransfer.processor.sql.property.extension.label" type="string" defaultValue="sql"/>
<property id="format" label="%dataTransfer.processor.xml.property.format.label" type="string" defaultValue="native" validValues="ui,edit,native"/>
<property id="omitSchema" label="%dataTransfer.processor.sql.property.omitSchema.name" type="boolean" description="%dataTransfer.processor.sql.property.omitSchema.description" required="false" defaultValue="false"/>
<property id="rowsInStatement" label="%dataTransfer.processor.sql.property.rowsInStatement.name" type="integer" description="%dataTransfer.processor.sql.property.rowsInStatement.description" defaultValue="10" required="true"/>
</propertyGroup>
</processor>
<processor
id="stream.txt"
class="org.jkiss.dbeaver.tools.transfer.stream.exporter.DataExporterTXT"
description="%dataTransfer.processor.txt.description"
icon="platform:/plugin/org.jkiss.dbeaver.model/icons/types/text.png"
label="%dataTransfer.processor.txt.name">
<propertyGroup label="%dataTransfer.processor.txt.propertyGroup.general.label">
<property id="extension" label="%dataTransfer.processor.txt.property.extension.label" type="string" defaultValue="txt"/>
<property id="maxColumnLength" label="%dataTransfer.processor.txt.property.maxColumnLength.label" defaultValue="100"/>
<property id="showNulls" label="%dataTransfer.processor.txt.property.showNulls.label" type="boolean" defaultValue="false"/>
<property id="delimLeading" label="%dataTransfer.processor.txt.property.delimLeading.label" type="boolean" defaultValue="true"/>
<property id="delimHeader" label="%dataTransfer.processor.txt.property.delimHeader.label" type="boolean" defaultValue="true"/>
<property id="delimTrailing" label="%dataTransfer.processor.txt.property.delimTrailing.label" type="boolean" defaultValue="true"/>
</propertyGroup>
</processor>
</node>
</extension>
<extension point="org.jkiss.dbeaver.dataTransferConfigurator">
<configPages node="database_producer">
......
......@@ -14,21 +14,21 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.tools.transfer.internal;
package org.jkiss.dbeaver.tools.transfer.ui.internal;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
public class DTActivator extends AbstractUIPlugin {
public class DTUIActivator extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "org.jkiss.dbeaver.data.transfer";
// The shared instance
private static DTActivator plugin;
private static DTUIActivator plugin;
public DTActivator() {
public DTUIActivator() {
}
@Override
......@@ -43,7 +43,7 @@ public class DTActivator extends AbstractUIPlugin {
super.stop(context);
}
public static DTActivator getDefault() {
public static DTUIActivator getDefault() {
return plugin;
}
......
......@@ -72,7 +72,7 @@ public class ColumnsMappingDialog extends StatusDialog {
super(wizard.getShell());
this.settings = settings;
this.mapping = mapping;
attributeMappings = mapping.getAttributeMappings(wizard.getContainer());
attributeMappings = mapping.getAttributeMappings(wizard.getRunnableContext());
}
@Override
......
......@@ -138,7 +138,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
for (DatabaseMappingContainer mappingContainer : settings.getDataMappings().values()) {
if (mappingContainer.getMappingType() != DatabaseMappingType.unspecified) {
try {
mappingContainer.refreshMappingType(getContainer(), DatabaseMappingType.unspecified);
mappingContainer.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.unspecified);
} catch (DBException e1) {
log.error(e1);
}
......@@ -241,7 +241,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
attribute.setMappingType(DatabaseMappingType.skip);
} else if (element instanceof DatabaseMappingContainer) {
DatabaseMappingContainer container = (DatabaseMappingContainer) element;
container.refreshMappingType(getContainer(), DatabaseMappingType.skip);
container.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.skip);
}
}
updated = true;
......@@ -460,7 +460,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
if (mapping instanceof DatabaseMappingAttribute) {
((DatabaseMappingAttribute)mapping).setMappingType(mappingType);
} else {
((DatabaseMappingContainer)mapping).refreshMappingType(getWizard().getContainer(), mappingType);
((DatabaseMappingContainer)mapping).refreshMappingType(getWizard().getRunnableContext(), mappingType);
}
mappingViewer.refresh();
setErrorMessage(null);
......@@ -481,7 +481,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
public Object[] getChildren(Object parentElement)
{
if (parentElement instanceof DatabaseMappingContainer) {
return ((DatabaseMappingContainer) parentElement).getAttributeMappings(getContainer()).toArray();
return ((DatabaseMappingContainer) parentElement).getAttributeMappings(getWizard().getRunnableContext()).toArray();
}
return null;
}
......@@ -539,7 +539,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
if (mapping instanceof DatabaseMappingAttribute) {
((DatabaseMappingAttribute)mapping).setMappingType(DatabaseMappingType.skip);
} else {
((DatabaseMappingContainer)mapping).refreshMappingType(getWizard().getContainer(), DatabaseMappingType.skip);
((DatabaseMappingContainer)mapping).refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.skip);
}
} else if (name.equals(TARGET_NAME_BROWSE)) {
mapExistingTable((DatabaseMappingContainer) mapping);
......@@ -554,12 +554,12 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
for (DBSObject child : container.getChildren(new VoidProgressMonitor())) {
if (child instanceof DBSDataManipulator && name.equalsIgnoreCase(child.getName())) {
containerMapping.setTarget((DBSDataManipulator)child);
containerMapping.refreshMappingType(getWizard().getContainer(), DatabaseMappingType.existing);
containerMapping.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.existing);
return;
}
}
}
containerMapping.refreshMappingType(getWizard().getContainer(), DatabaseMappingType.create);
containerMapping.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.create);
((DatabaseMappingContainer) mapping).setTargetName(name);
} else {
DatabaseMappingAttribute attrMapping = (DatabaseMappingAttribute) mapping;
......@@ -634,11 +634,11 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
try {
if (object instanceof DBSDataManipulator) {
mapping.setTarget((DBSDataManipulator) object);
mapping.refreshMappingType(getWizard().getContainer(), DatabaseMappingType.existing);
mapping.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.existing);
mapColumns(mapping);
} else {
mapping.setTarget(null);
mapping.refreshMappingType(getWizard().getContainer(), DatabaseMappingType.unspecified);
mapping.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.unspecified);
}
} catch (DBException e) {
DBWorkbench.getPlatformUI().showError("Error mapping table", "Error mapping existing table", e);
......@@ -658,7 +658,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
if (!CommonUtils.isEmpty(tableName)) {
try {
mapping.setTargetName(tableName);
mapping.refreshMappingType(getWizard().getContainer(), DatabaseMappingType.create);
mapping.refreshMappingType(getWizard().getRunnableContext(), DatabaseMappingType.create);
mappingViewer.refresh();
updatePageCompletion();
} catch (DBException e) {
......@@ -749,7 +749,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
}
}
settings.loadNode(getContainer(), producerContainer);
settings.loadNode(getWizard().getRunnableContext(), producerContainer);
DBNDatabaseNode containerNode = settings.getContainerNode();
if (containerNode != null) {
//DBNDataSource dataSourceNode = DBNDataSource.getDataSourceNode(containerNode);
......@@ -767,7 +767,11 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
DatabaseMappingContainer mapping;
if (pipe.getConsumer() instanceof DatabaseTransferConsumer && ((DatabaseTransferConsumer)pipe.getConsumer()).getTargetObject() != null) {
try {
mapping = new DatabaseMappingContainer(getContainer(), getDatabaseConsumerSettings(), sourceObject, ((DatabaseTransferConsumer)pipe.getConsumer()).getTargetObject());
mapping = new DatabaseMappingContainer(
getWizard().getRunnableContext(),
getDatabaseConsumerSettings(),
sourceObject,
((DatabaseTransferConsumer)pipe.getConsumer()).getTargetObject());
} catch (DBException e) {
setMessage(e.getMessage(), IMessageProvider.ERROR);
mapping = new DatabaseMappingContainer(getDatabaseConsumerSettings(), sourceObject);
......@@ -775,7 +779,7 @@ public class DatabaseConsumerPageMapping extends ActiveWizardPage<DataTransferWi
} else {
mapping = new DatabaseMappingContainer(getDatabaseConsumerSettings(), sourceObject);
}
settings.addDataMappings(getContainer(), sourceObject, mapping);
settings.addDataMappings(getWizard().getRunnableContext(), sourceObject, mapping);
}
}
List<DatabaseMappingContainer> model = new ArrayList<>(settings.getDataMappings().values());
......
......@@ -27,16 +27,21 @@ import org.eclipse.ui.IWorkbench;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.struct.DBSObject;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.runtime.RunnableContextDelegate;
import org.jkiss.dbeaver.tools.transfer.*;
import org.jkiss.dbeaver.tools.transfer.internal.DTActivator;
import org.jkiss.dbeaver.tools.transfer.internal.DTMessages;
import org.jkiss.dbeaver.tools.transfer.registry.*;
import org.jkiss.dbeaver.tools.transfer.registry.DataTransferNodeDescriptor;
import org.jkiss.dbeaver.tools.transfer.registry.DataTransferProcessorDescriptor;
import org.jkiss.dbeaver.tools.transfer.registry.DataTransferRegistry;
import org.jkiss.dbeaver.tools.transfer.ui.internal.DTUIActivator;
import org.jkiss.dbeaver.tools.transfer.ui.registry.DataTransferConfiguratorRegistry;
import org.jkiss.dbeaver.tools.transfer.ui.registry.DataTransferNodeConfiguratorDescriptor;
import org.jkiss.dbeaver.tools.transfer.ui.registry.DataTransferPageDescriptor;
import org.jkiss.dbeaver.tools.transfer.ui.registry.DataTransferPageType;
import org.jkiss.dbeaver.ui.DialogSettingsMap;
import org.jkiss.dbeaver.ui.UIUtils;
import org.jkiss.utils.ArrayUtils;
import org.jkiss.utils.CommonUtils;
......@@ -74,7 +79,7 @@ public class DataTransferWizard extends Wizard implements IExportWizard {
this.settings = new DataTransferSettings(producers, consumers);
setDialogSettings(
UIUtils.getSettingsSection(
DTActivator.getDefault().getDialogSettings(),
DTUIActivator.getDefault().getDialogSettings(),
RS_EXPORT_WIZARD_DIALOG_SETTINGS));
loadSettings();
......@@ -110,6 +115,10 @@ public class DataTransferWizard extends Wizard implements IExportWizard {
}
}
public DBRRunnableContext getRunnableContext() {
return new RunnableContextDelegate(getContainer());
}
public IStructuredSelection getCurrentSelection() {
return currentSelection;
}
......@@ -215,7 +224,7 @@ public class DataTransferWizard extends Wizard implements IExportWizard {
public boolean performFinish() {
// Save settings
saveSettings();
DTActivator.getDefault().saveDialogSettings();
DTUIActivator.getDefault().saveDialogSettings();
// Start consumers
try {
......@@ -409,7 +418,7 @@ public class DataTransferWizard extends Wizard implements IExportWizard {
IDialogSettings nodeSection = DialogSettings.getOrCreateSection(dialogSettings, entry.getKey().getSimpleName());
IDataTransferSettings settings = this.settings.getNodeSettings(entry.getValue().sourceNode);
if (settings != null) {
settings.loadSettings(runnableContext, this.settings, nodeSection);
settings.loadSettings(getRunnableContext(), this.settings, new DialogSettingsMap(nodeSection));
}
}
IDialogSettings processorsSection = dialogSettings.getSection("processors");
......@@ -453,7 +462,7 @@ public class DataTransferWizard extends Wizard implements IExportWizard {
IDialogSettings nodeSection = DialogSettings.getOrCreateSection(dialogSettings, entry.getKey().getSimpleName());
IDataTransferSettings settings = this.settings.getNodeSettings(entry.getValue().sourceNode);
if (settings != null) {
settings.saveSettings(nodeSection);
settings.saveSettings(new DialogSettingsMap(nodeSection));
}
}
......
......@@ -3,32 +3,21 @@ Bundle-ManifestVersion: 2
Bundle-Vendor: %Bundle-Vendor
Bundle-Name: %Bundle-Name
Bundle-SymbolicName: org.jkiss.dbeaver.data.transfer;singleton:=true
Bundle-Version: 1.0.26.qualifier
Bundle-Version: 2.0.0.qualifier
Bundle-Release-Date: 20190909
Bundle-RequiredExecutionEnvironment: JavaSE-1.8
Bundle-Activator: org.jkiss.dbeaver.tools.transfer.internal.DTActivator
Bundle-ActivationPolicy: lazy
Export-Package: org.jkiss.dbeaver.tools.transfer,
org.jkiss.dbeaver.tools.transfer.database,
org.jkiss.dbeaver.tools.transfer.ui.handlers,
org.jkiss.dbeaver.tools.transfer.registry,
org.jkiss.dbeaver.tools.transfer.stream,
org.jkiss.dbeaver.tools.transfer.stream.exporter,
org.jkiss.dbeaver.tools.transfer.stream.importer,
org.jkiss.dbeaver.tools.transfer.ui.wizard
org.jkiss.dbeaver.tools.transfer.internal
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.swt,
org.eclipse.core.expressions,
org.eclipse.core.resources,
org.eclipse.jface,
org.eclipse.jface.text,
org.eclipse.ui,
org.eclipse.ui.editors,
org.eclipse.ui.views,
org.eclipse.ui.workbench,
org.eclipse.ui.workbench.texteditor,
org.jkiss.dbeaver.model,
org.jkiss.dbeaver.ui,
net.sf.opencsv
Bundle-ClassPath: .
Automatic-Module-Name: org.jkiss.dbeaver.data.transfer
......@@ -2,12 +2,6 @@ Bundle-Vendor = DBeaver Corp
Bundle-Name = DBeaver Data Transfer
extension-point.org.jkiss.dbeaver.dataTransfer.name = Data Transfer Provider
extension-point.org.jkiss.dbeaver.dataTransferConfigurator.name = Data Transfer UI Configurators
command.org.jkiss.dbeaver.core.export.data.name=Export Data
command.org.jkiss.dbeaver.core.export.data.description=Export data to file(s) or database table(s)
command.org.jkiss.dbeaver.core.import.data.name=Import Data
command.org.jkiss.dbeaver.core.import.data.description=Import data from database table(s)
dataTransfer.producer.database.name=Table
dataTransfer.producer.database.description=Database table(s)
......
Bundle-Name = DBeaver Datentransfer
command.org.jkiss.dbeaver.core.export.data.description = Daten in Dateien oder Datenbanktabellen exportieren
command.org.jkiss.dbeaver.core.export.data.name = Daten exportieren
command.org.jkiss.dbeaver.core.import.data.description = Daten aus Datenbanktabellen importieren
command.org.jkiss.dbeaver.core.import.data.name = Daten importieren
dataTransfer.consumer.database.description = Datenbanktabellen
dataTransfer.consumer.database.name = Datenbank
dataTransfer.consumer.stream.description = Flat-Datei(en)
......
extension-point.org.jkiss.dbeaver.dataTransfer.name = Fournisseur de Transfert de donn\u00E9es
command.org.jkiss.dbeaver.core.export.data.description = Exporter les donn\u00E9es issues de cette requ\u00EAte
command.org.jkiss.dbeaver.core.export.data.name = Exporter les donn\u00E9es
command.org.jkiss.dbeaver.core.import.data.description = Importer des donn\u00E9es depuis une table de donn\u00E9es
command.org.jkiss.dbeaver.core.import.data.name = Importer des donn\u00E9es
dataTransfer.consumer.database.description = Table(s) de base de donn\u00E9es
dataTransfer.consumer.database.name = Base de donn\u00E9es
dataTransfer.consumer.stream.description = Fichier(s) \u00E0 plat
......
extension-point.org.jkiss.dbeaver.dataTransfer.name =\u30C7\u30FC\u30BF\u8EE2\u9001\u30D7\u30ED\u30D0\u30A4\u30C0
command.org.jkiss.dbeaver.core.export.data.name=\u30C7\u30FC\u30BF\u306E\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8
command.org.jkiss.dbeaver.core.export.data.description=\u30C7\u30FC\u30BF\u3092\u30D5\u30A1\u30A4\u30EB\u307E\u305F\u306F\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB\u306B\u30A8\u30AF\u30B9\u30DD\u30FC\u30C8\u3059\u308B
command.org.jkiss.dbeaver.core.import.data.name=\u30C7\u30FC\u30BF\u306E\u30A4\u30F3\u30DD\u30FC\u30C8
command.org.jkiss.dbeaver.core.import.data.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB\u304B\u3089\u30C7\u30FC\u30BF\u3092\u30A4\u30F3\u30DD\u30FC\u30C8\u3059\u308B
dataTransfer.producer.database.name=\u8868
dataTransfer.producer.database.description=\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u30C6\u30FC\u30D6\u30EB
dataTransfer.consumer.stream.name=\u30D5\u30A1\u30A4\u30EB
......
......@@ -3,13 +3,6 @@
#Bundle-Vendor = DBeaver Corp
#Bundle-Name = DBeaver Data Transfer
#extension-point.org.jkiss.dbeaver.dataTransfer.name = Data Transfer Provider
command.org.jkiss.dbeaver.core.export.data.name=\uB370\uC774\uD130 \uB0B4\uBCF4\uB0B4\uAE30
command.org.jkiss.dbeaver.core.export.data.description=\uB370\uC774\uD130\uB97C \uD30C\uC77C \uB610\uB294 \uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uD14C\uC774\uBE14\uB85C \uB0B4\uBCF4\uB0B4\uAE30
command.org.jkiss.dbeaver.core.import.data.name=\uB370\uC774\uD130 \uAC00\uC838\uC624\uAE30
command.org.jkiss.dbeaver.core.import.data.description=\uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uD14C\uC774\uBE14\uC5D0\uC11C \uB370\uC774\uD130 \uAC00\uC838\uC624\uAE30
dataTransfer.producer.database.name=\uD14C\uC774\uBE14
dataTransfer.producer.database.description=\uB370\uC774\uD130\uBCA0\uC774\uC2A4 \uD14C\uC774\uBE14
dataTransfer.consumer.stream.name=\uD30C\uC77C
......
command.org.jkiss.dbeaver.core.export.data.name=\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0434\u0430\u043D\u043D\u044B\u0445
command.org.jkiss.dbeaver.core.export.data.description=\u042D\u043A\u0441\u043F\u043E\u0440\u0442 \u0434\u0430\u043D\u043D\u044B\u0445 \u0432 \u0444\u0430\u0439\u043B\u044B \u0438\u043B\u0438 \u0442\u0430\u0431\u043B\u0438\u0446\u044B \u0411\u0414
command.org.jkiss.dbeaver.core.import.data.name=\u0418\u043C\u043F\u043E\u0440\u0442 \u0434\u0430\u043D\u043D\u044B\u0445
command.org.jkiss.dbeaver.core.import.data.description=\u0418\u043C\u043F\u043E\u0440\u0442 \u0434\u0430\u043D\u043D\u044B\u0445 \u0438\u0437 \u0442\u0430\u0431\u043B\u0438\u0446 \u0411\u0414 \u0438\u043B\u0438 \u0444\u0430\u0439\u043B\u043E\u0432
dataTransfer.producer.database.name=\u0422\u0430\u0431\u043B\u0438\u0446\u0430
dataTransfer.producer.database.description=\u0422\u0430\u0431\u043B\u0438\u0446\u0430 \u0431\u0430\u0437\u044B \u0434\u0430\u043D\u043D\u044B\u0445
dataTransfer.consumer.stream.name=\u0424\u0430\u0439\u043B\u044B
......
command.org.jkiss.dbeaver.core.export.data.description = \u5C06\u6570\u636E\u5BFC\u51FA\u81F3\u6587\u4EF6
command.org.jkiss.dbeaver.core.export.data.name = \u5BFC\u51FA\u6570\u636E
command.org.jkiss.dbeaver.core.import.data.description = \u4ECE\u6570\u636E\u5E93\u8868\u4E2D\u5BFC\u5165\u6570\u636E
command.org.jkiss.dbeaver.core.import.data.name = \u5BFC\u5165\u6570\u636E
dataTransfer.consumer.database.description = \u6570\u636E\u5E93\u8868
dataTransfer.consumer.database.name = \u6570\u636E\u5E93
dataTransfer.consumer.stream.description = \u5E73\u9762\u6587\u4EF6
......
......@@ -3,79 +3,6 @@
<plugin>
<extension-point id="org.jkiss.dbeaver.dataTransfer" name="%extension-point.org.jkiss.dbeaver.dataTransfer.name" schema="schema/org.jkiss.dbeaver.dataTransfer.exsd"/>
<extension-point id="org.jkiss.dbeaver.dataTransferConfigurator" name="%extension-point.org.jkiss.dbeaver.dataTransferConfigurator.name" schema="schema/org.jkiss.dbeaver.dataTransferConfigurator.exsd"/>
<extension point="org.eclipse.ui.commands">
<command id="org.jkiss.dbeaver.core.export.data" name="%command.org.jkiss.dbeaver.core.export.data.name" description="%command.org.jkiss.dbeaver.core.export.data.description" categoryId="org.jkiss.dbeaver.core.util"/>
<command id="org.jkiss.dbeaver.core.import.data" name="%command.org.jkiss.dbeaver.core.import.data.name" description="%command.org.jkiss.dbeaver.core.import.data.description" categoryId="org.jkiss.dbeaver.core.util"/>
</extension>
<extension point="org.eclipse.ui.commandImages">
<image commandId="org.jkiss.dbeaver.core.export.data" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/table_export.png"/>
<image commandId="org.jkiss.dbeaver.core.import.data" icon="platform:/plugin/org.jkiss.dbeaver.ui/icons/sql/table_import.png"/>
</extension>
<!--
<extension point="org.eclipse.core.expressions.propertyTesters">
<propertyTester
class="org.jkiss.dbeaver.tools.transfer.ui.handlers.DataTransferPropertyTester"
id="org.jkiss.dbeaver.tools.transfer.ui.handlers.DataTransferPropertyTester"
namespace="org.jkiss.dbeaver.tools.transfer"
properties="supportsImportFrom"
type="java.lang.Object"/>
</extension>
-->
<extension point="org.eclipse.ui.menus">
<menuContribution allPopups="false" locationURI="popup:org.eclipse.ui.popup.any?after=export_import">
<command
commandId="org.jkiss.dbeaver.core.export.data"
label="%command.org.jkiss.dbeaver.core.export.data.name">
<visibleWhen checkEnabled="true"/>
</command>
<command
commandId="org.jkiss.dbeaver.core.import.data"
label="%command.org.jkiss.dbeaver.core.import.data.name">
<visibleWhen checkEnabled="true"/>
</command>
</menuContribution>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler commandId="org.jkiss.dbeaver.core.export.data" class="org.jkiss.dbeaver.tools.transfer.ui.handlers.DataExportHandler">
<enabledWhen>
<with variable="selection">
<count value="+"/>
<iterate operator="and">
<adapt type="org.jkiss.dbeaver.model.struct.DBSDataContainer"/>
</iterate>
</with>
</enabledWhen>
</handler>
<handler commandId="org.jkiss.dbeaver.core.import.data" class="org.jkiss.dbeaver.tools.transfer.ui.handlers.DataImportHandler">
<enabledWhen>
<with variable="selection">
<count value="+"/>
<iterate operator="and">
<or>
<adapt type="org.jkiss.dbeaver.model.struct.DBSDataManipulator"/>
<!--
<adapt type="org.eclipse.core.resources.IFile">
<or>
<test property="org.eclipse.core.resources.extension" value="csv"/>
<test property="org.eclipse.core.resources.extension" value="tsv"/>
<test property="org.eclipse.core.resources.extension" value="txt"/>
</or>
</adapt>
-->
</or>
</iterate>
</with>
</enabledWhen>
</handler>
</extension>
<extension point="org.jkiss.dbeaver.dataTransfer">
<node type="producer"
......@@ -250,28 +177,4 @@
</extension>
<extension point="org.jkiss.dbeaver.dataTransferConfigurator">
<configPages node="database_producer">
<page id="database_producer_input_objects" class="org.jkiss.dbeaver.tools.transfer.ui.pages.database.DatabaseProducerPageInputObjects" producerSelector="true"/>
<page id="database_producer_extract_settings" class="org.jkiss.dbeaver.tools.transfer.ui.pages.database.DatabaseProducerPageExtractSettings" type="settings"/>
</configPages>
<configPages node="database_consumer">
<page id="database_consumer_mappings" class="org.jkiss.dbeaver.tools.transfer.ui.pages.database.DatabaseConsumerPageMapping" producerType="database_producer"/>
<page id="database_consumer_settings" class="org.jkiss.dbeaver.tools.transfer.ui.pages.database.DatabaseConsumerPageLoadSettings" type="settings"/>
</configPages>
<configPages node="stream_producer">
<page id="stream_producer_settings" class="org.jkiss.dbeaver.tools.transfer.ui.pages.stream.StreamProducerPageSettings"/>
<page id="stream_producer_preview" class="org.jkiss.dbeaver.tools.transfer.ui.pages.stream.StreamProducerPagePreview"/>
</configPages>
<configPages node="stream_consumer">
<page id="stream_consumer_settings" class="org.jkiss.dbeaver.tools.transfer.ui.pages.stream.StreamConsumerPageSettings" type="settings"/>
<page id="stream_consumer_output" class="org.jkiss.dbeaver.tools.transfer.ui.pages.stream.StreamConsumerPageOutput" type="preview"/>
</configPages>
</extension>
</plugin>
......@@ -10,7 +10,7 @@
<relativePath>../</relativePath>
</parent>
<artifactId>org.jkiss.dbeaver.data.transfer</artifactId>
<version>1.0.26-SNAPSHOT</version>
<version>2.0.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project>
......@@ -16,17 +16,18 @@
*/
package org.jkiss.dbeaver.tools.transfer;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import java.util.Map;
/**
* Transfer settings
*/
public interface IDataTransferSettings {
void loadSettings(IRunnableContext runnableContext, DataTransferSettings dataTransferSettings, IDialogSettings dialogSettings);
void loadSettings(DBRRunnableContext runnableContext, DataTransferSettings dataTransferSettings, Map<String, Object> settings);
void saveSettings(IDialogSettings dialogSettings);
void saveSettings(Map<String, Object> settings);
String getSettingsSummary();
......
......@@ -16,9 +16,6 @@
*/
package org.jkiss.dbeaver.tools.transfer.database;
import org.eclipse.jface.dialogs.DialogSettings;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
......@@ -27,17 +24,13 @@ import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.navigator.DBNDataSource;
import org.jkiss.dbeaver.model.navigator.DBNDatabaseNode;
import org.jkiss.dbeaver.model.navigator.DBNNode;
import org.jkiss.dbeaver.model.runtime.DefaultProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.struct.DBSDataContainer;
import org.jkiss.dbeaver.model.struct.DBSDataManipulator;
import org.jkiss.dbeaver.model.struct.DBSObjectContainer;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.tools.transfer.DTUtils;
import org.jkiss.dbeaver.tools.transfer.IDataTransferConsumer;
import org.jkiss.dbeaver.tools.transfer.IDataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.*;
import org.jkiss.dbeaver.tools.transfer.internal.DTMessages;
import org.jkiss.dbeaver.tools.transfer.DataTransferPipe;
import org.jkiss.dbeaver.tools.transfer.DataTransferSettings;
import org.jkiss.utils.CommonUtils;
import java.lang.reflect.InvocationTargetException;
......@@ -49,6 +42,7 @@ import java.util.Map;
/**
* DatabaseConsumerSettings
*/
@SuppressWarnings("unchecked")
public class DatabaseConsumerSettings implements IDataTransferSettings {
private static final Log log = Log.getLog(DatabaseConsumerSettings.class);
......@@ -63,7 +57,7 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
private boolean truncateBeforeLoad = false;
private boolean openTableOnFinish = true;
private transient IDialogSettings dialogSettings;
private transient Map<String, Object> dialogSettings;
public DatabaseConsumerSettings() {
}
......@@ -168,27 +162,27 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
}
@Override
public void loadSettings(IRunnableContext runnableContext, DataTransferSettings dataTransferSettings, IDialogSettings dialogSettings) {
this.dialogSettings = dialogSettings;
public void loadSettings(DBRRunnableContext runnableContext, DataTransferSettings dataTransferSettings, Map<String, Object> settings) {
this.dialogSettings = settings;
containerNodePath = dialogSettings.get("container");
if (dialogSettings.get("openNewConnections") != null) {
openNewConnections = dialogSettings.getBoolean("openNewConnections");
containerNodePath = (String) settings.get("container");
if (settings.get("openNewConnections") != null) {
openNewConnections = CommonUtils.toBoolean(settings.get("openNewConnections"));
}
if (dialogSettings.get("useTransactions") != null) {
useTransactions = dialogSettings.getBoolean("useTransactions");
if (settings.get("useTransactions") != null) {
useTransactions = CommonUtils.toBoolean(settings.get("useTransactions"));
}
if (dialogSettings.get("commitAfterRows") != null) {
commitAfterRows = dialogSettings.getInt("commitAfterRows");
if (settings.get("commitAfterRows") != null) {
commitAfterRows = CommonUtils.toInt(settings.get("commitAfterRows"));
}
if (dialogSettings.get("transferAutoGeneratedColumns") != null) {
transferAutoGeneratedColumns = dialogSettings.getBoolean("transferAutoGeneratedColumns");
if (settings.get("transferAutoGeneratedColumns") != null) {
transferAutoGeneratedColumns = CommonUtils.toBoolean(settings.get("transferAutoGeneratedColumns"));
}
if (dialogSettings.get("truncateBeforeLoad") != null) {
truncateBeforeLoad = dialogSettings.getBoolean("truncateBeforeLoad");
if (settings.get("truncateBeforeLoad") != null) {
truncateBeforeLoad = CommonUtils.toBoolean(settings.get("truncateBeforeLoad"));
}
if (dialogSettings.get("openTableOnFinish") != null) {
openTableOnFinish = dialogSettings.getBoolean("openTableOnFinish");
if (settings.get("openTableOnFinish") != null) {
openTableOnFinish = CommonUtils.toBoolean(settings.get("openTableOnFinish"));
}
{
List<DataTransferPipe> dataPipes = dataTransferSettings.getDataPipes();
......@@ -207,12 +201,12 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
}
// Load mapping for current objects
IDialogSettings mappings = dialogSettings.getSection("mappings");
Map<String, Object> mappings = (Map<String, Object>) settings.get("mappings");
if (mappings != null) {
for (DatabaseMappingContainer dmc : dataMappings.values()) {
DBSDataContainer sourceDatacontainer = dmc.getSource();
if (sourceDatacontainer != null) {
IDialogSettings dmcSettings = mappings.getSection(DBUtils.getObjectFullId(sourceDatacontainer));
Map<String, Object> dmcSettings = (Map<String, Object>) mappings.get(DBUtils.getObjectFullId(sourceDatacontainer));
if (dmcSettings != null) {
dmc.loadSettings(runnableContext, dmcSettings);
}
......@@ -222,24 +216,26 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
}
@Override
public void saveSettings(IDialogSettings dialogSettings) {
public void saveSettings(Map<String, Object> settings) {
if (containerNode != null) {
dialogSettings.put("container", containerNode.getNodeItemPath());
settings.put("container", containerNode.getNodeItemPath());
}
dialogSettings.put("openNewConnections", openNewConnections);
dialogSettings.put("useTransactions", useTransactions);
dialogSettings.put("commitAfterRows", commitAfterRows);
dialogSettings.put("transferAutoGeneratedColumns", transferAutoGeneratedColumns);
dialogSettings.put("truncateBeforeLoad", truncateBeforeLoad);
dialogSettings.put("openTableOnFinish", openTableOnFinish);
settings.put("openNewConnections", openNewConnections);
settings.put("useTransactions", useTransactions);
settings.put("commitAfterRows", commitAfterRows);
settings.put("transferAutoGeneratedColumns", transferAutoGeneratedColumns);
settings.put("truncateBeforeLoad", truncateBeforeLoad);
settings.put("openTableOnFinish", openTableOnFinish);
// Load all data mappings
IDialogSettings mappings = DialogSettings.getOrCreateSection(dialogSettings, "mappings");
Map<String, Object> mappings = new LinkedHashMap<>();
settings.put("mappings", mappings);
for (DatabaseMappingContainer dmc : dataMappings.values()) {
DBSDataContainer sourceDatacontainer = dmc.getSource();
if (sourceDatacontainer != null) {
IDialogSettings dmcSettings = mappings.addNewSection(DBUtils.getObjectFullId(sourceDatacontainer));
Map<String, Object> dmcSettings = new LinkedHashMap<>();
mappings.put(DBUtils.getObjectFullId(sourceDatacontainer), dmcSettings);
dmc.saveSettings(dmcSettings);
}
}
......@@ -260,13 +256,13 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
return summary.toString();
}
private void checkContainerConnection(IRunnableContext runnableContext) {
private void checkContainerConnection(DBRRunnableContext runnableContext) {
// If container node is datasource (this may happen if datasource do not support schemas/catalogs)
// then we need to check connection
if (containerNode instanceof DBNDataSource && containerNode.getDataSource() == null) {
try {
runnableContext.run(true, true,
monitor -> containerNode.initializeNode(new DefaultProgressMonitor(monitor), null));
monitor -> containerNode.initializeNode(monitor, null));
} catch (InvocationTargetException e) {
DBWorkbench.getPlatformUI().showError("Init connection", "Error connecting to datasource", e.getTargetException());
} catch (InterruptedException e) {
......@@ -275,7 +271,7 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
}
}
public void loadNode(IRunnableContext runnableContext, @Nullable DBSObjectContainer producerContainer) {
public void loadNode(DBRRunnableContext runnableContext, @Nullable DBSObjectContainer producerContainer) {
if (containerNode == null && (producerContainer != null || !CommonUtils.isEmpty(containerNodePath))) {
if (producerContainer != null || !CommonUtils.isEmpty(containerNodePath)) {
try {
......@@ -286,7 +282,7 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
node = DBWorkbench.getPlatform().getNavigatorModel().getNodeByObject(producerContainer);
} else {
node = DBWorkbench.getPlatform().getNavigatorModel().getNodeByPath(
new DefaultProgressMonitor(monitor),
monitor,
containerNodePath);
}
if (node instanceof DBNDatabaseNode) {
......@@ -306,14 +302,14 @@ public class DatabaseConsumerSettings implements IDataTransferSettings {
}
}
public void addDataMappings(IRunnableContext context, DBSDataContainer dataContainer, DatabaseMappingContainer mappingContainer) {
public void addDataMappings(DBRRunnableContext context, DBSDataContainer dataContainer, DatabaseMappingContainer mappingContainer) {
dataMappings.put(dataContainer, mappingContainer);
if (dialogSettings != null) {
// Load settings
IDialogSettings mappings = dialogSettings.getSection("mappings");
Map<String, Object> mappings = (Map<String, Object>) dialogSettings.get("mappings");
if (mappings != null) {
IDialogSettings dmcSettings = mappings.getSection(DBUtils.getObjectFullId(dataContainer));
Map<String, Object> dmcSettings = (Map<String, Object>) mappings.get(DBUtils.getObjectFullId(dataContainer));
if (dmcSettings != null) {
mappingContainer.loadSettings(context, dmcSettings);
}
......
......@@ -16,7 +16,6 @@
*/
package org.jkiss.dbeaver.tools.transfer.database;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.*;
......@@ -31,6 +30,7 @@ import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* DatabaseMappingAttribute
......@@ -268,7 +268,7 @@ public class DatabaseMappingAttribute implements DatabaseMappingObject {
this.targetType = targetType;
}
void saveSettings(IDialogSettings settings) {
void saveSettings(Map<String, Object> settings) {
if (targetName != null) {
settings.put("targetName", targetName);
}
......@@ -280,12 +280,12 @@ public class DatabaseMappingAttribute implements DatabaseMappingObject {
}
}
public void loadSettings(IDialogSettings settings) {
targetName = settings.get("targetName");
targetType = settings.get("targetType");
public void loadSettings(Map<String, Object> settings) {
targetName = CommonUtils.toString(settings.get("targetName"));
targetType = CommonUtils.toString(settings.get("targetType"));
if (settings.get("mappingType") != null) {
try {
DatabaseMappingType newMappingType = DatabaseMappingType.valueOf(settings.get("mappingType"));
DatabaseMappingType newMappingType = DatabaseMappingType.valueOf((String) settings.get("mappingType"));
if (!CommonUtils.isEmpty(targetName)) {
DBSDataManipulator targetEntity = parent.getTarget();
......
......@@ -16,8 +16,6 @@
*/
package org.jkiss.dbeaver.tools.transfer.database;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.model.*;
......@@ -28,18 +26,18 @@ import org.jkiss.dbeaver.model.exec.DBCResultSet;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.impl.AbstractExecutionSource;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.struct.*;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.utils.CommonUtils;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.*;
/**
* DatabaseMappingContainer
*/
@SuppressWarnings("unchecked")
public class DatabaseMappingContainer implements DatabaseMappingObject {
private static final Log log = Log.getLog(DatabaseMappingContainer.class);
......@@ -57,7 +55,7 @@ public class DatabaseMappingContainer implements DatabaseMappingObject {
this.mappingType = DatabaseMappingType.unspecified;
}
public DatabaseMappingContainer(IRunnableContext context, DatabaseConsumerSettings consumerSettings, DBSDataContainer sourceObject, DBSDataManipulator targetObject) throws DBException {
public DatabaseMappingContainer(DBRRunnableContext context, DatabaseConsumerSettings consumerSettings, DBSDataContainer sourceObject, DBSDataManipulator targetObject) throws DBException {
this.consumerSettings = consumerSettings;
this.source = sourceObject;
this.target = targetObject;
......@@ -82,7 +80,7 @@ public class DatabaseMappingContainer implements DatabaseMappingObject {
return mappingType;
}
public void refreshMappingType(IRunnableContext context, DatabaseMappingType mappingType) throws DBException {
public void refreshMappingType(DBRRunnableContext context, DatabaseMappingType mappingType) throws DBException {
this.mappingType = mappingType;
final Collection<DatabaseMappingAttribute> mappings = getAttributeMappings(context);
if (!CommonUtils.isEmpty(mappings)) {
......@@ -145,7 +143,7 @@ public class DatabaseMappingContainer implements DatabaseMappingObject {
return null;
}
public Collection<DatabaseMappingAttribute> getAttributeMappings(IRunnableContext runnableContext) {
public Collection<DatabaseMappingAttribute> getAttributeMappings(DBRRunnableContext runnableContext) {
if (attributeMappings.isEmpty()) {
try {
// Do not use runnable context! It changes active focus and locks UI which breakes whole jface editing framework
......@@ -199,7 +197,7 @@ public class DatabaseMappingContainer implements DatabaseMappingObject {
attributeMappings.add(mapping);
}
public void saveSettings(IDialogSettings settings) {
public void saveSettings(Map<String, Object> settings) {
if (!CommonUtils.isEmpty(targetName)) {
settings.put("targetName", targetName);
} else if (target != null) {
......@@ -209,22 +207,24 @@ public class DatabaseMappingContainer implements DatabaseMappingObject {
settings.put("mappingType", mappingType.name());
}
if (!attributeMappings.isEmpty()) {
IDialogSettings attrsSection = settings.addNewSection("attributes");
Map<String, Object> attrsSection = new LinkedHashMap<>();
settings.put("attributes", attrsSection);
for (DatabaseMappingAttribute attrMapping : attributeMappings) {
DBSAttributeBase sourceAttr = attrMapping.getSource();
if (sourceAttr != null) {
IDialogSettings attrSettings = attrsSection.addNewSection(sourceAttr.getName());
Map<String, Object> attrSettings = new LinkedHashMap<>();
attrsSection.put(sourceAttr.getName(), attrSettings);
attrMapping.saveSettings(attrSettings);
}
}
}
}
public void loadSettings(IRunnableContext context, IDialogSettings settings) {
targetName = settings.get("targetName");
public void loadSettings(DBRRunnableContext context, Map<String, Object> settings) {
targetName = (String) settings.get("targetName");
if (settings.get("mappingType") != null) {
try {
DatabaseMappingType newMappingType = DatabaseMappingType.valueOf(settings.get("mappingType"));
DatabaseMappingType newMappingType = DatabaseMappingType.valueOf((String) settings.get("mappingType"));
if (!CommonUtils.isEmpty(targetName)) {
DBSObjectContainer objectContainer = consumerSettings.getContainer();
if (objectContainer != null) {
......@@ -248,12 +248,12 @@ public class DatabaseMappingContainer implements DatabaseMappingObject {
}
}
if (!attributeMappings.isEmpty()) {
IDialogSettings attrsSection = settings.getSection("attributes");
Map<String, Object> attrsSection = (Map<String, Object>) settings.get("attributes");
if (attrsSection != null) {
for (DatabaseMappingAttribute attrMapping : attributeMappings) {
DBSAttributeBase sourceAttr = attrMapping.getSource();
if (sourceAttr != null) {
IDialogSettings attrSettings = attrsSection.getSection(sourceAttr.getName());
Map<String, Object> attrSettings = (Map<String, Object>) attrsSection.get(sourceAttr.getName());
if (attrSettings != null) {
attrMapping.loadSettings(attrSettings);
}
......
......@@ -16,14 +16,15 @@
*/
package org.jkiss.dbeaver.tools.transfer.database;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.tools.transfer.DTUtils;
import org.jkiss.dbeaver.tools.transfer.IDataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.internal.DTMessages;
import org.jkiss.dbeaver.tools.transfer.DataTransferSettings;
import org.jkiss.utils.CommonUtils;
import java.util.Map;
/**
* DatabaseProducerSettings
*/
......@@ -108,41 +109,33 @@ public class DatabaseProducerSettings implements IDataTransferSettings {
}
@Override
public void loadSettings(IRunnableContext runnableContext, DataTransferSettings dataTransferSettings, IDialogSettings dialogSettings) {
if (dialogSettings.get("extractType") != null) {
public void loadSettings(DBRRunnableContext runnableContext, DataTransferSettings dataTransferSettings, Map<String, Object> settings) {
if (settings.get("extractType") != null) {
try {
extractType = ExtractType.valueOf(dialogSettings.get("extractType"));
extractType = ExtractType.valueOf((String) settings.get("extractType"));
} catch (IllegalArgumentException e) {
extractType = ExtractType.SINGLE_QUERY;
}
}
try {
segmentSize = dialogSettings.getInt("segmentSize");
segmentSize = CommonUtils.toInt(settings.get("segmentSize"));
} catch (NumberFormatException e) {
segmentSize = DEFAULT_SEGMENT_SIZE;
}
if (!CommonUtils.isEmpty(dialogSettings.get("openNewConnections"))) {
openNewConnections = dialogSettings.getBoolean("openNewConnections");
}
if (!CommonUtils.isEmpty(dialogSettings.get("queryRowCount"))) {
queryRowCount = dialogSettings.getBoolean("queryRowCount");
}
if (!CommonUtils.isEmpty(dialogSettings.get("selectedColumnsOnly"))) {
selectedColumnsOnly = dialogSettings.getBoolean("selectedColumnsOnly");
}
if (!CommonUtils.isEmpty(dialogSettings.get("selectedRowsOnly"))) {
selectedRowsOnly = dialogSettings.getBoolean("selectedRowsOnly");
}
openNewConnections = CommonUtils.toBoolean(settings.get("openNewConnections"));
queryRowCount = CommonUtils.toBoolean(settings.get("queryRowCount"));
selectedColumnsOnly = CommonUtils.toBoolean(settings.get("selectedColumnsOnly"));
selectedRowsOnly = CommonUtils.toBoolean(settings.get("selectedRowsOnly"));
}
@Override
public void saveSettings(IDialogSettings dialogSettings) {
dialogSettings.put("extractType", extractType.name());
dialogSettings.put("segmentSize", segmentSize);
dialogSettings.put("openNewConnections", openNewConnections);
dialogSettings.put("queryRowCount", queryRowCount);
dialogSettings.put("selectedColumnsOnly", selectedColumnsOnly);
dialogSettings.put("selectedRowsOnly", selectedRowsOnly);
public void saveSettings(Map<String, Object> settings) {
settings.put("extractType", extractType.name());
settings.put("segmentSize", segmentSize);
settings.put("openNewConnections", openNewConnections);
settings.put("queryRowCount", queryRowCount);
settings.put("selectedColumnsOnly", selectedColumnsOnly);
settings.put("selectedRowsOnly", selectedRowsOnly);
}
@Override
......
......@@ -16,18 +16,19 @@
*/
package org.jkiss.dbeaver.tools.transfer.stream;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.dbeaver.model.data.DBDDataFormatterProfile;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.runtime.DBWorkbench;
import org.jkiss.dbeaver.tools.transfer.DTUtils;
import org.jkiss.dbeaver.tools.transfer.DataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.IDataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.internal.DTMessages;
import org.jkiss.dbeaver.tools.transfer.DataTransferSettings;
import org.jkiss.dbeaver.utils.GeneralUtils;
import org.jkiss.utils.CommonUtils;
import org.jkiss.utils.StandardConstants;
import java.util.Map;
/**
* Stream transfer settings
*/
......@@ -190,93 +191,58 @@ public class StreamConsumerSettings implements IDataTransferSettings {
}
@Override
public void loadSettings(IRunnableContext runnableContext, DataTransferSettings dataTransferSettings, IDialogSettings dialogSettings) {
if (!CommonUtils.isEmpty(dialogSettings.get("lobExtractType"))) {
try {
lobExtractType = LobExtractType.valueOf(dialogSettings.get("lobExtractType"));
} catch (IllegalArgumentException e) {
lobExtractType = LobExtractType.SKIP;
}
}
if (!CommonUtils.isEmpty(dialogSettings.get("lobEncoding"))) {
try {
lobEncoding = LobEncoding.valueOf(dialogSettings.get("lobEncoding"));
} catch (IllegalArgumentException e) {
lobEncoding = LobEncoding.HEX;
}
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputFolder"))) {
outputFolder = dialogSettings.get("outputFolder");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputFilePattern"))) {
outputFilePattern = dialogSettings.get("outputFilePattern");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputEncoding"))) {
outputEncoding = dialogSettings.get("outputEncoding");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputEncodingBOM"))) {
outputEncodingBOM = dialogSettings.getBoolean("outputEncodingBOM");
}
if (!CommonUtils.isEmpty(dialogSettings.get("outputClipboard"))) {
outputClipboard = dialogSettings.getBoolean("outputClipboard");
}
if (!CommonUtils.isEmpty(dialogSettings.get("useSingleFile"))) {
if (dataTransferSettings.getDataPipes().size() > 1) {
useSingleFile = dialogSettings.getBoolean("useSingleFile");
} else {
useSingleFile = false;
}
public void loadSettings(DBRRunnableContext runnableContext, DataTransferSettings dataTransferSettings, Map<String, Object> settings) {
lobExtractType = CommonUtils.valueOf(LobExtractType.class, (String) settings.get("lobExtractType"), LobExtractType.SKIP);
lobEncoding = CommonUtils.valueOf(LobEncoding.class, (String) settings.get("lobEncoding"), LobEncoding.HEX);
outputFolder = (String) settings.get("outputFolder");
outputFilePattern = (String) settings.get("outputFilePattern");
outputEncoding = (String) settings.get("outputEncoding");
outputEncodingBOM = CommonUtils.toBoolean(settings.get("outputEncodingBOM"));
outputClipboard = CommonUtils.toBoolean(settings.get("outputClipboard"));
if (dataTransferSettings.getDataPipes().size() > 1) {
useSingleFile = CommonUtils.toBoolean(settings.get("useSingleFile"));
} else {
useSingleFile = false;
}
if (!CommonUtils.isEmpty(dialogSettings.get("compressResults"))) {
compressResults = dialogSettings.getBoolean("compressResults");
}
if (!CommonUtils.isEmpty(dialogSettings.get("splitOutFiles"))) {
splitOutFiles = dialogSettings.getBoolean("splitOutFiles");
}
if (!CommonUtils.isEmpty(dialogSettings.get("maxOutFileSize"))) {
maxOutFileSize = dialogSettings.getInt("maxOutFileSize");
}
if (dialogSettings.get("openFolderOnFinish") != null) {
openFolderOnFinish = dialogSettings.getBoolean("openFolderOnFinish");
}
if (dialogSettings.get("executeProcessOnFinish") != null) {
executeProcessOnFinish = dialogSettings.getBoolean("executeProcessOnFinish");
}
if (!CommonUtils.isEmpty(dialogSettings.get("finishProcessCommand"))) {
finishProcessCommand = dialogSettings.get("finishProcessCommand");
}
compressResults = CommonUtils.toBoolean(settings.get("compressResults"));
splitOutFiles = CommonUtils.toBoolean(settings.get("splitOutFiles"));
maxOutFileSize = CommonUtils.toInt(settings.get("maxOutFileSize"));
openFolderOnFinish = CommonUtils.toBoolean(settings.get("openFolderOnFinish"));
executeProcessOnFinish = CommonUtils.toBoolean(settings.get("executeProcessOnFinish"));
finishProcessCommand = (String) settings.get("finishProcessCommand");
if (!CommonUtils.isEmpty(dialogSettings.get("formatterProfile"))) {
formatterProfile = DBWorkbench.getPlatform().getDataFormatterRegistry().getCustomProfile(dialogSettings.get("formatterProfile"));
String formatterProfile = CommonUtils.toString(settings.get("formatterProfile"));
if (!CommonUtils.isEmpty(formatterProfile)) {
this.formatterProfile = DBWorkbench.getPlatform().getDataFormatterRegistry().getCustomProfile(formatterProfile);
}
}
@Override
public void saveSettings(IDialogSettings dialogSettings) {
dialogSettings.put("lobExtractType", lobExtractType.name());
dialogSettings.put("lobEncoding", lobEncoding.name());
public void saveSettings(Map<String, Object> settings) {
settings.put("lobExtractType", lobExtractType.name());
settings.put("lobEncoding", lobEncoding.name());
dialogSettings.put("outputFolder", outputFolder);
dialogSettings.put("outputFilePattern", outputFilePattern);
dialogSettings.put("outputEncoding", outputEncoding);
dialogSettings.put("outputEncodingBOM", outputEncodingBOM);
dialogSettings.put("outputClipboard", outputClipboard);
dialogSettings.put("useSingleFile", useSingleFile);
settings.put("outputFolder", outputFolder);
settings.put("outputFilePattern", outputFilePattern);
settings.put("outputEncoding", outputEncoding);
settings.put("outputEncodingBOM", outputEncodingBOM);
settings.put("outputClipboard", outputClipboard);
settings.put("useSingleFile", useSingleFile);
dialogSettings.put("compressResults", compressResults);
dialogSettings.put("splitOutFiles", splitOutFiles);
dialogSettings.put("maxOutFileSize", maxOutFileSize);
settings.put("compressResults", compressResults);
settings.put("splitOutFiles", splitOutFiles);
settings.put("maxOutFileSize", maxOutFileSize);
dialogSettings.put("openFolderOnFinish", openFolderOnFinish);
dialogSettings.put("executeProcessOnFinish", executeProcessOnFinish);
dialogSettings.put("finishProcessCommand", finishProcessCommand);
settings.put("openFolderOnFinish", openFolderOnFinish);
settings.put("executeProcessOnFinish", executeProcessOnFinish);
settings.put("finishProcessCommand", finishProcessCommand);
if (formatterProfile != null) {
dialogSettings.put("formatterProfile", formatterProfile.getProfileName());
settings.put("formatterProfile", formatterProfile.getProfileName());
} else {
dialogSettings.put("formatterProfile", "");
settings.put("formatterProfile", "");
}
}
......
......@@ -16,15 +16,14 @@
*/
package org.jkiss.dbeaver.tools.transfer.stream;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.operation.IRunnableContext;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.DBDValueHandler;
import org.jkiss.dbeaver.model.runtime.DBRRunnableContext;
import org.jkiss.dbeaver.model.struct.DBSEntity;
import org.jkiss.dbeaver.model.struct.DBSEntityAttribute;
import org.jkiss.dbeaver.tools.transfer.IDataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.DataTransferSettings;
import org.jkiss.dbeaver.tools.transfer.IDataTransferSettings;
import java.util.ArrayList;
import java.util.HashMap;
......@@ -253,11 +252,11 @@ public class StreamProducerSettings implements IDataTransferSettings {
}
@Override
public void loadSettings(IRunnableContext runnableContext, DataTransferSettings dataTransferSettings, IDialogSettings dialogSettings) {
public void loadSettings(DBRRunnableContext runnableContext, DataTransferSettings dataTransferSettings, Map<String, Object> settings) {
}
@Override
public void saveSettings(IDialogSettings dialogSettings) {
public void saveSettings(Map<String, Object> settings) {
}
@Override
......
......@@ -17,6 +17,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ui.ide,
org.eclipse.ui.workbench.texteditor,
org.jkiss.dbeaver.data.transfer,
org.jkiss.dbeaver.data.transfer.ui,
org.jkiss.dbeaver.model,
org.jkiss.dbeaver.model.sql,
org.jkiss.dbeaver.ui,
......
......@@ -17,6 +17,7 @@ Require-Bundle: org.eclipse.core.runtime,
org.jkiss.dbeaver.model.sql;visibility:=reexport,
org.jkiss.dbeaver.ui;visibility:=reexport,
org.jkiss.dbeaver.data.transfer,
org.jkiss.dbeaver.data.transfer.ui,
org.jkiss.dbeaver.ui.editors.base,
org.jkiss.dbeaver.ui.editors.data,
org.jkiss.dbeaver.ui.navigator,
......
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jkiss.dbeaver.ui;
import org.eclipse.jface.dialogs.IDialogSettings;
import org.jkiss.utils.CommonUtils;
import java.util.AbstractMap;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
/**
* DialogSettingsMap
*/
public class DialogSettingsMap extends AbstractMap<String, Object> {
private final IDialogSettings settings;
public DialogSettingsMap(IDialogSettings settings) {
this.settings = settings;
}
@Override
public Set<Entry<String, Object>> entrySet() {
return new LinkedHashSet<>();
}
@Override
public Object getOrDefault(Object key, Object defaultValue) {
String keyValue = settings.get((String) key);
if (keyValue != null) {
return keyValue;
}
IDialogSettings section = settings.getSection((String) key);
if (section != null) {
return new DialogSettingsMap(section);
}
return null;
}
@Override
public Object putIfAbsent(String key, Object value) {
if (value instanceof Map) {
IDialogSettings section = settings.getSection(key);
if (section == null) {
section = settings.addNewSection(key);
}
fillSection(section, (Map)value);
} else {
settings.put(key, CommonUtils.toString(value));
}
return value;
}
@Override
public boolean remove(Object key, Object value) {
return false;
}
private DialogSettingsMap fillSection(IDialogSettings section, Map<String, Object> value) {
DialogSettingsMap settingsMap = new DialogSettingsMap(settings);
for (Map.Entry<String, Object> entry : value.entrySet()) {
settingsMap.put(entry.getKey(), entry.getValue());
}
return settingsMap;
}
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册