提交 8d60b322 编写于 作者: J jurgen

Compare objects wizard

上级 873c6f09
......@@ -19,6 +19,8 @@
package org.jkiss.dbeaver.tools.compare;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.*;
......@@ -81,7 +83,21 @@ class CompareObjectsPageSettings extends ActiveWizardPage<CompareObjectsWizard>
compareSettings.setLayout(new GridLayout(1, false));
skipSystemObjects = UIUtils.createCheckbox(compareSettings, "Skip system object", settings.isSkipSystemObjects());
skipSystemObjects.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e)
{
getWizard().getSettings().setSkipSystemObjects(skipSystemObjects.getSelection());
}
});
compareLazyProperties = UIUtils.createCheckbox(compareSettings, "Compare lazy properties", settings.isCompareLazyProperties());
compareLazyProperties.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e)
{
getWizard().getSettings().setCompareLazyProperties(compareLazyProperties.getSelection());
}
});
}
setControl(composite);
......@@ -96,9 +112,6 @@ class CompareObjectsPageSettings extends ActiveWizardPage<CompareObjectsWizard>
@Override
public void deactivatePage()
{
CompareObjectsSettings settings = getWizard().getSettings();
settings.setSkipSystemObjects(skipSystemObjects.getSelection());
settings.setCompareLazyProperties(compareLazyProperties.getSelection());
super.deactivatePage();
}
......
......@@ -162,6 +162,9 @@ public class CompareObjectsWizard extends Wizard implements IExportWizard {
throw new DBException(initializeError.getMessage());
}
Thread.sleep(100);
if (monitor.isCanceled()) {
throw new InterruptedException();
}
}
}
......@@ -200,11 +203,14 @@ public class CompareObjectsWizard extends Wizard implements IExportWizard {
boolean hasLazy = false;
// Load all properties
for (DBNDatabaseNode node : nodes) {
if (monitor.isCanceled()) {
throw new InterruptedException();
}
DBSObject databaseObject = node.getObject();
Map<IPropertyDescriptor, Object> nodeProperties = propertyValues.get(databaseObject);
if (nodeProperties == null) {
nodeProperties = new IdentityHashMap<IPropertyDescriptor, Object>();
propertyValues.put(node, nodeProperties);
propertyValues.put(databaseObject, nodeProperties);
}
PropertyCollector propertySource = new PropertyCollector(databaseObject, compareLazyProperties);
for (ObjectPropertyDescriptor prop : properties) {
......@@ -214,11 +220,11 @@ public class CompareObjectsWizard extends Wizard implements IExportWizard {
nodeProperties.put(prop, LAZY_VALUE);
}
// Initiate lazy value read
propertySource.getPropertyValue(prop);
propertySource.getPropertyValue(databaseObject, prop);
hasLazy = true;
}
} else {
Object propertyValue = propertySource.getPropertyValue(prop);
Object propertyValue = propertySource.getPropertyValue(databaseObject, prop);
synchronized (PROPS_LOCK) {
nodeProperties.put(prop, propertyValue);
}
......@@ -229,6 +235,10 @@ public class CompareObjectsWizard extends Wizard implements IExportWizard {
// Wait for all lazy properties to load
while (hasLazy) {
if (monitor.isCanceled()) {
throw new InterruptedException();
}
Thread.sleep(50);
synchronized (PROPS_LOCK) {
hasLazy = false;
......@@ -242,6 +252,9 @@ public class CompareObjectsWizard extends Wizard implements IExportWizard {
}
// Compare properties
for (ObjectPropertyDescriptor prop : properties) {
}
// Compare children
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册