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

Merge remote-tracking branch 'origin/devel' into devel

......@@ -18,6 +18,9 @@
package org.jkiss.dbeaver.model.data;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.DBPEvaluationContext;
import org.jkiss.dbeaver.model.DBUtils;
import org.jkiss.dbeaver.model.struct.DBSAttributeBase;
import org.jkiss.utils.CommonUtils;
......@@ -26,33 +29,35 @@ import org.jkiss.utils.CommonUtils;
*/
public class DBDAttributeConstraint extends DBDAttributeConstraintBase {
@Nullable
private DBSAttributeBase attribute;
private String attributeName;
private int originalVisualPosition;
public DBDAttributeConstraint(DBDAttributeBinding attribute) {
public DBDAttributeConstraint(@NotNull DBDAttributeBinding attribute) {
setAttribute(attribute);
setVisualPosition(this.originalVisualPosition);
setVisualPosition(attribute.getOrdinalPosition());
}
public DBDAttributeConstraint(DBSAttributeBase attribute, int visualPosition) {
public DBDAttributeConstraint(@NotNull DBSAttributeBase attribute, int visualPosition) {
setAttribute(attribute);
setVisualPosition(this.originalVisualPosition);
setVisualPosition(visualPosition);
}
public DBDAttributeConstraint(String attributeName, int originalVisualPosition) {
public DBDAttributeConstraint(@NotNull String attributeName, int originalVisualPosition) {
this.attribute = null;
this.attributeName = attributeName;
this.originalVisualPosition = originalVisualPosition;
}
public DBDAttributeConstraint(DBDAttributeConstraint source) {
public DBDAttributeConstraint(@NotNull DBDAttributeConstraint source) {
super(source);
this.attribute = source.attribute;
this.attributeName = source.attributeName;
this.originalVisualPosition = source.originalVisualPosition;
}
@Nullable
public DBSAttributeBase getAttribute() {
return attribute;
}
......@@ -63,10 +68,16 @@ public class DBDAttributeConstraint extends DBDAttributeConstraintBase {
this.originalVisualPosition = attribute.getOrdinalPosition();
}
@NotNull
public String getAttributeName() {
return attributeName;
}
@NotNull
public String getFullAttributeName() {
return attribute == null ? attributeName : DBUtils.getObjectFullName(attribute, DBPEvaluationContext.DML);
}
public int getOriginalVisualPosition() {
return originalVisualPosition;
}
......@@ -90,7 +101,7 @@ public class DBDAttributeConstraint extends DBDAttributeConstraintBase {
@Override
public int hashCode() {
return this.attribute.hashCode();
return this.attributeName.hashCode() + getVisualPosition();
}
@Override
......@@ -110,7 +121,7 @@ public class DBDAttributeConstraint extends DBDAttributeConstraintBase {
String clause = getOperator() == null ?
(getCriteria() == null ? "" : getCriteria()) :
(isReverseOperator() ? "NOT " : "") + getOperator().getStringValue() + " " + getValue();
return attribute.getName() + " " + clause;
return attributeName + " " + clause;
}
public boolean matches(DBSAttributeBase attr, boolean matchByName) {
......
......@@ -17,9 +17,9 @@
package org.jkiss.dbeaver.model.data;
import org.jkiss.code.NotNull;
import org.jkiss.code.Nullable;
import org.jkiss.dbeaver.model.exec.DBCLogicalOperator;
import org.jkiss.dbeaver.model.struct.DBSAttributeBase;
import org.jkiss.utils.CommonUtils;
/**
......@@ -30,26 +30,29 @@ public class DBDAttributeConstraintBase {
private int orderPosition;
private boolean orderDescending;
@Nullable
private String criteria;
@Nullable
private DBCLogicalOperator operator;
private boolean reverseOperator;
@Nullable
private Object value;
private boolean visible;
private int visualPosition;
// USed to generate expressions
// Used to generate expressions
@Nullable
private String entityAlias;
public DBDAttributeConstraintBase() {
}
public DBDAttributeConstraintBase(DBDAttributeConstraintBase source)
{
public DBDAttributeConstraintBase(@NotNull DBDAttributeConstraintBase source) {
copyFrom(source);
}
public void copyFrom(DBDAttributeConstraintBase source) {
public void copyFrom(@NotNull DBDAttributeConstraintBase source) {
this.orderPosition = source.orderPosition;
this.orderDescending = source.orderDescending;
this.criteria = source.criteria;
......@@ -60,44 +63,40 @@ public class DBDAttributeConstraintBase {
this.visualPosition = source.visualPosition;
}
public int getOrderPosition()
{
public int getOrderPosition() {
return orderPosition;
}
public void setOrderPosition(int orderPosition)
{
public void setOrderPosition(int orderPosition) {
this.orderPosition = orderPosition;
}
public boolean isOrderDescending()
{
public boolean isOrderDescending() {
return orderDescending;
}
public void setOrderDescending(boolean orderDescending)
{
public void setOrderDescending(boolean orderDescending) {
this.orderDescending = orderDescending;
}
public String getCriteria()
{
@Nullable
public String getCriteria() {
return criteria;
}
public void setCriteria(@Nullable String criteria)
{
public void setCriteria(@Nullable String criteria) {
this.criteria = criteria;
this.operator = null;
this.reverseOperator = false;
this.value = null;
}
@Nullable
public DBCLogicalOperator getOperator() {
return operator;
}
public void setOperator(DBCLogicalOperator operator) {
public void setOperator(@Nullable DBCLogicalOperator operator) {
this.criteria = null;
this.operator = operator;
}
......@@ -110,6 +109,7 @@ public class DBDAttributeConstraintBase {
this.reverseOperator = reverseOperator;
}
@Nullable
public Object getValue() {
return value;
}
......@@ -119,8 +119,7 @@ public class DBDAttributeConstraintBase {
this.value = value;
}
public boolean hasFilter()
{
public boolean hasFilter() {
return hasCondition() || orderPosition > 0 || !visible;
}
......@@ -128,23 +127,19 @@ public class DBDAttributeConstraintBase {
return !CommonUtils.isEmpty(criteria) || operator != null;
}
public boolean isVisible()
{
public boolean isVisible() {
return visible;
}
public void setVisible(boolean visible)
{
public void setVisible(boolean visible) {
this.visible = visible;
}
public int getVisualPosition()
{
public int getVisualPosition() {
return visualPosition;
}
public void setVisualPosition(int visualPosition)
{
public void setVisualPosition(int visualPosition) {
this.visualPosition = visualPosition;
}
......@@ -160,8 +155,7 @@ public class DBDAttributeConstraintBase {
this.entityAlias = entityAlias;
}
public void reset()
{
public void reset() {
this.orderPosition = 0;
this.orderDescending = false;
this.criteria = null;
......@@ -171,8 +165,7 @@ public class DBDAttributeConstraintBase {
this.visible = true;
}
public boolean equalFilters(DBDAttributeConstraintBase obj, boolean compareOrders)
{
public boolean equalFilters(DBDAttributeConstraintBase obj, boolean compareOrders) {
if (compareOrders) {
if (this.orderPosition != obj.orderPosition ||
this.orderDescending != obj.orderDescending) {
......@@ -181,40 +174,38 @@ public class DBDAttributeConstraintBase {
}
return
CommonUtils.equalObjects(this.criteria, obj.criteria) &&
CommonUtils.equalObjects(this.operator, obj.operator) &&
CommonUtils.equalObjects(this.reverseOperator, obj.reverseOperator) &&
CommonUtils.equalObjects(this.value, obj.value);
CommonUtils.equalObjects(this.operator, obj.operator) &&
CommonUtils.equalObjects(this.reverseOperator, obj.reverseOperator) &&
CommonUtils.equalObjects(this.value, obj.value);
}
@Override
public int hashCode()
{
public int hashCode() {
return
orderPosition +
(orderDescending ? 1 : 0) +
(this.criteria == null ? 0 : this.criteria.hashCode()) +
(this.operator == null ? 0 : this.operator.hashCode()) +
(reverseOperator ? 1 : 0) +
(this.value == null ? 0 : this.value.hashCode()) +
(visible ? 1 : 0) +
visualPosition
(orderDescending ? 1 : 0) +
(this.criteria == null ? 0 : this.criteria.hashCode()) +
(this.operator == null ? 0 : this.operator.hashCode()) +
(reverseOperator ? 1 : 0) +
(this.value == null ? 0 : this.value.hashCode()) +
(visible ? 1 : 0) +
visualPosition
;
}
@Override
public boolean equals(Object obj)
{
public boolean equals(Object obj) {
if (obj instanceof DBDAttributeConstraintBase) {
DBDAttributeConstraintBase source = (DBDAttributeConstraintBase) obj;
return
this.orderPosition == source.orderPosition &&
this.orderDescending == source.orderDescending &&
CommonUtils.equalObjects(this.criteria, source.criteria) &&
CommonUtils.equalObjects(this.operator, source.operator) &&
this.reverseOperator == source.reverseOperator &&
CommonUtils.equalObjects(this.value, source.value) &&
this.visible == source.visible &&
this.visualPosition == source.visualPosition;
this.orderDescending == source.orderDescending &&
CommonUtils.equalObjects(this.criteria, source.criteria) &&
CommonUtils.equalObjects(this.operator, source.operator) &&
this.reverseOperator == source.reverseOperator &&
CommonUtils.equalObjects(this.value, source.value) &&
this.visible == source.visible &&
this.visualPosition == source.visualPosition;
} else {
return false;
}
......
......@@ -471,11 +471,11 @@ public final class SQLUtils {
for (DBDAttributeConstraint co : filter.getOrderConstraints()) {
if (hasOrder) query.append(',');
String orderString = null;
if (co.getAttribute() instanceof DBDAttributeBindingMeta) {
String orderColumn = co.getAttribute().getName();
if (PATTERN_SIMPLE_NAME.matcher(orderColumn).matches()) {
if (co.getAttribute() == null || co.getAttribute() instanceof DBDAttributeBindingMeta) {
String orderColumn = co.getAttributeName();
if (co.getAttribute() == null || PATTERN_SIMPLE_NAME.matcher(orderColumn).matches()) {
// It is a simple column.
orderString = DBUtils.getObjectFullName(co.getAttribute(), DBPEvaluationContext.DML);
orderString = co.getFullAttributeName();
if (conditionTable != null) {
orderString = conditionTable + '.' + orderString;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册