diff --git a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java
index 9f98c36c172ea7d6f02e303f7be50f989b4acf78..6f36dfccb2690593dfd9bc6f815d64c3fc2e1eb7 100644
--- a/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java
+++ b/plugins/org.jkiss.dbeaver.core/src/org/jkiss/dbeaver/ui/UIUtils.java
@@ -992,6 +992,45 @@ public class UIUtils {
return section;
}
+ public static void putSectionValueWithType(IDialogSettings dialogSettings, @NotNull String key, Object value) {
+ if (value instanceof Double) {
+ dialogSettings.put(key, (Double) value);
+ } else
+ if (value instanceof Float) {
+ dialogSettings.put(key, (Float) value);
+ } else
+ if (value instanceof Integer) {
+ dialogSettings.put(key, (Integer) value);
+ } else
+ if (value instanceof Long) {
+ dialogSettings.put(key, (Long) value);
+ } else
+ if (value instanceof String) {
+ dialogSettings.put(key, (String) value);
+ } else
+ if (value instanceof Boolean) {
+ dialogSettings.put(key, (Boolean) value);
+ } else {
+ // do nothing
+ }
+ dialogSettings.put(key + "_type", value.getClass().getSimpleName());
+ }
+
+ public static Object getSectionValueWithType(IDialogSettings dialogSettings, @NotNull String key) {
+ String type = dialogSettings.get(key + "_type");
+ if (type != null) {
+ switch (type) {
+ case "Double": return dialogSettings.getDouble(key);
+ case "Float": return dialogSettings.getFloat(key);
+ case "Integer": return dialogSettings.getInt(key);
+ case "Long": return dialogSettings.getLong(key);
+ case "String": return dialogSettings.get(key);
+ case "Boolean": return dialogSettings.getBoolean(key);
+ }
+ }
+ return dialogSettings.get(key);
+ }
+
@Nullable
public static IWorkbenchPartSite getWorkbenchPartSite(IServiceLocator serviceLocator)
{
diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml b/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml
index 54d9734084e2ae25917742e61a090234fa83c7f0..b66e3fcd433b26816f7ac5cc1e51591b4f1d0c0c 100644
--- a/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml
@@ -42,6 +42,8 @@
+
+
@@ -102,6 +104,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
attributes;
+
private boolean removeOldData;
- private long rowsNumber = 10;
+ private long rowsNumber = 1000;
+
private Map generatorDescriptors = new HashMap<>(); // generatorId -> MockGeneratorDescriptor
private Map attributeGenerators = new HashMap<>(); // attribute.name -> generators properties
// populate attribute generators properties map
- public Collection extends DBSAttributeBase> init(MockDataExecuteWizard wizard) throws DBException {
+ public void init(MockDataExecuteWizard wizard) throws DBException {
List databaseObjects = wizard.getDatabaseObjects();
DBSDataManipulator dataManipulator = databaseObjects.iterator().next(); // TODO only the first
- DBSEntity dbsEntity = (DBSEntity) dataManipulator;
+ dbsEntity = (DBSEntity) dataManipulator;
+ attributes = new ArrayList<>();
- final Collection attributes = new ArrayList<>();
try {
DBeaverUI.run(wizard.getContainer(), true, true, new DBRRunnableWithProgress() {
@Override
@@ -79,11 +92,12 @@ public class MockDataSettings {
});
} catch (InvocationTargetException e) {
DBUserInterface.getInstance().showError("Transfer init failed", "Can't start data transfer", e.getTargetException());
- return null;
} catch (InterruptedException e) {
- return null;
+ e.printStackTrace();
}
+ }
+ public Collection getAttributes() {
return attributes;
}
@@ -131,6 +145,59 @@ public class MockDataSettings {
return attributeGenerators.get(attribute.getName());
}
+ public void loadFrom(IDialogSettings dialogSettings) {
+ removeOldData = dialogSettings.getBoolean(PROP_REMOVE_OLD_DATA);
+ try {
+ rowsNumber = dialogSettings.getInt(PROP_ROWS_NUMBER);
+ } catch (NumberFormatException e) {
+ // do nothing
+ }
+
+ // load selected generators
+ VoidProgressMonitor voidProgressMonitor = new VoidProgressMonitor();
+ IDialogSettings tableSection = UIUtils.getSettingsSection(dialogSettings, dbsEntity.getName());
+ for (Map.Entry entry : attributeGenerators.entrySet()) {
+ String attributeName = entry.getKey();
+ IDialogSettings attributeSection = UIUtils.getSettingsSection(tableSection, attributeName);
+ String selectedGeneratorId = attributeSection.get(KEY_SELECTED_GENERATOR);
+ if (selectedGeneratorId != null) {
+ AttributeGeneratorProperties attrGeneratorProperties = entry.getValue();
+ attrGeneratorProperties.setSelectedGeneratorId(selectedGeneratorId);
+
+ PropertySourceCustom generatorPropertySource = attrGeneratorProperties.getGeneratorPropertySource(selectedGeneratorId);
+ IDialogSettings generatorSection = UIUtils.getSettingsSection(attributeSection, KEY_GENERATOR_SECTION);
+ Map