提交 06df3d71 编写于 作者: S Serge Rider

Attribute transformers properties

上级 16a62526
......@@ -25,6 +25,7 @@ import org.jkiss.dbeaver.model.data.DBDAttributeTransformerDescriptor;
import org.jkiss.dbeaver.model.impl.PropertyDescriptor;
import org.jkiss.dbeaver.registry.RegistryConstants;
import java.util.ArrayList;
import java.util.List;
/**
......@@ -37,7 +38,7 @@ public class AttributeTransformerDescriptor extends DataTypeAbstractDescriptor<D
private boolean applyByDefault;
private boolean custom;
private final DBPImage icon;
private List<DBPPropertyDescriptor> properties;
private List<DBPPropertyDescriptor> properties = new ArrayList<>();
public AttributeTransformerDescriptor(IConfigurationElement config)
{
......@@ -49,7 +50,9 @@ public class AttributeTransformerDescriptor extends DataTypeAbstractDescriptor<D
this.custom = "true".equals(config.getAttribute("custom"));
this.icon = iconToImage(config.getAttribute(RegistryConstants.ATTR_ICON));
properties = PropertyDescriptor.extractProperties(config);
for (IConfigurationElement prop : config.getChildren(PropertyDescriptor.TAG_PROPERTY_GROUP)) {
properties.addAll(PropertyDescriptor.extractProperties(prop));
}
}
@Override
......
......@@ -1181,13 +1181,35 @@ public class ResultSetViewer extends Viewer
}
List<? extends DBDAttributeTransformerDescriptor> customTransformers =
registry.findTransformers(dataSource, attr, true);
if (customTransformers != null && !customTransformers.isEmpty()) {
for (final DBDAttributeTransformerDescriptor descriptor : customTransformers) {
manager.add(new Action(descriptor.getName(), IAction.AS_RADIO_BUTTON) {
@Override
public void run() {
final DBVTransformSettings ts = DBVUtils.getTransformSettings(attr, true);
if (ts == null) {
log.debug("Can't get transformer settings for '" + DBUtils.getObjectFullName(attr) + "'");
return;
}
ts.setCustomTransformer(descriptor.getId());
dataSource.getContainer().persistConfiguration();
}
@Override
public boolean isChecked() {
return
transformSettings != null &&
descriptor.getId().equals(transformSettings.getCustomTransformer());
}
});
}
}
if (customTransformer != null && !CommonUtils.isEmpty(customTransformer.getProperties())) {
MenuManager customTransformerMenu = new MenuManager(
customTransformer == null ? attr.getDataKind().name() : customTransformer.getName(),
DBeaverIcons.getImageDescriptor(customTransformer == null ? DBUtils.getTypeImage(attr) : customTransformer.getIcon()),
null);
manager.add(customTransformerMenu);
// MenuManager customTransformerMenu = new MenuManager(
// customTransformer == null ? attr.getDataKind().name() : customTransformer.getName(),
// DBeaverIcons.getImageDescriptor(customTransformer == null ? DBUtils.getTypeImage(attr) : customTransformer.getIcon()),
// null);
// manager.add(customTransformerMenu);
manager.add(new Action("Settings ...") {
});
......@@ -1198,9 +1220,6 @@ public class ResultSetViewer extends Viewer
registry.findTransformers(dataSource, attr, false);
if (applicableTransformers != null) {
for (final DBDAttributeTransformerDescriptor descriptor : applicableTransformers) {
if (descriptor.isCustom()) {
continue;
}
manager.add(new Action(descriptor.getName(), IAction.AS_CHECK_BOX) {
@Override
public void run() {
......
......@@ -212,4 +212,8 @@ public class PropertyDescriptor implements DBPPropertyDescriptor, IPropertyValue
return validValues;
}
@Override
public String toString() {
return id + " (" + name + ")";
}
}
......@@ -97,4 +97,7 @@ public class DBVTransformSettings {
return true;
}
public void setCustomTransformer(String customTransformer) {
this.customTransformer = customTransformer;
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册