Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
f34cb7e3
D
dbeaver
项目概览
suliangchun
/
dbeaver
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dbeaver
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
f34cb7e3
编写于
6月 23, 2021
作者:
S
ShadelessFox
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#12948 Support 'geometry' modifier for geometry type
上级
1b7ff372
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
17 addition
and
10 deletion
+17
-10
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/data/type/PostgreGeometryTypeHandler.java
...ostgresql/model/data/type/PostgreGeometryTypeHandler.java
+17
-10
未找到文件。
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/data/type/PostgreGeometryTypeHandler.java
浏览文件 @
f34cb7e3
...
...
@@ -27,19 +27,21 @@ public class PostgreGeometryTypeHandler extends PostgreTypeHandler {
public
static
final
PostgreGeometryTypeHandler
INSTANCE
=
new
PostgreGeometryTypeHandler
();
private
static
final
int
GEOMETRY_TYPE_GEOMETRY
=
0x0000_0000
;
private
static
final
int
GEOMETRY_TYPE_POINT
=
0x0000_0004
;
private
static
final
int
GEOMETRY_TYPE_LINESTRING
=
0x0000_0008
;
private
static
final
int
GEOMETRY_TYPE_POLYGON
=
0x0000_000C
;
private
static
final
int
GEOMETRY_TYPE_MULTIPOINT
=
0x0000_0010
;
private
static
final
int
GEOMETRY_TYPE_MULTILINESTRING
=
0x0000_0014
;
private
static
final
int
GEOMETRY_TYPE_MULTIPOLYGON
=
0x0000_0018
;
private
static
final
int
GEOMETRY_
TYPE_DIMENSION_M
=
0x0000_0001
;
private
static
final
int
GEOMETRY_
TYPE_DIMENSION_Z
=
0x0000_0002
;
private
static
final
int
GEOMETRY_
TYPE_DIMENSION_ZM
=
0x0000_0003
;
private
static
final
int
GEOMETRY_
DIMENSION_M
=
0x0000_0001
;
private
static
final
int
GEOMETRY_
DIMENSION_Z
=
0x0000_0002
;
private
static
final
int
GEOMETRY_
DIMENSION_ZM
=
0x0000_0003
;
private
static
final
int
GEOMETRY_MASK_TYPE
=
0x0000_00fc
;
private
static
final
int
GEOMETRY_MASK_SRID
=
0x00ff_ff00
;
private
static
final
int
GEOMETRY_MASK_DIMENSION
=
0x0000_0003
;
private
static
final
String
GEOMETRY_NAME_GEOMETRY
=
"geometry"
;
private
static
final
String
GEOMETRY_NAME_POINT
=
"point"
;
private
static
final
String
GEOMETRY_NAME_LINESTRING
=
"linestring"
;
private
static
final
String
GEOMETRY_NAME_POLYGON
=
"polygon"
;
...
...
@@ -69,7 +71,7 @@ public class PostgreGeometryTypeHandler extends PostgreTypeHandler {
@Override
public
String
getTypeModifiersString
(
@NotNull
PostgreDataType
type
,
int
typmod
)
{
final
StringBuilder
sb
=
new
StringBuilder
();
if
(
typmod
>
0
)
{
if
(
typmod
>
=
0
)
{
sb
.
append
(
'('
).
append
(
getGeometryType
(
typmod
));
final
DBGeometryDimension
dimension
=
getGeometryDimension
(
typmod
);
if
(
dimension
.
hasZ
())
{
...
...
@@ -93,6 +95,8 @@ public class PostgreGeometryTypeHandler extends PostgreTypeHandler {
return
null
;
}
switch
((
typmod
&
GEOMETRY_MASK_TYPE
))
{
case
GEOMETRY_TYPE_GEOMETRY:
return
GEOMETRY_NAME_GEOMETRY
;
case
GEOMETRY_TYPE_POINT:
return
GEOMETRY_NAME_POINT
;
case
GEOMETRY_TYPE_LINESTRING:
...
...
@@ -113,11 +117,11 @@ public class PostgreGeometryTypeHandler extends PostgreTypeHandler {
@NotNull
public
static
DBGeometryDimension
getGeometryDimension
(
int
typmod
)
{
switch
(
typmod
&
GEOMETRY_MASK_DIMENSION
)
{
case
GEOMETRY_
TYPE_
DIMENSION_M:
case
GEOMETRY_DIMENSION_M:
return
DBGeometryDimension
.
XYM
;
case
GEOMETRY_
TYPE_
DIMENSION_Z:
case
GEOMETRY_DIMENSION_Z:
return
DBGeometryDimension
.
XYZ
;
case
GEOMETRY_
TYPE_
DIMENSION_ZM:
case
GEOMETRY_DIMENSION_ZM:
return
DBGeometryDimension
.
XYZM
;
default
:
return
DBGeometryDimension
.
XY
;
...
...
@@ -131,16 +135,19 @@ public class PostgreGeometryTypeHandler extends PostgreTypeHandler {
private
static
int
getGeometryModifiers
(
@NotNull
String
name
,
int
srid
)
throws
DBException
{
int
typmod
=
(
srid
&
0xffff
)
<<
8
;
if
(
name
.
endsWith
(
"zm"
))
{
typmod
|=
GEOMETRY_
TYPE_
DIMENSION_ZM
;
typmod
|=
GEOMETRY_DIMENSION_ZM
;
name
=
name
.
substring
(
0
,
name
.
length
()
-
2
);
}
else
if
(
name
.
endsWith
(
"z"
))
{
typmod
|=
GEOMETRY_
TYPE_
DIMENSION_Z
;
typmod
|=
GEOMETRY_DIMENSION_Z
;
name
=
name
.
substring
(
0
,
name
.
length
()
-
1
);
}
else
if
(
name
.
endsWith
(
"m"
))
{
typmod
|=
GEOMETRY_
TYPE_
DIMENSION_M
;
typmod
|=
GEOMETRY_DIMENSION_M
;
name
=
name
.
substring
(
0
,
name
.
length
()
-
1
);
}
switch
(
name
)
{
case
GEOMETRY_NAME_GEOMETRY:
typmod
|=
GEOMETRY_TYPE_GEOMETRY
;
break
;
case
GEOMETRY_NAME_POINT:
typmod
|=
GEOMETRY_TYPE_POINT
;
break
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录