diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml b/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml
index 70ad0778ddb110a6bc70906767a76a779e62248f..1204dd6cd6b6c76e5c7253f2274cfecee655d82f 100644
--- a/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.ext.mockdata/plugin.xml
@@ -43,7 +43,7 @@
-
+
diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataExecuteWizard.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataExecuteWizard.java
index 55c4dec352210ec744d6ccc348a8f59adbe5623e..79f0c4f37230fc9bc991aace1eb9ef16d00a0544 100644
--- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataExecuteWizard.java
+++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataExecuteWizard.java
@@ -174,7 +174,7 @@ public class MockDataExecuteWizard extends AbstractToolWizard generatorDescriptors = new HashMap<>(); // generatorId -> MockGeneratorDescriptor
private Map attributeGenerators = new HashMap<>(); // attribute.name -> generators properties
@@ -105,6 +108,14 @@ public class MockDataSettings {
return attributes;
}
+ public String getSelectedAttribute() {
+ return selectedAttribute;
+ }
+
+ public void setSelectedAttribute(String selectedAttribute) {
+ this.selectedAttribute = selectedAttribute;
+ }
+
private void putGenerator(AttributeGeneratorProperties generatorProperties, MockGeneratorDescriptor generator) {
generatorDescriptors.put(generator.getId(), generator);
generatorProperties.putGeneratorPropertySource(generator.getId(), new PropertySourceCustom(generator.getProperties(), null));
@@ -158,6 +169,7 @@ public class MockDataSettings {
}
// load selected generators
+ selectedAttribute = dialogSettings.get(KEY_SELECTED_ATTRIBUTE);
VoidProgressMonitor voidProgressMonitor = new VoidProgressMonitor();
IDialogSettings tableSection = UIUtils.getSettingsSection(dialogSettings, dbsEntity.getName());
for (Map.Entry entry : attributeGenerators.entrySet()) {
@@ -167,6 +179,7 @@ public class MockDataSettings {
if (selectedGeneratorId != null) {
AttributeGeneratorProperties attrGeneratorProperties = entry.getValue();
attrGeneratorProperties.setSelectedGeneratorId(selectedGeneratorId);
+ attrGeneratorProperties.setPresetId(attributeSection.get(KEY_PRESET_ID));
PropertySourceCustom generatorPropertySource = attrGeneratorProperties.getGeneratorPropertySource(selectedGeneratorId);
IDialogSettings generatorSection = UIUtils.getSettingsSection(attributeSection, KEY_GENERATOR_SECTION);
@@ -190,6 +203,7 @@ public class MockDataSettings {
dialogSettings.put(PROP_ROWS_NUMBER, rowsNumber);
// save selected generators
+ dialogSettings.put(KEY_SELECTED_ATTRIBUTE, selectedAttribute);
IDialogSettings tableSection = UIUtils.getSettingsSection(dialogSettings, dbsEntity.getName());
for (Map.Entry attrEntry : attributeGenerators.entrySet()) {
String attributeName = attrEntry.getKey();
@@ -198,6 +212,7 @@ public class MockDataSettings {
IDialogSettings attributeSection = UIUtils.getSettingsSection(tableSection, attributeName);
String selectedGeneratorId = attrGeneratorProperties.getSelectedGeneratorId();
attributeSection.put(KEY_SELECTED_GENERATOR, selectedGeneratorId);
+ attributeSection.put(KEY_PRESET_ID, attrGeneratorProperties.getPresetId());
IDialogSettings generatorSection = UIUtils.getSettingsSection(attributeSection, KEY_GENERATOR_SECTION);
PropertySourceCustom generatorPropertySource = attrGeneratorProperties.getGeneratorPropertySource(selectedGeneratorId);
@@ -212,12 +227,17 @@ public class MockDataSettings {
public class AttributeGeneratorProperties {
private final DBSAttributeBase attribute;
- private String selectedGeneratorId = null; // id
+ private String selectedGeneratorId = null;
+ private String presetId = null;
private Map generators = new HashMap<>(); // generatorId -> PropertySourceCustom
+
public AttributeGeneratorProperties(DBSAttributeBase attribute) {
this.attribute = attribute;
}
- public DBSAttributeBase getAttribute() { return attribute; }
+
+ public DBSAttributeBase getAttribute() {
+ return attribute;
+ }
public String getSelectedGeneratorId() {
if (selectedGeneratorId == null && !CommonUtils.isEmpty(getGenerators())) {
@@ -234,7 +254,10 @@ public class MockDataSettings {
if ((selectedGeneratorId == null || !generatorDescriptors.keySet().contains(selectedGeneratorId)) && !CommonUtils.isEmpty(getGenerators())) {
selectedGeneratorId = getGenerators().iterator().next();
}
- this.selectedGeneratorId = selectedGeneratorId;
+ if (this.selectedGeneratorId != selectedGeneratorId) {
+ this.selectedGeneratorId = selectedGeneratorId;
+ presetId = null;
+ }
return selectedGeneratorId;
}
@@ -249,6 +272,14 @@ public class MockDataSettings {
return generators.get(generatorId);
}
+ public String getPresetId() {
+ return presetId;
+ }
+
+ public void setPresetId(String presetId) {
+ this.presetId = presetId;
+ }
+
public boolean isEmpty() {
return generators.isEmpty();
}
diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java
index bc5341dc6e514991e61ab3a108fa6e549a607ad2..e68061764aa3d20243d13c5ea6ef5cc4f6ecb6f6 100644
--- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java
+++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/MockDataWizardPageSettings.java
@@ -31,6 +31,8 @@ import org.jkiss.dbeaver.Log;
import org.jkiss.dbeaver.ext.mockdata.MockDataSettings.AttributeGeneratorProperties;
import org.jkiss.dbeaver.ext.mockdata.model.MockGeneratorDescriptor;
import org.jkiss.dbeaver.model.DBValueFormatting;
+import org.jkiss.dbeaver.model.preferences.DBPPropertyDescriptor;
+import org.jkiss.dbeaver.model.runtime.VoidProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSAttributeBase;
import org.jkiss.dbeaver.runtime.properties.PropertySourceCustom;
import org.jkiss.dbeaver.ui.DBeaverIcons;
@@ -60,6 +62,7 @@ public class MockDataWizardPageSettings extends ActiveWizardPage presets = mockDataSettings.getGeneratorDescriptor(selectedGeneratorId).getPresets();
+ for (MockGeneratorDescriptor.Preset preset : presets) {
+ if (presetId.equals(preset.getId())) {
+ label += " [" + preset.getMnemonics() + "]";
+ break;
+ }
+ }
+ }
+ cell.setText(label);
}
}
}
@@ -224,7 +238,7 @@ public class MockDataWizardPageSettings extends ActiveWizardPage 0) {
+ presetCombo.select(0);
+ }
+ columnsTableViewer.refresh(true, true);
}
});
gd = new GridData();
@@ -319,6 +351,29 @@ public class MockDataWizardPageSettings extends ActiveWizardPage presets = mockDataSettings.getGeneratorDescriptor(generatorId).getPresets();
+ for (MockGeneratorDescriptor.Preset preset : presets) {
+
+ // Apply the preset
+ if (preset.getLabel().equals(presetName)) {
+ propertySource = attributeGeneratorProperties.getGeneratorPropertySource(generatorId);
+ VoidProgressMonitor monitor = new VoidProgressMonitor();
+ for (DBPPropertyDescriptor prop : preset.getProperties()) {
+ propertySource.setPropertyValue(monitor, prop.getId(), prop.getDefaultValue());
+ }
+ propsEditor.loadProperties(propertySource);
+ propsEditor.setExpandMode(PropertyTreeViewer.ExpandMode.FIRST);
+ propsEditor.expandAll();
+
+ attributeGeneratorProperties.setPresetId(preset.getId());
+ columnsTableViewer.refresh(true, true);
+ }
+ }
+ }
+
@Override
public void activatePage() {
@@ -335,15 +390,24 @@ public class MockDataWizardPageSettings extends ActiveWizardPage 0) {
- table.select(0);
+ int selectedItem = 0;
+ String selectedAttribute = mockDataSettings.getSelectedAttribute();
+ if (selectedAttribute != null) {
+ for (int i = 0; i < table.getItemCount(); i++) {
+ if (selectedAttribute.equals(table.getItem(i).getText())) {
+ selectedItem = i; break;
+ }
+ }
+ }
+ table.select(selectedItem);
// and notify the listeners
Event event = new Event();
event.widget = table;
event.display = table.getDisplay();
- event.item = table.getItem(0);
+ event.item = table.getItem(selectedItem);
event.type = SWT.Selection;
table.notifyListeners(SWT.Selection, event);
} else {
@@ -408,7 +472,10 @@ public class MockDataWizardPageSettings extends ActiveWizardPage generators = new ArrayList<>();
for (String genId : attributeGeneratorProperties.getGenerators()) {
generators.add(mockDataSettings.getGeneratorDescriptor(genId).getLabel());
@@ -435,6 +504,23 @@ public class MockDataWizardPageSettings extends ActiveWizardPage presets = generatorDescriptor.getPresets();
+ if (!presets.isEmpty()) {
+ presetCombo.removeAll();
+ presetCombo.add("Select preset...");
+ int presetIndex = 0, i = 1;
+ String presetId = attributeGeneratorProperties.getPresetId();
+ for (MockGeneratorDescriptor.Preset preset : presets) {
+ presetCombo.add(preset.getLabel());
+ if (presetId != null && preset.getId().equals(presetId)) {
+ presetIndex = i;
+ }
+ i++;
+ }
+ presetCombo.select(presetIndex);
+ presetCombo.setVisible(true);
+ }
} else {
generatorCombo.setItems(new String[] {"Not found"});
generatorCombo.setText("Not found");
diff --git a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java
index 6d32eb61bb892997609f2192abc3fcbd1f53ab1d..dbdde1029d5f0c6fb2b8199268a361a1e437fc79 100644
--- a/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java
+++ b/plugins/org.jkiss.dbeaver.ext.mockdata/src/org/jkiss/dbeaver/ext/mockdata/generator/StringTextGenerator.java
@@ -34,7 +34,7 @@ public class StringTextGenerator extends AbstractMockValueGenerator {
private String templateString;
private int minLength = 1;
- private int maxLength = 0;
+ private int maxLength = 100;
@Override
public void init(DBSDataManipulator container, DBSAttributeBase attribute, Map