提交 ad693aa5 编写于 作者: S Serge Rider

#94 Attribute transformers model


Former-commit-id: 1069974b
上级 51958a99
......@@ -22,6 +22,7 @@ import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.DBPDataSourceContainer;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.data.DBDAttributeTransformerDescriptor;
import org.jkiss.dbeaver.model.exec.DBCLogicalOperator;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSEntity;
......@@ -233,6 +234,7 @@ public class DBVModel extends DBVContainer {
private DBVContainer curContainer = null;
private DBVEntity curEntity = null;
private DBVEntityAttribute curAttribute = null;
private DBVTransformSettings curTransformSettings = null;
private DBVEntityConstraint curConstraint;
private DBVColorOverride curColor;
private boolean colorValue = false;
......@@ -287,6 +289,26 @@ public class DBVModel extends DBVContainer {
curEntity.addVirtualAttribute(curAttribute);
}
break;
case TAG_TRANSFORM:
curTransformSettings = new DBVTransformSettings();
if (curAttribute != null) {
curAttribute.setTransformSettings(curTransformSettings);
} else if (curEntity != null) {
curEntity.setTransformSettings(curTransformSettings);
}
break;
case TAG_INCLUDE:
case TAG_EXCLUDE:
String transformerId = atts.getValue(ATTR_ID);
if (curTransformSettings != null && !CommonUtils.isEmpty(transformerId)) {
final DBDAttributeTransformerDescriptor transformer = dataSourceContainer.getApplication().getValueHandlerRegistry().getTransformer(transformerId);
if (transformer == null) {
log.warn("Transformer '" + transformerId + "' not found");
} else {
curTransformSettings.enableTransformer(transformer, TAG_INCLUDE.equals(localName));
}
}
break;
case TAG_COLOR:
if (curEntity != null) {
try {
......@@ -335,6 +357,8 @@ public class DBVModel extends DBVContainer {
curAttribute = curAttribute.getParent();
}
break;
case TAG_TRANSFORM:
curTransformSettings = null;
case TAG_COLOR:
curColor = null;
break;
......
......@@ -87,7 +87,7 @@ public class DBVTransformSettings {
for (int i = 0; i < descriptors.size();) {
final DBDAttributeTransformerDescriptor descriptor = descriptors.get(i);
if ((descriptor.isApplicableByDefault() && excludedTransformers != null && excludedTransformers.contains(descriptor.getId())) ||
(!descriptor.isApplicableByDefault() && includedTransformers != null && includedTransformers.contains(descriptor.getId())))
(!descriptor.isApplicableByDefault() && includedTransformers != null && !includedTransformers.contains(descriptor.getId())))
{
descriptors.remove(i);
} else {
......
......@@ -26,6 +26,7 @@ import org.jkiss.dbeaver.model.data.DBDAttributeTransformer;
import org.jkiss.dbeaver.model.data.DBDAttributeTransformerDescriptor;
import org.jkiss.dbeaver.model.struct.DBSEntity;
import org.jkiss.dbeaver.model.struct.DBSEntityAttribute;
import org.jkiss.utils.ArrayUtils;
import java.util.List;
......@@ -104,6 +105,9 @@ public abstract class DBVUtils {
}
}
}
if (tdList.isEmpty()) {
return null;
}
DBDAttributeTransformer[] result = new DBDAttributeTransformer[tdList.size()];
for (int i = 0; i < tdList.size(); i++) {
result[i] = tdList.get(i).getInstance();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册