提交 657f1a3c 编写于 作者: S Serge Rider

Minor fixes


Former-commit-id: 0cb4db18
上级 ce9b06ad
......@@ -117,9 +117,6 @@ public abstract class JDBCTableConstraint<TABLE extends JDBCTable>
int maxResults)
throws DBException
{
if (keyColumn.getParentObject() != this.getTable()) {
throw new IllegalArgumentException("Bad key column argument");
}
// Use default one
return readKeyEnumeration(
session,
......@@ -205,6 +202,9 @@ public abstract class JDBCTableConstraint<TABLE extends JDBCTable>
int maxResults)
throws DBException
{
if (keyColumn.getParentObject() != this.getTable()) {
throw new IllegalArgumentException("Bad key column argument");
}
final TABLE table = getParentObject();
assert table != null;
......
......@@ -18,12 +18,13 @@ package org.jkiss.dbeaver.model.virtual;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.DBException;
import org.jkiss.dbeaver.model.DBPDataSource;
import org.jkiss.dbeaver.model.data.DBDAttributeValue;
import org.jkiss.dbeaver.model.data.DBDLabelValuePair;
import org.jkiss.dbeaver.model.exec.DBCSession;
import org.jkiss.dbeaver.model.runtime.DBRProgressMonitor;
import org.jkiss.dbeaver.model.struct.DBSEntityAttribute;
import org.jkiss.dbeaver.model.struct.DBSEntityConstraint;
import org.jkiss.dbeaver.model.struct.DBSEntityConstraintType;
import org.jkiss.dbeaver.model.struct.DBSEntityReferrer;
import org.jkiss.dbeaver.model.struct.*;
import java.util.ArrayList;
import java.util.Collection;
......@@ -32,7 +33,7 @@ import java.util.List;
/**
* Virtual constraint
*/
public class DBVEntityConstraint implements DBSEntityConstraint, DBSEntityReferrer
public class DBVEntityConstraint implements DBSEntityConstraint, DBSEntityReferrer, DBSConstraintEnumerable
{
@NotNull
private final DBVEntity entity;
......@@ -131,4 +132,33 @@ public class DBVEntityConstraint implements DBSEntityConstraint, DBSEntityReferr
attributes.add(new DBVEntityConstraintColumn(this, name));
}
@Nullable
private DBSAttributeEnumerable getEnumAttr() {
if (attributes.size() == 1) {
DBSEntityAttribute attribute = attributes.get(0).getAttribute();
if (attribute instanceof DBSAttributeEnumerable) {
return (DBSAttributeEnumerable) attribute;
}
}
return null;
}
@Override
public boolean supportsEnumeration() {
return getEnumAttr() != null;
}
@Override
public List<DBDLabelValuePair> getKeyEnumeration(DBCSession session, DBSEntityAttribute keyColumn, Object keyPattern, @Nullable List<DBDAttributeValue> preceedingKeys, boolean sortByValue, boolean sortAsc, int maxResults) throws DBException {
DBSAttributeEnumerable enumAttr = getEnumAttr();
if (enumAttr == null) {
throw new DBException("Enumeration not supported");
}
return enumAttr.getValueEnumeration(session, keyPattern, maxResults);
}
@Override
public List<DBDLabelValuePair> getKeyEnumeration(DBCSession session, DBSEntityAttribute keyColumn, List<Object> keyValues, @Nullable List<DBDAttributeValue> preceedingKeys, boolean sortByValue, boolean sortAsc) throws DBException {
throw new DBException("Multi-key enumeration is not supported");
}
}
......@@ -68,6 +68,9 @@ public abstract class DBVUtils {
@Nullable
public static DBVEntity getVirtualEntity(@NotNull DBSEntity source, boolean create)
{
if (source instanceof DBVEntity) {
return (DBVEntity) source;
}
return source.getDataSource().getContainer().getVirtualModel().findEntity(source, create);
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册