Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
suliangchun
dbeaver
提交
7ee57d88
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,发现更多精彩内容 >>
提交
7ee57d88
编写于
7月 05, 2019
作者:
A
Andrew Khitrin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
#6051 Extension manager
上级
7d3df633
变更
15
隐藏空白更改
内联
并排
Showing
15 changed file
with
742 addition
and
47 deletion
+742
-47
plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml
plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml
+22
-0
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/PostgreMessages.java
...src/org/jkiss/dbeaver/ext/postgresql/PostgreMessages.java
+5
-0
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/PostgresResources.properties
...jkiss/dbeaver/ext/postgresql/PostgresResources.properties
+10
-0
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/PostgresResources_ru.properties
...ss/dbeaver/ext/postgresql/PostgresResources_ru.properties
+4
-0
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreExtensionConfigurator.java
...ver/ext/postgresql/edit/PostgreExtensionConfigurator.java
+47
-0
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/maintenance/PostgreToolExtensionUninstall.java
...esql/tools/maintenance/PostgreToolExtensionUninstall.java
+89
-0
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/ui/PostgreCreateExtensionDialog.java
...eaver/ext/postgresql/ui/PostgreCreateExtensionDialog.java
+151
-0
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle.properties
...ss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle.properties
+21
-5
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle_ru.properties
...dbeaver.ext.postgresql/OSGI-INF/l10n/bundle_ru.properties
+18
-2
plugins/org.jkiss.dbeaver.ext.postgresql/plugin.xml
plugins/org.jkiss.dbeaver.ext.postgresql/plugin.xml
+4
-5
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreExtensionManager.java
.../dbeaver/ext/postgresql/edit/PostgreExtensionManager.java
+92
-0
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreAvailableExtension.java
...eaver/ext/postgresql/model/PostgreAvailableExtension.java
+101
-0
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDatabase.java
...g/jkiss/dbeaver/ext/postgresql/model/PostgreDatabase.java
+76
-1
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreExtension.java
.../jkiss/dbeaver/ext/postgresql/model/PostgreExtension.java
+76
-30
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreSchema.java
...org/jkiss/dbeaver/ext/postgresql/model/PostgreSchema.java
+26
-4
未找到文件。
plugins/org.jkiss.dbeaver.ext.postgresql.ui/plugin.xml
浏览文件 @
7ee57d88
...
...
@@ -114,6 +114,10 @@
<configurator
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreTableColumnConfigurator"
>
<objectType
name=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTableColumn"
/>
</configurator>
<configurator
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreExtensionConfigurator"
>
<objectType
name=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension"
/>
</configurator>
</extension>
<extension
point=
"org.jkiss.dbeaver.dataManager"
>
...
...
@@ -212,6 +216,24 @@
label=
"Disable trigger"
singleton=
"false"
>
<objectType
name=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger"
if=
"object.enabledState != 'D'"
/>
</tool>
<tool
class=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolExtensionUninstall"
description=
"Uninstall extension"
id=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolExtensionUninstall"
group=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance"
label=
"Uninstall"
singleton=
"false"
>
<objectType
name=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension"
/>
</tool>
<tool
class=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolExtensionUninstall"
description=
"Uninstall extension"
id=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolExtensionUninstall"
group=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance"
label=
"Uninstall"
singleton=
"false"
>
<objectType
name=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension"
if=
"object.isInstalled()"
/>
</tool>
<tool
class=
"org.jkiss.dbeaver.ext.postgresql.tools.maintenance.PostgreToolTriggerEnable"
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/PostgreMessages.java
浏览文件 @
7ee57d88
...
...
@@ -122,6 +122,11 @@ public class PostgreMessages extends NLS {
public
static
String
dialog_create_schema_owner
;
public
static
String
dialog_create_schema_title
;
/* dialog create extension */
public
static
String
dialog_create_extension_name
;
public
static
String
dialog_create_extension_schema
;
public
static
String
dialog_create_extension_title
;
/* PostgresSSLConfigurator */
public
static
String
dialog_connection_network_postgres_ssl_certificates
;
public
static
String
dialog_connection_network_postgres_ssl_certificates_root
;
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/PostgresResources.properties
浏览文件 @
7ee57d88
...
...
@@ -103,6 +103,16 @@ dialog_create_schema_name=Schema name
dialog_create_schema_owner
=
Owner
dialog_create_schema_title
=
Create schema
# dialog create schema #
dialog_create_schema_name
=
Schema name
dialog_create_schema_owner
=
Owner
dialog_create_schema_title
=
Create schema
# dialog create extension #
dialog_create_extension_name
=
Extension
dialog_create_extension_schema
=
Schema
dialog_create_extension_title
=
Install extensions
# PostgresSSLConfigurator #
dialog_connection_network_postgres_ssl_advanced
=
Advanced
dialog_connection_network_postgres_ssl_advanced_ssl_factory
=
SSL Factory
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/PostgresResources_ru.properties
浏览文件 @
7ee57d88
...
...
@@ -26,6 +26,10 @@ dialog_create_role_title = \u0421\u043E\u0437\u0434\u0430\u0442\u044C \u0440\u04
dialog_create_schema_name
=
\u
041D
\u0430\u0437\u0432\u0430\u
043D
\u0438\u0435
\u0441\u0445\u0435\u
043C
\u
044B
dialog_create_schema_owner
=
\u0412\u
043B
\u0430\u0434\u0435\u
043B
\u0435\u0446
dialog_create_schema_title
=
\u0421\u
043E
\u0437\u0434\u0430\u0442\u
044C
\u0441\u0445\u0435\u
043C
\u0443
# dialog create extension #
dialog_create_extension_name
=
\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u0435
dialog_create_extension_schema
=
\u0421\u0445\u0435\u
043C
\u0430
dialog_create_extension_title
=
\u0423\u0441\u0442\u0430\u
043D
\u
043E
\u0432\u
043A
\u0430
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
dialog_setting_connection_database
=
\u0411\u0430\u0437\u0430
\u0434\u0430\u
043D
\u
043D
\u
044B
\u0445
dialog_setting_connection_host
=
\u0425\u
043E
\u0441\u0442
dialog_setting_connection_localClient
=
\u
041B
\u
043E
\u
043A
\u0430\u
043B
\u
044C
\u
043D
\u
044B
\u0439
\u
043A
\u
043B
\u0438\u0435\u
043D
\u0442
...
...
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreExtensionConfigurator.java
0 → 100644
浏览文件 @
7ee57d88
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
* Copyright (C) 2019 Andrew Khitrin (ahitrin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ext.postgresql.edit
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension
;
import
org.jkiss.dbeaver.ext.postgresql.ui.PostgreCreateExtensionDialog
;
import
org.jkiss.dbeaver.model.edit.DBEObjectConfigurator
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.ui.UITask
;
import
org.jkiss.dbeaver.ui.UIUtils
;
public
class
PostgreExtensionConfigurator
implements
DBEObjectConfigurator
<
PostgreExtension
>
{
@Override
public
PostgreExtension
configureObject
(
DBRProgressMonitor
monitor
,
Object
parent
,
PostgreExtension
extension
)
{
return
new
UITask
<
PostgreExtension
>()
{
@Override
protected
PostgreExtension
runTask
()
{
PostgreCreateExtensionDialog
dialog
=
new
PostgreCreateExtensionDialog
(
UIUtils
.
getActiveWorkbenchShell
(),
extension
);
if
(
dialog
.
open
()
!=
IDialogConstants
.
OK_ID
)
{
return
null
;
}
extension
.
setName
(
dialog
.
getExtension
().
getName
());
extension
.
setSchema
(
dialog
.
getSchema
().
getName
());
return
extension
;
}
}.
execute
();
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/tools/maintenance/PostgreToolExtensionUninstall.java
0 → 100644
浏览文件 @
7ee57d88
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
* Copyright (C) 2019 Andrew Khitrin (ahitrin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ext.postgresql.tools.maintenance
;
import
java.lang.reflect.InvocationTargetException
;
import
java.util.Collection
;
import
java.util.List
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.ui.IWorkbenchPart
;
import
org.eclipse.ui.IWorkbenchPartSite
;
import
org.eclipse.ui.IWorkbenchWindow
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreObject
;
import
org.jkiss.dbeaver.model.navigator.DBNDatabaseNode
;
import
org.jkiss.dbeaver.model.navigator.DBNUtils
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
org.jkiss.dbeaver.runtime.DBWorkbench
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.tools.IUserInterfaceTool
;
import
org.jkiss.utils.CommonUtils
;
public
class
PostgreToolExtensionUninstall
implements
IUserInterfaceTool
{
@Override
public
void
execute
(
IWorkbenchWindow
window
,
IWorkbenchPart
activePart
,
Collection
<
DBSObject
>
objects
)
throws
DBException
{
List
<
PostgreObject
>
extensionList
=
CommonUtils
.
filterCollection
(
objects
,
PostgreObject
.
class
);
if
(!
extensionList
.
isEmpty
())
{
SQLDialog
dialog
=
new
SQLDialog
(
activePart
.
getSite
(),
extensionList
);
if
(
dialog
.
open
()
==
IDialogConstants
.
OK_ID
)
{
refreshObjectsState
(
extensionList
);
}
}
}
private
void
refreshObjectsState
(
List
<
PostgreObject
>
extList
)
{
try
{
UIUtils
.
runInProgressDialog
(
monitor
->
{
for
(
PostgreObject
ext
:
extList
)
{
try
{
DBNDatabaseNode
extNode
=
DBNUtils
.
getNodeByObject
(
ext
);
if
(
extNode
!=
null
)
{
extNode
.
refreshNode
(
monitor
,
PostgreToolExtensionUninstall
.
this
);
}
}
catch
(
DBException
e
)
{
throw
new
InvocationTargetException
(
e
);
}
}
});
}
catch
(
InvocationTargetException
e
)
{
DBWorkbench
.
getPlatformUI
().
showError
(
"Refresh extensions state"
,
"Error refreshign extension state"
,
e
.
getTargetException
());
}
}
class
SQLDialog
extends
TableToolDialog
{
public
SQLDialog
(
IWorkbenchPartSite
partSite
,
List
<
PostgreObject
>
exts
)
{
super
(
partSite
,
"Uninstall extension"
,
exts
);
}
@Override
protected
void
generateObjectCommand
(
List
<
String
>
lines
,
PostgreObject
object
)
{
lines
.
add
(
"DROP EXTENSION "
+
((
PostgreObject
)
object
).
getName
()
+
" CASCADE"
);
}
@Override
protected
void
createControls
(
Composite
parent
)
{
createObjectsSelector
(
parent
);
}
}
}
plugins/org.jkiss.dbeaver.ext.postgresql.ui/src/org/jkiss/dbeaver/ext/postgresql/ui/PostgreCreateExtensionDialog.java
0 → 100644
浏览文件 @
7ee57d88
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ext.postgresql.ui
;
import
org.eclipse.core.runtime.IStatus
;
import
org.eclipse.core.runtime.Status
;
import
org.eclipse.jface.dialogs.IDialogConstants
;
import
org.eclipse.swt.SWT
;
import
org.eclipse.swt.events.SelectionAdapter
;
import
org.eclipse.swt.events.SelectionEvent
;
import
org.eclipse.swt.layout.GridData
;
import
org.eclipse.swt.layout.GridLayout
;
import
org.eclipse.swt.widgets.Combo
;
import
org.eclipse.swt.widgets.Composite
;
import
org.eclipse.swt.widgets.Shell
;
import
org.eclipse.swt.widgets.Text
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreMessages
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension
;
import
org.jkiss.dbeaver.model.runtime.AbstractJob
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.ui.UIUtils
;
import
org.jkiss.dbeaver.ui.dialogs.BaseDialog
;
import
org.jkiss.dbeaver.utils.GeneralUtils
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* PostgreCreateExtensionDialog
*/
public
class
PostgreCreateExtensionDialog
extends
BaseDialog
{
private
PostgreAvailableExtension
extension
;
private
final
PostgreExtension
newextension
;
private
List
<
PostgreSchema
>
allSchemas
;
private
String
name
;
private
PostgreSchema
schema
;
private
List
<
PostgreAvailableExtension
>
installed
;
public
PostgreCreateExtensionDialog
(
Shell
parentShell
,
PostgreExtension
extension
)
{
super
(
parentShell
,
PostgreMessages
.
dialog_create_extension_title
,
null
);
this
.
newextension
=
extension
;
}
private
void
checkEnabled
()
{
getButton
(
IDialogConstants
.
OK_ID
).
setEnabled
(
extension
!=
null
&&
schema
!=
null
);
}
@Override
protected
Composite
createDialogArea
(
Composite
parent
)
{
final
Composite
composite
=
super
.
createDialogArea
(
parent
);
final
Composite
group
=
new
Composite
(
composite
,
SWT
.
NONE
);
group
.
setLayout
(
new
GridLayout
(
2
,
false
));
group
.
setLayoutData
(
new
GridData
(
GridData
.
FILL_BOTH
));
final
Text
databaseText
=
UIUtils
.
createLabelText
(
group
,
"Database"
,
newextension
.
getDatabase
().
getName
(),
SWT
.
BORDER
|
SWT
.
READ_ONLY
);
//$NON-NLS-2$
final
Combo
extensionCombo
=
UIUtils
.
createLabelCombo
(
group
,
PostgreMessages
.
dialog_create_extension_name
,
SWT
.
BORDER
|
SWT
.
DROP_DOWN
|
SWT
.
READ_ONLY
);
final
Combo
schemaCombo
=
UIUtils
.
createLabelCombo
(
group
,
PostgreMessages
.
dialog_create_extension_schema
,
SWT
.
BORDER
|
SWT
.
DROP_DOWN
|
SWT
.
READ_ONLY
);
schemaCombo
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
schema
=
allSchemas
.
get
(
schemaCombo
.
getSelectionIndex
());
checkEnabled
();
}
});
extensionCombo
.
addSelectionListener
(
new
SelectionAdapter
()
{
@Override
public
void
widgetSelected
(
SelectionEvent
e
)
{
extension
=
installed
.
get
(
extensionCombo
.
getSelectionIndex
());
extensionCombo
.
setToolTipText
(
installed
.
get
(
extensionCombo
.
getSelectionIndex
()).
getDescription
());
checkEnabled
();
}
});
new
AbstractJob
(
"Load schemas"
)
{
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
try
{
allSchemas
=
new
ArrayList
<>(
newextension
.
getDatabase
().
getSchemas
(
monitor
));
UIUtils
.
syncExec
(()
->
{
for
(
PostgreSchema
schema
:
allSchemas
)
{
schemaCombo
.
add
(
schema
.
getName
());
}
});
}
catch
(
DBException
e
)
{
return
GeneralUtils
.
makeExceptionStatus
(
e
);
}
return
Status
.
OK_STATUS
;
}
}.
schedule
();
new
AbstractJob
(
"Load available extensions"
)
{
@Override
protected
IStatus
run
(
DBRProgressMonitor
monitor
)
{
try
{
installed
=
new
ArrayList
<>(
newextension
.
getDatabase
().
getAvailableExtensions
(
monitor
));
UIUtils
.
syncExec
(()
->
{
for
(
PostgreAvailableExtension
e
:
installed
)
{
extensionCombo
.
add
(
e
.
getName
());
}
});
}
catch
(
DBException
e
)
{
return
GeneralUtils
.
makeExceptionStatus
(
e
);
}
return
Status
.
OK_STATUS
;
}
}.
schedule
();
return
composite
;
}
@Override
protected
void
createButtonsForButtonBar
(
Composite
parent
)
{
super
.
createButtonsForButtonBar
(
parent
);
getButton
(
IDialogConstants
.
OK_ID
).
setEnabled
(
false
);
}
public
PostgreAvailableExtension
getExtension
()
{
return
extension
;
}
public
PostgreSchema
getSchema
()
{
return
schema
;
}
}
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle.properties
浏览文件 @
7ee57d88
...
...
@@ -178,11 +178,25 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.name.description=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.template.name
=
Template
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase.template.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.name.name
=
Name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.name.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.name.description
=
Extension name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.name
=
Schema
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.description
=
Installed schema
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.name
=
Version
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.description
=
Installed version
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.relocatable.name
=
Relocatable
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.relocatable.description
=
Can be relocated
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.tables.name
=
Tables
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.tables.description
=
Using tables
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.conditions.name
=
Conditions
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.conditions.description
=
ExtensionConditions
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.name.name
=
Name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.name.description
=
Extension name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.version.name
=
Version
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.version.description
=
Extension version
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.installedVersion.name
=
Installed
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.installedVersion.description
=
Installed version
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.description.name
=
Description
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.description.description
=
Comment
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAggregate.name.name
=
Name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAggregate.name.description
=
Aggregate function name
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAggregate.inputTypes.name
=
Inputs
...
...
@@ -576,8 +590,10 @@ tree.database.node.name=Database
tree.databases.node.name
=
Databases
tree.encoding.node.name
=
Encoding
tree.encodings.node.name
=
Encodings
tree.extension.node.name
=
Extension
tree.extensions.node.name
=
Extensions
tree.extension.node.name
=
Installed Extension
tree.extensions.node.name
=
Installed Extensions
tree.avalextension.node.name
=
Available Extension
tree.avalextensions.node.name
=
Available Extensions
tree.foreignDataWrapper.node.name
=
Foreign data wrapper
tree.foreignDataWrappers.node.name
=
Foreign data wrappers
tree.foreignServer.node.name
=
Foreign server
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/OSGI-INF/l10n/bundle_ru.properties
浏览文件 @
7ee57d88
...
...
@@ -174,6 +174,20 @@ meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.name=\u0421\
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.schema.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.name
=
\u0412\u0435\u0440\u0441\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.version.description
=
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.relocatable.name
=
\u
041F
\u0435\u0440\u0435\u
043C
\u0435\u0449\u0430\u0435\u
043C
\u
043E
\u0435
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.relocatable.description
=
\u
041C
\u
043E
\u0436\u
043D
\u
043E
\u
043F
\u0435\u0440\u0435\u
043C
\u0435\u0441\u0442\u0438\u0442\u
044C
\u0432
\u0434\u0440\u0443\u0433\u0443\u
044E
\u0441\u0445\u0435\u
043C
\u0443
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.tables.name
=
\u0422\u0430\u0431\u
043B
\u0438\u0446\u
044B
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.tables.description
=
\u0442\u0430\u0431\u
043B
\u0438\u0446\u
044B
\u
043A
\u
043E
\u
043D
\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.conditions.name
=
\u0423\u0441\u
043B
\u
043E
\u0432\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension.conditions.description
=
\u0444\u0438\u
043B
\u
044C
\u0442\u0440\u0430
WHERE
\u0434\u
043B
\u
044F
\u0442\u0430\u0431\u
043B
\u0438\u0446
\u
043A
\u
043E
\u
043D
\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.name.name
=
\u0418\u
043C
\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.name.description
=
\u0418\u
043C
\u
044F
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.version.name
=
\u0412\u0435\u0440\u0441\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.version.description
=
\u0412\u0435\u0440\u0441\u0438\u
044F
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.installedVersion.name
=
\u0423\u0441\u0442\u0430\u
043D
\u
043E
\u0432\u
043B
\u0435\u
043D
\u
043E
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.installedVersion.description
=
\u0423\u0441\u0442\u0430\u
043D
\u
043E
\u0432\u
043B
\u0435\u
043D
\u
043D
\u0430\u
044F
\u0432\u0435\u0440\u0441\u0438\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.description.name
=
\u
041E
\u
043F
\u0438\u0441\u0430\u
043D
\u0438\u0435
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension.description.description
=
\u
041A
\u0440\u0430\u0442\u
043A
\u
043E
\u0435
\u
043E
\u
043F
\u0438\u0441\u0430\u
043D
\u0438\u0435
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.handler.name
=
\u0424\u0443\u
043D
\u
043A
\u0446\u0438\u
044F
\u0443\u
043A
\u0430\u0437\u0430\u0442\u0435\u
043B
\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.handler.description
=
\u0424\u0443\u
043D
\u
043A
\u0446\u0438\u
044F
\u0443\u
043A
\u0430\u0437\u0430\u0442\u0435\u
043B
\u
044F
meta.org.jkiss.dbeaver.ext.postgresql.model.PostgreForeignDataWrapper.name.name
=
\u
041D
\u0430\u0437\u0432\u0430\u
043D
\u0438\u0435
...
...
@@ -493,8 +507,10 @@ tree.database.node.name=\u0411\u0430\u0437\u0430 \u0434\u0430\u043D\u043D\u044B\
tree.databases.node.name
=
\u0411\u0430\u0437\u
044B
\u0434\u0430\u
043D
\u
043D
\u
044B
\u0445
tree.encoding.node.name
=
\u
041A
\u
043E
\u0434\u0438\u0440\u
043E
\u0432\u
043A
\u0430
tree.encodings.node.name
=
\u
041A
\u
043E
\u0434\u0438\u0440\u
043E
\u0432\u
043A
\u0438
tree.extension.node.name
=
\u
041C
\u
043E
\u0434\u0443\u
043B
\u
044C
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
tree.extensions.node.name
=
\u
041C
\u
043E
\u0434\u0443\u
043B
\u0438
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
tree.extension.node.name
=
\u0423\u0441\u0442\u0430\u
043D
\u
043E
\u0432\u
043B
\u0435\u
043D
\u
043D
\u
043E
\u0435
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
tree.extensions.node.name
=
\u0423\u0441\u0442\u0430\u
043D
\u
043E
\u0432\u
043B
\u0435\u
043D
\u
043D
\u
044B
\u0435
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
tree.avalextension.node.name
=
\u0414\u
043E
\u0441\u0442\u0443\u
043F
\u
043D
\u
044B
\u0435
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
tree.avalextensions.node.name
=
\u0414\u
043E
\u0441\u0442\u0443\u
043F
\u
043D
\u
044B
\u0435
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u
044F
tree.extensions.node.tip
=
\u0421\u
043F
\u0438\u0441\u
043E
\u
043A
\u0438\u
043C
\u0435\u
043D
\u0440\u0430\u0441\u0448\u0438\u0440\u0435\u
043D
\u0438\u0439
tree.foreignDataWrapper.node.name
=
\u
041E
\u0431\u
043E
\u
043B
\u
043E
\u0447\u
043A
\u0430
\u0432\u
043D
\u0435\u0448\u
043D
\u0438\u0445
\u0434\u0430\u
043D
\u
043D
\u
044B
\u0445
tree.foreignDataWrappers.node.name
=
\u
041E
\u0431\u
043E
\u
043B
\u
043E
\u0447\u
043A
\u0438
\u0432\u
043D
\u0435\u0448\u
043D
\u0438\u0445
\u0434\u0430\u
043D
\u
043D
\u
044B
\u0445
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/plugin.xml
浏览文件 @
7ee57d88
...
...
@@ -160,11 +160,6 @@
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreAggregate"
label=
"%tree.aggregates.node.name"
icon=
"#functions"
description=
"%tree.aggregates.node.tip"
visibleIf=
"object.dataSource.serverType.supportsAggregates()"
>
<items
label=
"%tree.aggregate.node.name"
path=
"aggregate"
property=
"aggregateFunctions"
icon=
"#function"
/>
</folder>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreInformation"
label=
"%tree.information.node.name"
icon=
"#folder_info"
description=
"%tree.information.node.tip"
>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension"
label=
"%tree.extensions.node.name"
icon=
"#extensions"
description=
"%tree.extensions.node.tip"
visibleIf=
"object.dataSource.serverType.supportsExtensions()"
>
<items
label=
"%tree.extension.node.name"
path=
"extension"
property=
"extensions"
icon=
"#extension"
/>
</folder>
</folder>
</items>
</folder>
...
...
@@ -220,6 +215,9 @@
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension"
label=
"%tree.extensions.node.name"
icon=
"#extensions"
description=
"%tree.extensions.node.tip"
visibleIf=
"object.dataSource.serverType.supportsExtensions()"
>
<items
label=
"%tree.extension.node.name"
path=
"extension"
property=
"extensions"
icon=
"#extension"
/>
</folder>
<folder
type=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreAvailableExtension"
label=
"%tree.avalextensions.node.name"
icon=
"#extensions"
description=
"%tree.extensions.node.tip"
visibleIf=
"object.dataSource.serverType.supportsExtensions()"
>
<items
label=
"%tree.avalextension.node.name"
path=
"extension"
property=
"availableExtensions"
icon=
"#extension"
/>
</folder>
</folder>
</items>
...
...
@@ -447,6 +445,7 @@
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreTriggerManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreTrigger"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreProcedureManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreProcedure"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreRoleManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreRole"
/>
<manager
class=
"org.jkiss.dbeaver.ext.postgresql.edit.PostgreExtensionManager"
objectType=
"org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension"
/>
</extension>
<extension
point=
"org.jkiss.dbeaver.dataTypeProvider"
>
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/edit/PostgreExtensionManager.java
0 → 100644
浏览文件 @
7ee57d88
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
* Copyright (C) 2019 Andrew Khitrin (ahitrin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ext.postgresql.edit
;
import
java.util.List
;
import
java.util.Map
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreDatabase
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreExtension
;
import
org.jkiss.dbeaver.model.DBPDataSource
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.edit.DBECommandContext
;
import
org.jkiss.dbeaver.model.edit.DBEPersistAction
;
import
org.jkiss.dbeaver.model.impl.DBSObjectCache
;
import
org.jkiss.dbeaver.model.impl.edit.SQLDatabasePersistAction
;
import
org.jkiss.dbeaver.model.impl.sql.edit.SQLObjectEditor
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
public
class
PostgreExtensionManager
extends
SQLObjectEditor
<
PostgreExtension
,
PostgreDatabase
>{
@Override
public
long
getMakerOptions
(
DBPDataSource
dataSource
)
{
return
FEATURE_SAVE_IMMEDIATELY
;
}
@Override
public
DBSObjectCache
<
PostgreDatabase
,
PostgreExtension
>
getObjectsCache
(
PostgreExtension
object
)
{
return
object
.
getDatabase
().
extensionCache
;
}
@Override
protected
PostgreExtension
createDatabaseObject
(
DBRProgressMonitor
monitor
,
DBECommandContext
context
,
Object
container
,
Object
copyFrom
,
Map
<
String
,
Object
>
options
)
throws
DBException
{
return
new
PostgreExtension
((
PostgreDatabase
)
container
);
}
@Override
protected
void
addObjectCreateActions
(
DBRProgressMonitor
monitor
,
List
<
DBEPersistAction
>
actions
,
SQLObjectEditor
<
PostgreExtension
,
PostgreDatabase
>.
ObjectCreateCommand
command
,
Map
<
String
,
Object
>
options
)
{
final
PostgreExtension
extension
=
command
.
getObject
();
final
StringBuilder
script
=
new
StringBuilder
(
"CREATE EXTENSION "
+
DBUtils
.
getQuotedIdentifier
(
extension
));
script
.
append
(
" SCHEMA "
).
append
(
extension
.
getSchema
());
actions
.
add
(
new
SQLDatabasePersistAction
(
"Create extension"
,
script
.
toString
())
//$NON-NLS-2$
);
}
@Override
protected
void
addObjectDeleteActions
(
List
<
DBEPersistAction
>
actions
,
SQLObjectEditor
<
PostgreExtension
,
PostgreDatabase
>.
ObjectDeleteCommand
command
,
Map
<
String
,
Object
>
options
)
{
}
@Override
public
boolean
canCreateObject
(
Object
container
)
{
return
true
;
}
@Override
public
boolean
canDeleteObject
(
PostgreExtension
object
)
{
return
false
;
}
@Override
public
boolean
canEditObject
(
PostgreExtension
object
)
{
return
false
;
}
}
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreAvailableExtension.java
0 → 100644
浏览文件 @
7ee57d88
/*
* DBeaver - Universal Database Manager
* Copyright (C) 2010-2019 Serge Rider (serge@jkiss.org)
* Copyright (C) 2019 Andrew Khitrin (ahitrin@gmail.com)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package
org.jkiss.dbeaver.ext.postgresql.model
;
import
java.sql.ResultSet
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils
;
import
org.jkiss.dbeaver.model.meta.Property
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
public
class
PostgreAvailableExtension
implements
PostgreObject
{
private
final
PostgreDatabase
database
;
private
final
String
name
;
private
final
long
oid
;
private
final
String
description
;
private
final
String
version
;
private
final
String
installed_version
;
private
final
boolean
installed
;
public
PostgreAvailableExtension
(
PostgreDatabase
database
,
ResultSet
dbResult
)
{
this
.
database
=
database
;
this
.
oid
=
JDBCUtils
.
safeGetLong
(
dbResult
,
"oid"
);
this
.
name
=
JDBCUtils
.
safeGetString
(
dbResult
,
"name"
);
this
.
version
=
JDBCUtils
.
safeGetString
(
dbResult
,
"default_version"
);
this
.
installed_version
=
JDBCUtils
.
safeGetString
(
dbResult
,
"installed_version"
);
installed
=
installed_version
!=
null
;
this
.
description
=
JDBCUtils
.
safeGetString
(
dbResult
,
"comment"
);
}
@Override
public
DBSObject
getParentObject
()
{
return
null
;
}
@Override
@Property
(
viewable
=
true
,
order
=
1
)
public
String
getName
()
{
return
name
;
}
@Property
(
viewable
=
true
,
order
=
2
)
public
String
getVersion
()
{
return
version
;
}
@Property
(
viewable
=
true
,
order
=
3
)
public
String
getInstalledVersion
()
{
return
installed_version
;
}
@Override
@Property
(
viewable
=
true
,
order
=
4
)
public
String
getDescription
()
{
return
description
;
}
@Override
public
boolean
isPersisted
()
{
return
false
;
}
@Override
public
long
getObjectId
()
{
return
oid
;
}
@Override
public
PostgreDataSource
getDataSource
()
{
return
database
.
getDataSource
();
}
@Override
public
PostgreDatabase
getDatabase
()
{
return
database
;
}
public
boolean
isInstalled
()
{
return
installed
;
}
}
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreDatabase.java
浏览文件 @
7ee57d88
...
...
@@ -22,6 +22,7 @@ import org.jkiss.dbeaver.DBException;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreConstants
;
import
org.jkiss.dbeaver.ext.postgresql.PostgreUtils
;
import
org.jkiss.dbeaver.ext.postgresql.model.PostgreSchema.ExtensionCache
;
import
org.jkiss.dbeaver.model.*
;
import
org.jkiss.dbeaver.model.exec.DBCException
;
import
org.jkiss.dbeaver.model.exec.DBCExecutionPurpose
;
...
...
@@ -91,6 +92,8 @@ public class PostgreDatabase extends JDBCRemoteInstance<PostgreDataSource>
public
final
ForeignServerCache
foreignServerCache
=
new
ForeignServerCache
();
public
final
LanguageCache
languageCache
=
new
LanguageCache
();
public
final
EncodingCache
encodingCache
=
new
EncodingCache
();
public
final
ExtensionCache
extensionCache
=
new
ExtensionCache
();
public
final
AvailableExtensionCache
availableExtensionCache
=
new
AvailableExtensionCache
();
public
final
CollationCache
collationCache
=
new
CollationCache
();
public
final
TablespaceCache
tablespaceCache
=
new
TablespaceCache
();
public
final
LongKeyMap
<
PostgreDataType
>
dataTypeCache
=
new
LongKeyMap
<>();
...
...
@@ -414,7 +417,20 @@ public class PostgreDatabase extends JDBCRemoteInstance<PostgreDataSource>
checkInstanceConnection
(
monitor
);
return
encodingCache
.
getAllObjects
(
monitor
,
this
);
}
@Association
public
Collection
<
PostgreExtension
>
getExtensions
(
DBRProgressMonitor
monitor
)
throws
DBException
{
return
extensionCache
.
getAllObjects
(
monitor
,
this
);
}
@Association
public
Collection
<
PostgreAvailableExtension
>
getAvailableExtensions
(
DBRProgressMonitor
monitor
)
throws
DBException
{
return
availableExtensionCache
.
getAllObjects
(
monitor
,
this
);
}
@Association
public
Collection
<
PostgreCollation
>
getCollations
(
DBRProgressMonitor
monitor
)
throws
DBException
{
...
...
@@ -1016,6 +1032,65 @@ public class PostgreDatabase extends JDBCRemoteInstance<PostgreDataSource>
return
new
PostgreTablespace
(
owner
,
dbResult
);
}
}
class
AvailableExtensionCache
extends
JDBCObjectCache
<
PostgreDatabase
,
PostgreAvailableExtension
>
{
@Override
protected
JDBCStatement
prepareObjectsStatement
(
@NotNull
JDBCSession
session
,
@NotNull
PostgreDatabase
owner
)
throws
SQLException
{
final
JDBCPreparedStatement
dbStat
=
session
.
prepareStatement
(
"SELECT name,default_version,installed_version,comment FROM pg_catalog.pg_available_extensions ORDER BY name"
);
return
dbStat
;
}
@Override
protected
PostgreAvailableExtension
fetchObject
(
@NotNull
JDBCSession
session
,
@NotNull
PostgreDatabase
owner
,
@NotNull
JDBCResultSet
dbResult
)
throws
SQLException
,
DBException
{
return
new
PostgreAvailableExtension
(
owner
,
dbResult
);
}
}
class
ExtensionCache
extends
JDBCObjectCache
<
PostgreDatabase
,
PostgreExtension
>
{
@Override
protected
JDBCStatement
prepareObjectsStatement
(
@NotNull
JDBCSession
session
,
@NotNull
PostgreDatabase
owner
)
throws
SQLException
{
final
JDBCPreparedStatement
dbStat
=
session
.
prepareStatement
(
"SELECT \n"
+
" e.oid,\n"
+
" a.rolname oname,\n"
+
" cfg.tbls,\n"
+
" e.* \n"
+
"FROM \n"
+
" pg_catalog.pg_extension e \n"
+
" join pg_authid a on a.oid = e.extowner\n"
+
" join pg_namespace n on n.oid =e.extnamespace\n"
+
" left join (\n"
+
" select\n"
+
" ARRAY_AGG(ns.nspname || '.' || cls.relname) tbls, oid_ext\n"
+
" from\n"
+
" (\n"
+
" select\n"
+
" unnest(e1.extconfig) oid , e1.oid oid_ext\n"
+
" from\n"
+
" pg_catalog.pg_extension e1 ) c \n"
+
" join pg_class cls on cls.oid = c.oid \n"
+
" join pg_namespace ns on ns.oid = cls.relnamespace\n"
+
" group by oid_ext \n"
+
" ) cfg on cfg.oid_ext = e.oid\n"
+
"ORDER BY e.oid"
);
// dbStat.setLong(1, PostgreSchema.this.getObjectId());
return
dbStat
;
}
@Override
protected
PostgreExtension
fetchObject
(
@NotNull
JDBCSession
session
,
@NotNull
PostgreDatabase
owner
,
@NotNull
JDBCResultSet
dbResult
)
throws
SQLException
,
DBException
{
return
new
PostgreExtension
(
owner
,
dbResult
);
}
}
public
static
class
SchemaCache
extends
JDBCObjectLookupCache
<
PostgreDatabase
,
PostgreSchema
>
{
@NotNull
...
...
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreExtension.java
浏览文件 @
7ee57d88
...
...
@@ -20,15 +20,16 @@ import org.jkiss.code.NotNull;
import
org.jkiss.code.Nullable
;
import
org.jkiss.dbeaver.DBException
;
import
org.jkiss.dbeaver.Log
;
import
org.jkiss.dbeaver.model.DBUtils
;
import
org.jkiss.dbeaver.model.impl.jdbc.JDBCUtils
;
import
org.jkiss.dbeaver.model.meta.IPropertyValueListProvider
;
import
org.jkiss.dbeaver.model.meta.Property
;
import
org.jkiss.dbeaver.model.runtime.DBRProgressMonitor
;
import
org.jkiss.dbeaver.model.runtime.VoidProgressMonitor
;
import
org.jkiss.dbeaver.model.struct.DBSObject
;
import
java.sql.ResultSet
;
import
java.sql.SQLException
;
import
java.util.
LinkedHashMap
;
import
java.util.
Collection
;
import
java.util.Map
;
/**
...
...
@@ -37,17 +38,29 @@ import java.util.Map;
public
class
PostgreExtension
implements
PostgreObject
,
PostgreScriptObject
{
private
static
final
Log
log
=
Log
.
getLog
(
PostgreExtension
.
class
);
private
PostgreDatabase
database
;
private
PostgreSchema
schema
;
private
long
oid
;
private
String
name
;
private
String
owner
;
private
String
tables
;
private
String
conditions
;
private
boolean
relocatable
;
private
String
version
;
private
Map
<
Long
,
String
>
tableConditions
;
public
PostgreExtension
(
PostgreDatabase
database
)
{
this
.
database
=
database
;
this
.
owner
=
"postgres"
;
}
public
PostgreExtension
(
Postgre
Schema
schema
,
ResultSet
dbResult
)
public
PostgreExtension
(
Postgre
Database
database
,
ResultSet
dbResult
)
throws
SQLException
{
this
.
schema
=
schema
;
this
.
database
=
database
;
this
.
loadInfo
(
dbResult
);
}
...
...
@@ -57,36 +70,50 @@ public class PostgreExtension implements PostgreObject, PostgreScriptObject {
this
.
oid
=
JDBCUtils
.
safeGetLong
(
dbResult
,
"oid"
);
this
.
name
=
JDBCUtils
.
safeGetString
(
dbResult
,
"extname"
);
this
.
version
=
JDBCUtils
.
safeGetString
(
dbResult
,
"extversion"
);
try
{
Long
[]
extTableIDs
=
JDBCUtils
.
safeGetArray
(
dbResult
,
"extconfig"
);
String
[]
extTableConditions
=
JDBCUtils
.
safeGetArray
(
dbResult
,
"extcondition"
);
if
(
extTableIDs
!=
null
&&
extTableConditions
!=
null
)
{
if
(
extTableIDs
.
length
!=
extTableConditions
.
length
)
{
log
.
error
(
"extconfig.length <> extcondition.length"
);
}
else
{
tableConditions
=
new
LinkedHashMap
<>();
for
(
int
i
=
0
;
i
<
extTableIDs
.
length
;
i
++)
{
tableConditions
.
put
(
extTableIDs
[
i
],
extTableConditions
[
i
]);
}
}
}
}
catch
(
Exception
e
)
{
log
.
error
(
e
);
}
this
.
owner
=
JDBCUtils
.
safeGetString
(
dbResult
,
"oname"
);
this
.
tables
=
JDBCUtils
.
safeGetString
(
dbResult
,
"tbls"
);
this
.
relocatable
=
JDBCUtils
.
safeGetBoolean
(
dbResult
,
"extrelocatable"
);
this
.
conditions
=
JDBCUtils
.
safeGetString
(
dbResult
,
"extcondition"
);
}
@NotNull
@Override
@Property
(
viewable
=
true
,
order
=
1
)
@Property
(
viewable
=
true
,
editable
=
true
,
order
=
1
)
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
@NotNull
@Property
(
viewable
=
true
,
order
=
2
)
public
PostgreSchema
getSchema
()
{
return
schema
;
@Property
(
viewable
=
true
,
order
=
5
)
public
String
getTables
()
{
return
tables
;
}
@NotNull
@Property
(
viewable
=
true
,
order
=
6
)
public
String
getConditions
()
{
return
conditions
;
}
@NotNull
@Property
(
viewable
=
true
,
editable
=
true
,
updatable
=
true
,
order
=
4
,
listProvider
=
SchemaListProvider
.
class
)
public
String
getSchema
()
{
return
owner
;
}
public
void
setSchema
(
String
schema
)
{
this
.
owner
=
schema
;
}
@NotNull
@Property
(
viewable
=
true
,
order
=
3
)
public
boolean
getRelocatable
()
{
return
relocatable
;
}
@Override
...
...
@@ -94,7 +121,7 @@ public class PostgreExtension implements PostgreObject, PostgreScriptObject {
return
oid
;
}
@Property
(
viewable
=
true
,
order
=
4
)
@Property
(
viewable
=
true
,
order
=
2
)
public
String
getVersion
()
{
return
version
;
}
...
...
@@ -117,13 +144,13 @@ public class PostgreExtension implements PostgreObject, PostgreScriptObject {
@Override
public
DBSObject
getParentObject
()
{
return
schema
;
return
database
;
}
@NotNull
@Override
public
PostgreDataSource
getDataSource
()
{
return
schema
.
getDataSource
();
return
database
.
getDataSource
();
}
@Override
...
...
@@ -134,7 +161,7 @@ public class PostgreExtension implements PostgreObject, PostgreScriptObject {
@NotNull
@Override
public
PostgreDatabase
getDatabase
()
{
return
schema
.
getDatabase
()
;
return
database
;
}
@Override
...
...
@@ -143,7 +170,7 @@ public class PostgreExtension implements PostgreObject, PostgreScriptObject {
"-- Extension: "
+
getName
()
+
"\n\n"
+
"-- DROP EXTENSION "
+
getName
()
+
";\n\n"
+
"CREATE EXTENSION "
+
getName
()
+
"\n\t"
+
"SCHEMA
"
+
DBUtils
.
getQuotedIdentifier
(
getSchema
())
+
"\n\t"
+
"SCHEMA
\""
+
getSchema
()
+
"\
"\n\t"
+
"VERSION "
+
version
;
}
...
...
@@ -151,4 +178,23 @@ public class PostgreExtension implements PostgreObject, PostgreScriptObject {
public
void
setObjectDefinitionText
(
String
sourceText
)
throws
DBException
{
}
public
static
class
SchemaListProvider
implements
IPropertyValueListProvider
<
PostgreExtension
>
{
@Override
public
boolean
allowCustomValue
()
{
return
false
;
}
@Override
public
Object
[]
getPossibleValues
(
PostgreExtension
object
)
{
try
{
Collection
<
PostgreSchema
>
schemas
=
object
.
getDatabase
().
getSchemas
(
new
VoidProgressMonitor
());
return
schemas
.
toArray
(
new
Object
[
schemas
.
size
()]);
}
catch
(
DBException
e
)
{
log
.
error
(
e
);
return
new
Object
[
0
];
}
}
}
}
plugins/org.jkiss.dbeaver.ext.postgresql/src/org/jkiss/dbeaver/ext/postgresql/model/PostgreSchema.java
浏览文件 @
7ee57d88
...
...
@@ -439,9 +439,30 @@ public class PostgreSchema implements DBSSchema, DBPNamedObject2, DBPSaveableObj
protected
JDBCStatement
prepareObjectsStatement
(
@NotNull
JDBCSession
session
,
@NotNull
PostgreSchema
owner
)
throws
SQLException
{
final
JDBCPreparedStatement
dbStat
=
session
.
prepareStatement
(
"SELECT e.oid,e.* FROM pg_catalog.pg_extension e "
+
"\nWHERE e.extnamespace=?"
+
"\nORDER BY e.oid"
"SELECT \n"
+
" e.oid,\n"
+
" a.rolname oname,\n"
+
" cfg.tbls,\n"
+
" e.* \n"
+
"FROM \n"
+
" pg_catalog.pg_extension e \n"
+
" join pg_authid a on a.oid = e.extowner\n"
+
" join pg_namespace n on n.oid =e.extnamespace\n"
+
" left join (\n"
+
" select\n"
+
" ARRAY_AGG(ns.nspname || '.' || cls.relname) tbls, oid_ext\n"
+
" from\n"
+
" (\n"
+
" select\n"
+
" unnest(e1.extconfig) oid , e1.oid oid_ext\n"
+
" from\n"
+
" pg_catalog.pg_extension e1 ) c \n"
+
" join pg_class cls on cls.oid = c.oid \n"
+
" join pg_namespace ns on ns.oid = cls.relnamespace\n"
+
" group by oid_ext \n"
+
" ) cfg on cfg.oid_ext = e.oid\n"
+
"\nWHERE e.extnamespace=?\n"
+
"ORDER BY e.oid"
);
dbStat
.
setLong
(
1
,
PostgreSchema
.
this
.
getObjectId
());
return
dbStat
;
...
...
@@ -450,7 +471,8 @@ public class PostgreSchema implements DBSSchema, DBPNamedObject2, DBPSaveableObj
@Override
protected
PostgreExtension
fetchObject
(
@NotNull
JDBCSession
session
,
@NotNull
PostgreSchema
owner
,
@NotNull
JDBCResultSet
dbResult
)
throws
SQLException
,
DBException
{
return
new
PostgreExtension
(
owner
,
dbResult
);
//return new PostgreExtension(owner, dbResult);
return
null
;
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录