From 260e2164759efdc4f69f4e740a919672b3eca4e1 Mon Sep 17 00:00:00 2001 From: Ainur <59531286+yagudin10@users.noreply.github.com> Date: Fri, 1 Jul 2022 11:25:45 +0300 Subject: [PATCH] CB-1836 mysql geometry fix (#940) * CB-1836 mysql geometry fix * CB-1836 mysql web geometry get gis from value handler --- .../server/data/WebGeometryValueSerializer.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/data/WebGeometryValueSerializer.java b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/data/WebGeometryValueSerializer.java index cd6b59004a..214ab19f63 100644 --- a/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/data/WebGeometryValueSerializer.java +++ b/server/bundles/io.cloudbeaver.server/src/io/cloudbeaver/server/data/WebGeometryValueSerializer.java @@ -20,6 +20,8 @@ package io.cloudbeaver.server.data; import io.cloudbeaver.service.sql.DBWValueSerializer; import io.cloudbeaver.service.sql.WebSQLConstants; import org.jkiss.code.NotNull; +import org.jkiss.dbeaver.model.data.DBDAttributeBinding; +import org.jkiss.dbeaver.model.data.json.JSONUtils; import org.jkiss.dbeaver.model.exec.DBCException; import org.jkiss.dbeaver.model.exec.DBCSession; import org.jkiss.dbeaver.model.gis.DBGeometry; @@ -36,9 +38,18 @@ public class WebGeometryValueSerializer implements DBWValueSerializer webValue ) throws DBCException { + if (attribute instanceof DBDAttributeBinding) { + Object tempValue = ((DBDAttributeBinding) attribute).getValueHandler().getValueFromObject( + session, + attribute, + webValue.get(WebSQLConstants.ATTR_TEXT), false, true); + if (tempValue instanceof DBGeometry) { + return (DBGeometry) tempValue; + } + } return new DBGeometry( webValue.get(WebSQLConstants.ATTR_TEXT), CommonUtils.toInt(webValue.get(WebSQLConstants.ATTR_SRID)), - (Map) webValue.get(WebSQLConstants.ATTR_PROPERTIES)); + JSONUtils.getObject(webValue, WebSQLConstants.ATTR_PROPERTIES)); } }