diff --git a/README.md b/README.md index 056983316a71411232046157cf62fb9950267718..0dc5bc1960db3d8cdaf3acd35a5ced7600281f04 100644 --- a/README.md +++ b/README.md @@ -1,28 +1,4 @@ -# Data Studio开源文档 - -# 1. 法律声明 - -**版权所有 © 2022 openGauss 社区。** - -您对“本文档”的复制、使用、修改及分发受知识共享(Creative Commons)署名—相同方式共享4.0国际公共许可协议(以下简称“CC BY-SA 4.0”)的约束。为了方便用户理解,您可以通过访问https://creativecommons.org/licenses/by-sa/4.0/了解CC BY-SA 4.0的概要(但不是替代)。CC BY-SA 4.0的完整协议内容您可以访问如下网址获取:https://creativecommons.org/licenses/by-sa/4.0/legalcode。 - -**商标声明** - -openGauss Data Studio为华为技术有限公司的商标。本文档提及的其他所有商标或注册商标,由各自的所有人拥有。 - -**免责声明** - -本文档仅作为使用指导,除非适用法强制规定或者双方有明确书面约定, 华为技术有限公司对本文档中的所有陈述、信息和建议不做任何明示或默示的声明或保证,包括但不限于不侵权,时效性或满足特定目的的担保。 - -# 2. 发行说明 - -本文档是openGauss Data Studio 3.0.0版本的发行说明。 - -## 用户须知 - -openGauss是一款极致性能、安全、可靠的关系型(OLTP)开源数据库。openGauss Data Studio为openGauss社区发布的唯一官方客户端工具。采用协议“木兰宽松许可证”(Mulan PSL V2),用户可以自由复制、使用、修改、分发,不论修改与否。 - -openGauss Data Studo版本号采用点分位命名规则(X.Y.Z)模式,其中X表示架构变更版本,Y表示每年发布版本,Z表示补丁版本。正常每年会发布一个Y版本,重大架构或特性变更,发布一个新的X版本。openGauss Data Studio生命周期初步规划为3年。 +# Data Studio介绍 ## 版本介绍 @@ -77,594 +53,59 @@ openGauss Data Studo版本号采用点分位命名规则(X.Y.Z)模式,其 ## 版本使用注意事项 - openGauss Data Studio为openGauss数据库的唯一官方客户端工具,其内置openGauss的JDBC驱动,与openGauss数据库配套使用,不能作为其他数据库的客户端工具 -- openGauss Data Studio为一个Java应用,在使用时需确保配置Java 8运行环境 - -## 已知问题 - -本版本是openGauss Data Studio第一个发布版本,无已知问题。 - -## CVE漏洞 - -本版本是openGauss Data Studio第一个发布版本,没有CVE披露漏洞。 - -## 源代码(待完善) - -openGauss Data Studio代码仓: - -## 参与贡献 - -**参与贡献** - -作为openGauss用户,你可以通过多种方式协助openGauss社区。参与社区贡献的方法请参见[社区贡献](https://opengauss.org/zh/contribution.html),这里简单列出部分方式供参考。 - -**特别兴趣小组** - -openGauss将拥有共同兴趣的人们聚在一起,组成了不同的特别兴趣小组(SIG)。当前已有的SIG请参见[SIG列表](https://opengauss.org/zh/contribution.html)。 - -我们欢迎并鼓励你加入已有的SIG或创建新的SIG,创建方法请参见[SIG管理指南](https://opengauss.org/zh/contribution.html)。 - -**邮件列表和任务** - -欢迎你积极地帮助用户解决在[邮件列表](https://opengauss.org/zh/community/mails.html)和issue任务(包括[代码仓任务](https://gitee.com/organizations/opengauss/issues)) 中提出的问题。另外,我们也欢迎你提出问题。这些都将帮助openGauss社区更好地发展。 - -**文档** - -你不仅可以通过提交代码参与社区贡献,我们也欢迎你反馈遇到的问题、困难,或者对文档易用性、完整性的改进建议等。例如获取软件或文档过程中的问题,使用系统过程中的难点。欢迎关注并改进openGauss社区的文档模块。 - -**IRC** - -openGauss也在IRC开辟了频道,作为提供社区支持和交互的额外渠道。详情请参见[openGauss IRC](https://opengauss.org/zh/community/onlineCommunication.html)。 +- openGauss Data Studio为一个Java应用,在使用时需确保配置Java 11+运行环境 -## 致谢 +# 源码编译指导 -我们忠心地感谢参与和协助openGauss Data Studio项目的所有成员。是你们的辛勤付出使得版本顺利发布,也为openGauss更好地发展提供可能。 +通过源码构建Data Studio二进制包的具体步骤 -# 3. 产品描述 +- ## 前置条件 -本文档对openGauss Data Studio工具进行了详细描述,包括产品定位、系统架构分析、应用场景、运行环境、基本功能和特性等信息。 - -## 产品定位 - -openGauss Data Studio是openGauss社区发布的唯一官方客户端工具,支持用户通过图形化界面管理openGauss数据库中的对象,提升用户使用体验,并包含信创测试需要的部分功能。 - -## 系统架构 - -Data Studio是一个图形化的客户端工具,它通过JDBC驱动与openGauss数据库连接,采用C/S(Client/Server,即客户端服务器端)架构进行通信。 - -## 应用场景 - -- 直观的GUI让用户简单地管理openGauss数据库 - -## 运行环境 - -支持Windows平台,在使用时需确保配置Java 8运行环境 - -## 基本功能和特性 - -openGauss Data Studio作为强大的数据库管理工具,主要支持如下基本功能: - -- 管理/创建数据库对象 - - 支持管理/创建数据库、模式、函数、存储过程、表、列、索引、约束、视图、外表、序列、同义词、触发器、表空间、用户/角色等多种数据库对象 - -- 执行SQL语句或者SQL脚本 - - 支持执行SQL语句或SQL脚本 - -- 创建、执行、调试函数/存储过程 - - 支持创建、执行、调试函数/存储过程,在调试过程中,可显示堆栈、变量信息,支持断点的增、删、使能、禁用等操作 - -- 表数据增、删、改、查 - - 支持可视化操作表数据的增、删、改、查 - -- 导入/导出表数据 - - 支持表数据的导入和导出,支持的文件格式包括excel、csv、txt及二进制文件 - -- 导入/导出连接配置文件 - - 支持连接配置文件的导入和导出 - -- 显示/导出DDL - - 支持显示/导出表、函数/存储过程、视图、序列、同义词等多种数据库对象的DDL - -- SQL助手、格式化、执行历史记录 - - 提供SQL助手、编辑器智能SQL提示、格式化、历史SQL记录等功能 - -- 安全管理 - - 支持SSL安全网络连接、用户权限管理、密码管理等功能,保证数据库在管理层、应用层、系统层和网络层的安全性 - -# 4. 技术白皮书 - -## 产品定位 - -openGauss Data Studio是openGauss社区发布的唯一官方客户端工具,支持用户通过图形化界面管理openGauss数据库中的对象,提升用户使用体验,并包含信创测试需要的部分功能。 - -## 应用场景 - -- 直观的GUI让用户简单地管理openGauss数据库 - -## 技术特点 - -openGauss Data Studio采用Eclipse RCP(Rich Client Platform,即富客户平台)框架进行开发。RCP是eclipse进化的产物,是Eclipse组织向用户提供的强大的开放性开发平台。用户基于RCP框架能够创建自己的基于Eclipse的应用程序。因此openGauss Data Studio的界面与Eclipse非常相近。 - -## 软件架构 - -Data Studio是一个图形化的客户端工具,它通过JDBC驱动与openGauss数据库连接,采用C/S(Client/Server,即客户端服务器端)架构进行通信。 - -## 部署方案 - -- openGauss Data Studio支持部署在Windows平台, 其通过JDBC驱动与openGauss数据库连接。 -- openGauss支持单机部署和一主多备部署两种部署形态。Data Studio对openGauss的部署形态不做限制,但是由于openGauss备机只提供读服务,不能进行写操作,因此建议用Data Studio连接openGauss的主机。 -- 由于Data Studio本质是通过JDBC远程连接openGauss数据库,因此在数据库端需配置可远程访问:(1)配置postgresql.conf文件的listen_addresses参数;(2)配置pg_hba.conf文件的ip白名单。 -- 由于openGauss限制初始用户不能远程登录,因此在Data Studio中不能使用初始用户连接openGauss数据库。 -- Data Studio会根据Windows用户在其安装路径下创建UserData目录,用以存放用户数据,并保存用户个性化设置,因此可以用不同的Windows用户同时运行Data Studio工具,但正常运行的前提是需保证Windows用户对Data Studio目录具有所有权限。 - -## 软硬件配置要求 - -- Data Studio部署在Windows平台,需配置Java 8运行环境 -- openGauss数据库无强制要求,可部署在openEuler或者CentOS操作系统上,可正常使用即可 - -# 5. 特性描述 - -openGauss Data Studio作为强大的数据库管理工具,主要支持如下基本功能: - -- 管理/创建数据库对象 - - 支持管理/创建数据库、模式、函数、存储过程、表、列、索引、约束、视图、外表、序列、同义词、触发器、表空间、用户/角色等多种数据库对象 - -- 执行SQL语句或者SQL脚本 - - 支持执行SQL语句或SQL脚本 - -- 创建、执行、调试函数/存储过程 - - 支持创建、执行、调试函数/存储过程,在调试过程中,可显示堆栈、变量信息,支持断点的增、删、使能、禁用等操作 - -- 表数据增、删、改、查 - - 支持可视化操作表数据的增、删、改、查 - -- 导入/导出表数据 - - 支持表数据的导入和导出,支持的文件格式包括excel、csv、txt及二进制文件 - -- 导入/导出连接配置文件 - - 支持连接配置文件的导入和导出 - -- 显示/导出DDL - - 支持显示/导出表、函数/存储过程、视图、序列、同义词等多种数据库对象的DDL - -- SQL助手、格式化、执行历史记录 - - 提供SQL助手、编辑器智能SQL提示、格式化、历史SQL记录等功能 - -- 安全管理 - - 支持SSL安全网络连接、用户权限管理、密码管理等功能,保证数据库在管理层、应用层、系统层和网络层的安全性 - -# 6. 编译指导书(需更新依赖下载的地址) - -本文档介绍了通过源码构建Data Studio开发者环境的具体步骤,以帮助开发者快速构建Data Studio开发环境。 - -- ## 编译准备 - - 编译环境:eclipse RCP 2021-12版本 - - 前置条件:已安装jdk11和apache maven 3 + 1. 下载安装JDK11,并配置`JAVA_HOME`环境变量 + 2. 下载安装apache maven3.x,并配置`M2_HOME`环境变量 + 3. 通过`https://download2.gluonhq.com/openjfx/11.0.2/openjfx-11.0.2_windows-x64_bin-sdk.zip`下载javafx sdk依赖包,并配置`javafx_home`环境变量,值为${javafx-sdk-11.0.2} - ## 源码编译 - ### (1) 下载源码 - - 在码云上下载Data Studio的源码 - - ### (2) 下载依赖软件(需更新依赖下载地址) - - 在eclipse中下载项目依赖的软件 - - ``` - 菜单栏help -> Install New Software... - ``` - - ![image-20220119212810688](.\photo\image-20220119212810688.png) - - 在Work with对应的文本框中输入下列依赖所在的地址: - - ``` - http://mirrors.ustc.edu.cn/eclipse/nattable/releases/1.6.0/repository/ - - http://mirrors.ustc.edu.cn/eclipse/tools/gef/updates/releases/5.1.0_gef-master_5509/ - - http://mirrors.ustc.edu.cn/eclipse/efxclipse/updates-released/3.5.0/site/ - - http://mirrors.ustc.edu.cn/eclipse/releases/2019-06/201906191000/ - ``` - - ### (3) 导入Maven工程 - - ``` - 菜单栏File -> import... -> Maven -> Existing Maven Projects -> Next - ``` - - 选择Data Studio源码所在的根目录,并导入项目 - - 示例中源码根目录为D:\code\openGaussDataStudio\DataStudio-master - - ![image-20220122113134187](.\photo\image-20220122113134187.png) - - ### (4) 执行脚本,编译源码 - 通过命令行进入Data Studio源码src目录,并运行脚本文件 - ``` + ```shell cd ${Data_Studio_code}\code\datastudio\src .\copyExternalsToBuild.bat(windows) 或者 sh copyExternalsToBuild.sh(linux) mvn clean package -Dmaven.test.skip=true ``` - ${Data_Studio_code}表示源码根目录,示例中为D:\code\openGaussDataStudio\DataStudio-master - - ![image-20220120231819579](.\photo\image-20220120231819579.png) - - ![image-20220120232701958](.\photo\image-20220120232701958.png) - 生成的安装包位置为: - ``` + ```shell ${Data_Studio_code}\code\datastudio\build ``` - ![image-20220120233132405](.\photo\image-20220120233132405.png) - - 至此可编译出Data Studio的二进制包 - - ### (5) eclipse设置 - - ``` - 步骤1:Window -> Preferences -> (Search for api) -> select API Baseines - 设置Missing API baseline为ignore并点击Apply - ``` - - ![image-20220122113920300](.\photo\image-20220122113920300.png) - - ``` - 步骤2:Window -> Preferences -> (Search for error) -> select(Java -> Compiler -> Errors/Warnings) - 选择Select Deprecated and restrictedAPI并设置Forbidden reference(access rules)为ignore - ``` - - ![image-20220122114515808](.\photo\image-20220122114515808.png) - - ``` - 步骤3:Window -> Preferences -> Maven -> Errors/Warnings - 设置Plugin execution not covered by lifecycle configuration为ignore - ``` - - ![image-20220122114845303](.\photo\image-20220122114845303.png) - - eclipse设置后选择Project -> Clean...,对项目进行清理,并重新build - -### (6) 启动Data Studio应用 - -``` -在Data Studio源码src目录下,进入子目录com.huawei.mppdbide.repository,打开mppdbide.product文件(即对应的文件路径:${Data_Studio_code}\code\datastudio\src\com.huawei.mppdbide.repository\mppdbide.product),点击Launch an Eclipse application,即可启动Data Studio应用程序 -``` - -![image-20220122115533357](.\photo\image-20220122115533357.png) - -启动成功后,会弹出如下的Data Studio界面 - -![image-20220122143410964](.\photo\image-20220122143410964.png) - -若启动失败,可尝试添加必要的依赖 - -``` -Run -> Run Configurations -> Plug-ins -> Add Required Plug-ins -> Validate Plug-ins -``` - -![image-20220122144127110](.\photo\image-20220122144127110.png) - -弹出如下对话框,表示依赖安装成功 - -![image-20220122144222514](.\photo\image-20220122144222514.png) - -点击OK,并点击Run即可启动Data Studio界面。 - -至此,可通过源码构建Data Studio的开发环境,若需对源码进行调试,选择Debug模式即可。 - -# 7. 快速入门 - -Data Studio通过JDBC驱动与数据库远程连接,因此,在用Data Studio连接数据库前,需在数据库端配置可远程访问: - -(1)配置postgresql.conf文件的listen_addresses参数; - -(2)配置pg_hba.conf文件的ip白名单。 - -由于openGauss数据库限制初始用户不能远程登录,因此需创建用于远程连接的用户。 - -通过源代码或者安装包方式,启动Data Studio界面后,输入名称、主机、端口号、数据库、用户名、密码等信息,点击确定,即可远程连接数据库。 - -连接分为SSL连接和non-SSL连接两种,由于默认启用SSL连接,因此若选择non-SSL连接,则取消勾选启用SSL即可;若选择SSL连接,则需在SSL页签中配置相应的证书。 - -![image-20220122145707000](.\photo\image-20220122145707000.png) - -连接成功后,即可显示如下所示的界面,下面简述Data Studio的界面布局。 - -![image-20220122150738880](.\photo\image-20220122150738880.png) - -- 标记1所示为菜单栏 -- 标记2所示为工具栏 -- 标记3所示对对象浏览器窗口,显示数据库对象信息,包括数据库、模式、表空间 、用户/角色等信息 -- 标记4所示为编辑器,用于输入SQL语句 -- 标记5所示为视图窗口,可输出相应的日志信息,或显示查询结果等 -- 标记6所示为SQL助手,可查询相应的SQL语法,并可与编辑器中输入的SQL进行联动提示 - -Data Studio作为一个强大的客户端工具,其可方便地管理数据库对象。用户界面简洁明了,所见即所得,相信用户可以快速熟练地使用Data Studio管理openGauss数据库对象,更多功能和使用可参考用户手册。 - -提示:用户手册在安装包路径下的docs目录中,支持中英文两种语言。点击`帮助 -> 用户手册`或者按下快捷键F1也可快速打开用户手册。 - -# 8. 安装指南 - -Data Studio二进制包发布在openGauss官网上,详见[下载链接](https://opengauss.org/zh/download.html) - -Data Studio工具免安装,下载后解压,双击Data Studio.exe即可用。 - -Data Studio发布包结构如下图所示 - -![image-20220122154329176](.\photo\image-20220122154329176.png) - -各文件(夹)说明如下: - -| 文件(夹)名 | 说明 | -| ------------------------------------------------- | ------------------------------------------------------------ | -| configuration | 包含应用启动信息和所需Eclipse插件路径信息。 | -| db_assistant | 包含“SQL助手”功能相关的文件。 | -| docs | 包含中英文用户手册,其详细介绍了如何使用Data Studio工具。 | -| features | 包含Eclipse(如富客户端协议GUI)和Data Studio特性。 | -| p2 | p2包含的文件用于提供和管理基于Eclipse和Equinox的应用。 | -| plugins | 包含必须的Eclipse和Data Studio插件。 | -| tools | 包含Data Studio的依赖工具。 | -| UserData | 包含每个使用Data Studio的OS用户各自的文件夹。
每个用户目录下
Autosave:包含自动保存的查询和函数/过程信息。
config:包含Data Studio的内部文件夹。
Logs:包含日志文件,保存Data Studio相关的日志信息。
Preferences:包含Preferences.prefs文件,内容为自定义的首选项。
Profile:包含connection.properties文件、SQL执行历史、Profiles.txt文件,用于管理Data Studio中的连接信息。 | -| artifacts.xml | 包含产品编译版本信息。 | -| changelog.txt | 包含当前版本的详细变更信息。 | -| Data Studio 2.1.2 Open Source Software Notice.doc | 包含所用开源软件及其许可证信息。 | -| Data Studio.exe | 支持连接服务器并执行各种操作,如管理数据库对象、编辑或执行PL/SQL程序。 | -| Data Studio.ini | 包含Data Studio工具运行时的配置信息。 | -| Data Studioc.exe | 支持通过命令行启动Data Studio。 | -| DataStudio.bat | 支持在Windows操作系统中连接数据库,执行各种操作。 | -| openGauss Data Studio授权协议.docx | 本授权协议(“本协议”)适用于openGauss社区 (“本社区”)研发的openGauss Data Studio(“本软件”)。 | -| readme.txt | 包含当前版本的功能和修复的问题。 | -| version.json | 包含元数据信息文件。 | - -# 9. 开发者指南 - -Data Studio采用eclipse RCP框架进行开发,代码各个模块封装为eclipse-plugin,各模块之间的主要功能如下图所示,其中带有test的项目是测试工程。 - -![image-20220209202912322](.\photo\image-20220209202912322.png) - -view工程是Data Studio的UI界面显示工程,Application.e4xmi文件是Data Studio的UI设计文件,其描述了Data Studio的UI布局,包括菜单栏、工具栏、对象浏览器、状态栏等UI信息。 - -Application.e4xmi与Data Studio界面的对应关系如下图所示,详细描述如下表所示。 - -![image-20220209204638298](.\photo\image-20220209204638298.png) - -| Application | UI界面 | -| ---------------------------- | ------------------------------------------------------------ | -| 标记1处的Main Menu | 标记2处的菜单栏,包含文件、编辑、运行、调试、设置、帮助这六个菜单 | -| 标记3处的Part Stack | 标记4处的对象浏览器,树型结构,显示数据库对象,包括模式、表空间、用户/角色等 | -| 标记5处的Part Sash Container | 标记6处的编辑器界面 | -| 标记7处的Part | 标记8处的SQL助手 | -| 标记9处的Window Trim-Top | 标记10处的上面的工具栏 | -| 标记11处的Window Trim-Bottom | 标记12处的状态栏 | - -Application.e4xmi文件中涉及的UI组件描述如下: - -| UI组件 | 描述 | -| ------------------- | ------------------------------------------------------------ | -| Trimmed Window | UI主窗口,至少需要一个 | -| Part Sash Container | Part的窗扇容器,可以垂直或水平显示所有的Part | -| Part Stack | Part的栈容器,同一时刻有且仅有栈顶Part会显示 | -| Part | 允许用户导航和修改数据的用户界面组件,可以存放UI控件(如View、Comppsite、下拉菜单、工具栏、关联菜单等) | - -view工程中plugin.xml文件描述了UI扩展点,其中使用了初始化对象和对象浏览器右键菜单两种扩展。 - -- 初始化扩展: - - ![image-20220209211006563](.\photo\image-20220209211006563.png) - - 从plugin.xml配置文件中,我们可以看到其绑定了lifeCycleURI,并且处理类为LifeCycleManager,通过源代码可以看到,@PostContextCreate后其注册了监听器用于监听应用程序启动后的处理函数AppStartupCompleteEventHandler,此处即可以看到DataStudio的启动过程,包括处理启动参数、读取默认配置、SQL终端、SQL历史记录等功能。 - -- 对象浏览器右键菜单扩展 - - ![image-20220209211249261](.\photo\image-20220209211249261.png) - - 该示例定义了数据库对象(Database)右键菜单中含有断开连接(disconnect) - -RCP框架提供了一些可见的组件,例如Menu(菜单)、Toorbar(工具栏)、Part、Windows等,还包括一些不可见的组件,例如Handler(处理程序)、Command(命令)和key binding(快捷键绑定)。 - -Command和Handler通常是联合使用的,当某一事件触发命令Command时,对应的处理程序Handler自动被调用,Handler通常与响应类Class URI关联。通过@CanExecute注解的方法canExecute()判断是否可以执行响应类,如果为true,则执行响应类中@Execute注解的方法execute()。 - -下图中示意说明命令Command-New Node Connection与处理程序New Node Connection关联,并与响应类NewDbConnection相对应。 - -![image-20220210112850510](.\photo\image-20220210112850510.png) - -![image-20220210113053115](.\photo\image-20220210113053115.png) - -Data Studio中,当点击菜单栏、工具栏、或者右键菜单栏时,该点击事件即触发相应的Command,并调用对应的应用程序Handler,从而执行相应的响应类。通过@CanExecute注解的方法canExecute()判断是否可以执行响应类,如果为true,则执行响应类中@Execute注解的方法execute()。上述的调用关系如下图所示。 - -![image-20220210173745203](.\photo\image-20220210173745203.png) - -- ## 如何增加一个菜单栏 - - 以菜单栏`文件->新建连接`为例: - - ![image-20220210114650368](.\photo\image-20220210114650368.png) - - ``` - 在Main Menu -> Menu 增加Handled Menu Item,其与Command-New Node Connection相关联 - ``` - - 因此,当在菜单栏点击`文件->新建连接`时,会触发命令Command-New Node Connection,调用对应的Handler-New Node Connection,执行相应类NewDbConnection,调用DBConnectionDialog类的open()方法,将弹出如下的新建连接对话框 - - ![image-20220210142108846](.\photo\image-20220210142108846.png) - - Handled Menu Item中的Icon URI对应图标的文件位置,Label(标签)、Mnemonics(助记符)、Tooltip(工具提示)对应的文字记录在文件bundle_zh_CN.properties(中文)或者bundle.properties(英文)。 - - bundle_zh_CN.properties中的内容: - - ![image-20220210144531937](.\photo\image-20220210144531937.png) - - 图中的编码为中文的unicode编码 - - bundle.properties中的内容: - - ![image-20220210143540300](.\photo\image-20220210143540300.png) - - ![image-20220210151331971](.\photo\image-20220210151331971.png) - - Icon URI与上图标记1对应;label的内容与上图标记2对应;tooltip的内容与上图标记3对应;mnemonics的内容N表示助记符为N,当点击文件菜单时,直接按快捷键N即可弹出新建连接对话框。 - - 同时Ctrl+N快捷键也可弹出新建连接对话框,其在Binding Tables进行设置 - - ![image-20220210151727674](.\photo\image-20220210151727674.png) - -- ## 如何增加一个工具栏 - - 与增加菜单栏类似,仍以新建连接为例,介绍如何增加一个工具栏 - - ![image-20220210152302853](.\photo\image-20220210152302853.png) - - ``` - 在TrimBars -> Window Trim -> Toolbar 增加Handled Tool Item,其与Command-New Node Connection相关联 - ``` - - 与菜单栏类似,因此,当在工具栏点击新建连接(下图标记1所示)时,会触发命令Command-New Node Connection,调用对应的Handler-New Node Connection,执行相应类NewDbConnection,调用DBConnectionDialog类的open()方法,将弹出新建连接对话框 - - ![image-20220210152616886](.\photo\image-20220210152616886.png) - - 同Handled Menu Item,Handled Tool Item中的Icon URI对应图标的文件位置,Label(标签)、Tooltip(工具提示,与上图标记2对应)对应的文字记录在文件bundle_zh_CN.properties(中文)或者bundle.properties(英文)。 - -- ## 如何增加一个右键菜单 - - 在对象浏览器中,会以树型结构显示数据库对象,包括数据库、模式、名空间、函数/过程、普通表、视图、外表、序列、同义词、触发器、表空间、用户/角色等数据库对象,如下图所示 - - ![image-20220210154034751](.\photo\image-20220210154034751.png) - - 针对每个数据库对象,右键菜单会有一些对应的操作,以具体函数为例,右键菜单如下如所示 - - ![image-20220210154209396](.\photo\image-20220210154209396.png) - - 下面以右键菜单启动调试为例,讲述如何增加一个右键菜单 - - (1)增加启动调试命令对应的Command、Handler、相应类Class URI - - Command - - ![image-20220210154738978](.\photo\image-20220210154738978.png) - - Handler - - ![image-20220210154846332](.\photo\image-20220210154846332.png) - - Class URI - - StartDebugHandler - - (2)增加Handled Menu Item - - ``` - 在Application -> Snippets -> Part -> Menus -> Popup Menu 增加Handled Menu Item,其与Command-Start Debugging相关联 - ``` - - ![image-20220210155249222](.\photo\image-20220210155249222.png) - - 启动调试对应的Handled Menu Item 对应的Core Expression为 - - ``` - com.huawei.objectbrowser.popupmenu.startdebug.id.expression - ``` - - (3)在plugin.xml文件中配置与DebugObjetcs即函数/存储过程对象相关联 - - ![image-20220210155924265](.\photo\image-20220210155924265.png) - - 在plugin.xml文件中,通过Handled Menu Item对应的Core Expression与DebugObjects关联起来,因此,对于函数/存储过程对象,右键菜单中含有启动调试命令。 - - (4)在bundle.properties文件中增加菜单对应的文字说明 - - 与菜单栏中的Handled Menu Item一样,Handled Menu Item中的Icon URI对应图标的文件位置,Label(标签)、Mnemonics(助记符)、Tooltip(工具提示)对应的文字记录在文件bundle_zh_CN.properties(中文)或者bundle.properties(英文)。 - - bundle_zh_CN.properties - - ![image-20220210161042596](.\photo\image-20220210161042596.png) - - bundle.properties - - ![image-20220210161103541](.\photo\image-20220210161103541.png) - - label的内容与函数/存储过程中的右键菜单图标记1对应;tooltip的内容与上图标记3对应 - - 我们注意到启动调试后有快键键F11表示,如图中标记2所示,该快键键定义在keybinding.xml文件中 - - ![image-20220210171827335](.\photo\image-20220210171827335.png) - - 这样通过commandid和defaultkey可将F11快捷键与启动调试命令绑定在一起。 - -至此,介绍了如何在Data Studio源码中增加菜单栏、工具栏及右键菜单。 +# 参与贡献 -Data Studio基于RCP框架进行开发,UI控件的实现逻辑是类似的,开发者可以参考上面所示的菜单栏、工具栏、右键菜单的实现过程,添加更多的UI,从而丰富Data Studio的功能。 - -# 10. FAQ - -本文档是openGauss Data Studio常见问题指南。 - -- Q1: Forbid remote connection with initial user. - - ![image-20220122162542273](.\photo\image-20220122162542273.png) - - 回答:Data Studio通过JDBC驱动与数据库远程连接,由于openGauss数据库限制初始用户不能远程登录,因此需创建新的用户,用于远程连接。 - -- Q2: Invalid username/passwor, login denied. - - ![image-20220122163107257](.\photo\image-20220122163107257.png) - - 回答:用户名或者密码错误,请检查用户名或者密码是否正确,同时请注意pg_hba.conf文件中配置的认证方式是否正确。 - -- Q3: no pg_hba.conf entry for host “xx.xx.xx.xx” +**参与贡献** - ![image-20220122163645768](.\photo\image-20220122163645768.png) +作为openGauss用户,你可以通过多种方式协助openGauss社区。参与社区贡献的方法请参见[社区贡献](https://opengauss.org/zh/contribution.html),这里简单列出部分方式供参考。 - 回答:请配置pg_hba.conf文件的ip白名单,将客户端Data Studio所在的机器ip加入白名单中。 +**特别兴趣小组** -- Q4: Connection to xx.xx.xx.xx:xx refused. +openGauss将拥有共同兴趣的人们聚在一起,组成了不同的特别兴趣小组(SIG)。当前已有的SIG请参见[SIG列表](https://opengauss.org/zh/contribution.html)。 - ![image-20220122164053976](.\photo\image-20220122164053976.png) +我们欢迎并鼓励你加入已有的SIG或创建新的SIG,创建方法请参见[SIG管理指南](https://opengauss.org/zh/contribution.html)。 - 回答:请确保数据库是否启动,ip和端口号是否正确,postgresql.conf文件的listen_addresses参数是否配置正确,该参数应配置为*或者数据库所在机器的具体ip。 +**邮件列表和任务** -- Q5: 启动时,发生未知内部错误.请联系Data Studio技术支持团队了解日志详情。 +欢迎你积极地帮助用户解决在[邮件列表](https://opengauss.org/zh/community/mails.html)和issue任务(包括[代码仓任务](https://gitee.com/organizations/opengauss/issues)) 中提出的问题。另外,我们也欢迎你提出问题。这些都将帮助openGauss社区更好地发展。 - ![image-20220122170627400](.\photo\image-20220122170627400.png) +**文档** - 回答:请检查本地环境是否为java 8,并确定是否是使用openGauss社区的Data Studio工具连接openGauss数据库。 +你不仅可以通过提交代码参与社区贡献,我们也欢迎你反馈遇到的问题、困难,或者对文档易用性、完整性的改进建议等。例如获取软件或文档过程中的问题,使用系统过程中的难点。欢迎关注并改进openGauss社区的文档模块。 -# 11. 术语表 +**IRC** -| 术语 | 全称 | 解释 | -| ---- | -------------------------- | -------------- | -| C/S | Client/Server | 客户端服务器端 | -| JDBC | Java Database Connectivity | Java数据库连接 | -| GUI | Graphical User Interface | 图形用户界面 | -| RCP | Rich Client Platform | 富客户平台 | +openGauss也在IRC开辟了频道,作为提供社区支持和交互的额外渠道。详情请参见[openGauss IRC](https://opengauss.org/zh/community/onlineCommunication.html)。 -# 12. 开源的资料文档应附有对应的文档许可证 +# 开源的资料文档应附有对应的文档许可证 本文档遵循[知识共享许可协议CC 4.0](https://creativecommons.org/licenses/by/4.0/) (http://creativecommons.org/Licenses/by/4.0/)。 diff --git a/code/datastudio/src/copyExternalsToBuild.bat b/code/datastudio/src/copyExternalsToBuild.bat index 6bcb3511455f0a3e636a6a487456a73ca45e503c..b6b8bc23cecdfb242edf6fd0a83753a963c352c8 100644 --- a/code/datastudio/src/copyExternalsToBuild.bat +++ b/code/datastudio/src/copyExternalsToBuild.bat @@ -49,7 +49,6 @@ xcopy %SOURCE%\3rd_src\target\dependency\javafx-base-18-ea+2-win.jar %DEST%\org. xcopy %SOURCE%\3rd_src\target\dependency\javafx-controls-18-ea+2-win.jar %DEST%\org.opengauss.mppdbide.view\. /Y /S /E xcopy %SOURCE%\3rd_src\target\dependency\javafx-graphics-18-ea+2-win.jar %DEST%\org.opengauss.mppdbide.view\. /Y /S /E xcopy %SOURCE%\platform\Gauss200\gs_jdbc\gsjdbc4.jar %DEST%\org.opengauss.dbdriver.jdbc.gauss\. /Y /S /E -xcopy %SOURCE%\platform\Gauss200\gs_jdbc\javafx-swt.jar %DEST%\org.opengauss.mppdbide.view\. /Y /S /E rmdir /Q /S %TEST%\org.opengauss.mppdbide.adapter.test.fragment\lib mkdir %TEST%\org.opengauss.mppdbide.adapter.test.fragment\lib diff --git a/code/datastudio/src/copyExternalsToBuild.sh b/code/datastudio/src/copyExternalsToBuild.sh index 842f7d5e7b3e53a7e9f91f4939447cf333a92f68..9c2d20c883895edcb0e20838729024cbc16d52b1 100755 --- a/code/datastudio/src/copyExternalsToBuild.sh +++ b/code/datastudio/src/copyExternalsToBuild.sh @@ -49,7 +49,6 @@ cp $SOURCE/3rd_src/target/dependency/guava-30.1.1-jre.jar $DEST/org.opengauss.mp cp $SOURCE/3rd_src/target/dependency/javafx-base-18-ea+2-win.jar $DEST/org.opengauss.mppdbide.view/. cp $SOURCE/3rd_src/target/dependency/javafx-controls-18-ea+2-win.jar $DEST/org.opengauss.mppdbide.view/. cp $SOURCE/3rd_src/target/dependency/javafx-graphics-18-ea+2-win.jar $DEST/org.opengauss.mppdbide.view/. -cp $SOURCE/platform/Gauss200/gs_jdbc/javafx-swt.jar $DEST/org.opengauss.mppdbide.view/. cp $SOURCE/platform/Gauss200/gs_jdbc/gsjdbc4.jar $DEST/org.opengauss.dbdriver.jdbc.gauss/. rm -rf $TEST/org.opengauss.mppdbide.adapter.test.fragment/lib diff --git a/code/datastudio/src/org.opengauss.mppdbide.view/src/org/opengauss/mppdbide/view/ui/table/CreateIndexDialog.java b/code/datastudio/src/org.opengauss.mppdbide.view/src/org/opengauss/mppdbide/view/ui/table/CreateIndexDialog.java index c1d4b22367de993a66ac0eef18b12e9dd1960ead..7c04c9f93d656a21372dbace4e27986e403e8e79 100644 --- a/code/datastudio/src/org.opengauss.mppdbide.view/src/org/opengauss/mppdbide/view/ui/table/CreateIndexDialog.java +++ b/code/datastudio/src/org.opengauss.mppdbide.view/src/org/opengauss/mppdbide/view/ui/table/CreateIndexDialog.java @@ -138,7 +138,7 @@ public class CreateIndexDialog extends Dialog implements IDialogWorkerInteractio protected void configureShell(Shell newShell) { super.configureShell(newShell); newShell.setText(MessageConfigLoader.getProperty(IMessagesConstants.CREATE_INDEX)); - newShell.setSize(630, 600); + newShell.setSize(630, 610); } /** diff --git a/code/datastudio/src/pom.xml b/code/datastudio/src/pom.xml index fd8049f29f68c41dc679d0897e2891e94010f3bd..f5b0bd3674cd0066e983926a937d6f4f78cf5dc8 100644 --- a/code/datastudio/src/pom.xml +++ b/code/datastudio/src/pom.xml @@ -27,7 +27,7 @@ 2.6.0 11 - https://downloads.efxclipse.bestsolution.at/p2-repos/openjfx-17.0.1/ + ${env.javafx_home} 11 @@ -38,7 +38,7 @@ http://${url.ip}${url.port}/eclipse/tools/gef/updates/releases/5.1.0_gef-master_5509/ http://${url.ip}${url.port}/eclipse/efxclipse/updates-released/3.5.0/site/ http://${url.ip}${url.port}/eclipse/releases/2021-12/202112081000/ - ${openjfx.home} + https://downloads.efxclipse.bestsolution.at/p2-repos/openjfx-17.0.1/ @@ -173,7 +173,7 @@ com.oracle javafx 8.0.0-SNAPSHOT - ../../../platform/Gauss200/gs_jdbc/javafx-swt.jar + ${javafx.home}/lib/javafx-swt.jar system diff --git a/photo/image-20220119212810688.png b/photo/image-20220119212810688.png deleted file mode 100644 index a2d46559ed4661e2bb6c1d2ba10acf25ec2047f0..0000000000000000000000000000000000000000 Binary files a/photo/image-20220119212810688.png and /dev/null differ diff --git a/photo/image-20220120231819579.png b/photo/image-20220120231819579.png deleted file mode 100644 index 747451508a6bd7cbe42ed5cd8f36035a3b61a2fc..0000000000000000000000000000000000000000 Binary files a/photo/image-20220120231819579.png and /dev/null differ diff --git a/photo/image-20220120232701958.png b/photo/image-20220120232701958.png deleted file mode 100644 index 156ea2364d7a41442bd6cbf2a6fbb071cc20ef9a..0000000000000000000000000000000000000000 Binary files a/photo/image-20220120232701958.png and /dev/null differ diff --git a/photo/image-20220120233132405.png b/photo/image-20220120233132405.png deleted file mode 100644 index e601654cf1d6beb3c33147c81532a2178250ca6d..0000000000000000000000000000000000000000 Binary files a/photo/image-20220120233132405.png and /dev/null differ diff --git a/photo/image-20220122113134187.png b/photo/image-20220122113134187.png deleted file mode 100644 index 61440806d4439353c17decd5cf2204b4d107e8c4..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122113134187.png and /dev/null differ diff --git a/photo/image-20220122113920300.png b/photo/image-20220122113920300.png deleted file mode 100644 index df2ccb83ff88984998c69d10829ec3c15af95e5e..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122113920300.png and /dev/null differ diff --git a/photo/image-20220122114515808.png b/photo/image-20220122114515808.png deleted file mode 100644 index 57e65459b6a313d54b7f4f71db952a48c585fc89..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122114515808.png and /dev/null differ diff --git a/photo/image-20220122114845303.png b/photo/image-20220122114845303.png deleted file mode 100644 index f435941ab332440bbdffab050db49caaf89cef5f..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122114845303.png and /dev/null differ diff --git a/photo/image-20220122115533357.png b/photo/image-20220122115533357.png deleted file mode 100644 index f72b25c445482118980e59beb64f0d67630fadbd..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122115533357.png and /dev/null differ diff --git a/photo/image-20220122143410964.png b/photo/image-20220122143410964.png deleted file mode 100644 index 8bab62849071be19b01c69484b019364114b56af..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122143410964.png and /dev/null differ diff --git a/photo/image-20220122144127110.png b/photo/image-20220122144127110.png deleted file mode 100644 index a5d5f2875ec2538f9e4f0c9c95e3a801192fb583..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122144127110.png and /dev/null differ diff --git a/photo/image-20220122144222514.png b/photo/image-20220122144222514.png deleted file mode 100644 index 146668fa15d336dfe9b64044b9ad0ebbd6b7786b..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122144222514.png and /dev/null differ diff --git a/photo/image-20220122145707000.png b/photo/image-20220122145707000.png deleted file mode 100644 index 25cf243cbbe09f6aca8275278673943e544b837d..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122145707000.png and /dev/null differ diff --git a/photo/image-20220122150738880.png b/photo/image-20220122150738880.png deleted file mode 100644 index a3bdb4503d91822ab72c6e39915ca7356832ead0..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122150738880.png and /dev/null differ diff --git a/photo/image-20220122154329176.png b/photo/image-20220122154329176.png deleted file mode 100644 index 1a0a8cb20b655dea9786be4b9e7f25d0e0159c12..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122154329176.png and /dev/null differ diff --git a/photo/image-20220122162542273.png b/photo/image-20220122162542273.png deleted file mode 100644 index 89e686abe5bc46848451b8d38b8bbe517b36c8d3..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122162542273.png and /dev/null differ diff --git a/photo/image-20220122163107257.png b/photo/image-20220122163107257.png deleted file mode 100644 index 8f12e14d0b21a3c3d764442256955201e4796281..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122163107257.png and /dev/null differ diff --git a/photo/image-20220122163645768.png b/photo/image-20220122163645768.png deleted file mode 100644 index eb04b0647587feb3bbafc78ca6a66323ecc5a0f6..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122163645768.png and /dev/null differ diff --git a/photo/image-20220122164053976.png b/photo/image-20220122164053976.png deleted file mode 100644 index 189b80850109f37fbf0fa21456bd7f813392e5dc..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122164053976.png and /dev/null differ diff --git a/photo/image-20220122170627400.png b/photo/image-20220122170627400.png deleted file mode 100644 index f0dc2c40c4f712969233c932061767926009d5a4..0000000000000000000000000000000000000000 Binary files a/photo/image-20220122170627400.png and /dev/null differ diff --git a/photo/image-20220209202912322.png b/photo/image-20220209202912322.png deleted file mode 100644 index f59fd007b0f592dc71f8d5eaaa104f742c2265b7..0000000000000000000000000000000000000000 Binary files a/photo/image-20220209202912322.png and /dev/null differ diff --git a/photo/image-20220209204638298.png b/photo/image-20220209204638298.png deleted file mode 100644 index 0def46308cb6cd133d1414d2b8ec4212ae8b671b..0000000000000000000000000000000000000000 Binary files a/photo/image-20220209204638298.png and /dev/null differ diff --git a/photo/image-20220209211006563.png b/photo/image-20220209211006563.png deleted file mode 100644 index 152fb84c7a422ed36d96338b849efd659835096a..0000000000000000000000000000000000000000 Binary files a/photo/image-20220209211006563.png and /dev/null differ diff --git a/photo/image-20220209211249261.png b/photo/image-20220209211249261.png deleted file mode 100644 index 417fb0ffb23d748000088af688c5bf93344862bb..0000000000000000000000000000000000000000 Binary files a/photo/image-20220209211249261.png and /dev/null differ diff --git a/photo/image-20220210112850510.png b/photo/image-20220210112850510.png deleted file mode 100644 index 5a78f992b6df0743748d945aa6389ecbf76dfc55..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210112850510.png and /dev/null differ diff --git a/photo/image-20220210113053115.png b/photo/image-20220210113053115.png deleted file mode 100644 index 3ad904ba6e714c50346e9f6a0413b289d8ae1c56..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210113053115.png and /dev/null differ diff --git a/photo/image-20220210114650368.png b/photo/image-20220210114650368.png deleted file mode 100644 index ac698fd96338defb93730d05540ad1aa26afd66e..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210114650368.png and /dev/null differ diff --git a/photo/image-20220210142108846.png b/photo/image-20220210142108846.png deleted file mode 100644 index 2da37c6d17c977f44dcc91a75ae918075e2f7bf2..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210142108846.png and /dev/null differ diff --git a/photo/image-20220210143540300.png b/photo/image-20220210143540300.png deleted file mode 100644 index 5925f3b8a9525a6b6e96d8fcd9fc04ca27ef77a9..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210143540300.png and /dev/null differ diff --git a/photo/image-20220210144531937.png b/photo/image-20220210144531937.png deleted file mode 100644 index c5bb31db57c565ad7bc9b277782d82062706447d..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210144531937.png and /dev/null differ diff --git a/photo/image-20220210151331971.png b/photo/image-20220210151331971.png deleted file mode 100644 index aa5b09d7427c562176a4b9f611c87cc8c6e38753..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210151331971.png and /dev/null differ diff --git a/photo/image-20220210151727674.png b/photo/image-20220210151727674.png deleted file mode 100644 index ee8d4aa7478fd8374b9d7867c7c50da03c0ba92f..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210151727674.png and /dev/null differ diff --git a/photo/image-20220210152302853.png b/photo/image-20220210152302853.png deleted file mode 100644 index e7897d901fddefc38a6e4a7097e6045bbaef9ca2..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210152302853.png and /dev/null differ diff --git a/photo/image-20220210152616886.png b/photo/image-20220210152616886.png deleted file mode 100644 index 4e8536f0ede9d14acbddd07b19fcd8150d5822ae..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210152616886.png and /dev/null differ diff --git a/photo/image-20220210154034751.png b/photo/image-20220210154034751.png deleted file mode 100644 index 42d45ea6df0d5f20f44b1006d7da2d4850e61800..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210154034751.png and /dev/null differ diff --git a/photo/image-20220210154209396.png b/photo/image-20220210154209396.png deleted file mode 100644 index 2ca3a2bf29c2ade2d86f438deff52d86c4db157e..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210154209396.png and /dev/null differ diff --git a/photo/image-20220210154738978.png b/photo/image-20220210154738978.png deleted file mode 100644 index b1197eacad481739c4fd9f597834b32f5ae47afe..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210154738978.png and /dev/null differ diff --git a/photo/image-20220210154846332.png b/photo/image-20220210154846332.png deleted file mode 100644 index f624f032376d170818d4dc3302c5548695c1d84b..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210154846332.png and /dev/null differ diff --git a/photo/image-20220210155249222.png b/photo/image-20220210155249222.png deleted file mode 100644 index 3340a3d60b41d006f2a3c65c60c03e39984f8c76..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210155249222.png and /dev/null differ diff --git a/photo/image-20220210155924265.png b/photo/image-20220210155924265.png deleted file mode 100644 index 3fc8fe80a4cefcb9f9b7c86c8ad41571f9d35029..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210155924265.png and /dev/null differ diff --git a/photo/image-20220210161042596.png b/photo/image-20220210161042596.png deleted file mode 100644 index fe930a228099ff1c622f0012b2a166d9221654d3..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210161042596.png and /dev/null differ diff --git a/photo/image-20220210161103541.png b/photo/image-20220210161103541.png deleted file mode 100644 index 55d29999925091274515dd8060d20e387ff5f9af..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210161103541.png and /dev/null differ diff --git a/photo/image-20220210171827335.png b/photo/image-20220210171827335.png deleted file mode 100644 index 69ae0955816a6f6be1565e80200e923528f9d3f1..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210171827335.png and /dev/null differ diff --git a/photo/image-20220210173745203.png b/photo/image-20220210173745203.png deleted file mode 100644 index dc43490d19d9218f47ced2df8c603331337a6510..0000000000000000000000000000000000000000 Binary files a/photo/image-20220210173745203.png and /dev/null differ diff --git a/platform/Gauss200/gs_jdbc/javafx-swt.jar b/platform/Gauss200/gs_jdbc/javafx-swt.jar deleted file mode 100644 index ec237d4512440ffa4b4c70dde79bb8fad48df43f..0000000000000000000000000000000000000000 Binary files a/platform/Gauss200/gs_jdbc/javafx-swt.jar and /dev/null differ