diff --git a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/sql/WebSQLConstants.java b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/sql/WebSQLConstants.java index d2345f740c..434eb10ba8 100644 --- a/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/sql/WebSQLConstants.java +++ b/server/bundles/io.cloudbeaver.model/src/io/cloudbeaver/service/sql/WebSQLConstants.java @@ -39,5 +39,7 @@ public class WebSQLConstants { public static final String ATTR_TEXT = "text"; public static final String ATTR_BINARY = "binary"; public static final String ATTR_DATA = "data"; + public static final String ATTR_SRID = "srid"; + public static final String ATTR_PROPERTIES = "properties"; } diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLDataFilterConstraint.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLDataFilterConstraint.java index c6f9a6d001..b4a2b57a2c 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLDataFilterConstraint.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/service/sql/WebSQLDataFilterConstraint.java @@ -16,6 +16,7 @@ */ package io.cloudbeaver.service.sql; +import org.jkiss.dbeaver.model.gis.DBGeometry; import org.jkiss.utils.CommonUtils; import java.util.Map; @@ -36,13 +37,27 @@ public class WebSQLDataFilterConstraint { public WebSQLDataFilterConstraint(Map map) { this.attributePosition = CommonUtils.toInt(map.get("attributePosition")); this.orderPosition = map.containsKey("orderPosition") ? - CommonUtils.toInt(map.get("orderPosition")) + 1 : // Use position + 1 because 0 means no ordering (because of legacy compatibility) - null; + CommonUtils.toInt(map.get("orderPosition")) + 1 : // Use position + 1 because 0 means no ordering (because of legacy compatibility) + null; this.orderAsc = map.containsKey("orderAsc") ? CommonUtils.toBoolean(map.get("orderAsc")) : null; this.criteria = CommonUtils.toString(map.get("criteria"), null); this.operator = CommonUtils.toString(map.get("operator"), null); - this.value = CommonUtils.toString(map.get("value"), null); + Object value = map.get("value"); + if (value instanceof Map) { + Map mappedValue = (Map) value; + //creates new geometry object if the type of the value is "geometry" + if (WebSQLConstants.VALUE_TYPE_GEOMETRY.equals(mappedValue.get(WebSQLConstants.VALUE_TYPE_ATTR))) { + this.value = new DBGeometry( + mappedValue.get(WebSQLConstants.ATTR_TEXT), + CommonUtils.toInt(mappedValue.get(WebSQLConstants.ATTR_SRID)), + (Map) mappedValue.get(WebSQLConstants.ATTR_PROPERTIES)); + } + + } else { + this.value = CommonUtils.toString(value, null); + } + } public Integer getAttributePosition() {