ECLIPSE与HQLDB整合开发工具

上传人:muw****50 文档编号:166513410 上传时间:2022-11-01 格式:DOC 页数:15 大小:164KB
收藏 版权申诉 举报 下载
ECLIPSE与HQLDB整合开发工具_第1页
第1页 / 共15页
ECLIPSE与HQLDB整合开发工具_第2页
第2页 / 共15页
ECLIPSE与HQLDB整合开发工具_第3页
第3页 / 共15页
资源描述:

《ECLIPSE与HQLDB整合开发工具》由会员分享,可在线阅读,更多相关《ECLIPSE与HQLDB整合开发工具(15页珍藏版)》请在装配图网上搜索。

1、Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 HSQLDB 开发者角色对 HSQLDB 与 Eclipse 工作台的集成感兴趣的开发者可以很容易地被分为两类:客户机开发者,他们只是用 HSQLDB 来存储数据。 引擎开发者,他们通过添加新的标量函数或者存储过程来扩展 HSQLDB 可以识别的 SQL 语言。 数据库中的数据提供方法,那也是很方便的。Java 类添加到数据库引擎中。他们可能还希望 Eclipse 调试器可以在被数

2、据库服务调用的定制方法中设置断点和检查变量。一个包含有 public static 方法的类,如清单 1 所示,然后,当清单 2 中的脚本执行以后,它就可以被 SQL 语句所使用了。清单 1. 扩展 HSQLDB 引擎的 Java 类packagehsqldb.functions;importjava.util.zip.CRC32;publicclassCrcUtilpublicstaticlongcrc(Stringdata)CRC32crc32=newCRC32();crc32.update(data.getBytes();returncrc32.getValue();清单 2. 添加新标

3、量函数到 HSQLDB 引擎的 SQL 脚本文件Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(2)关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 CREATEALIASCRCFORhsqldb.functions.CrcUtil.crc;GRANTALLONCLASShsqldb.functions.CrcUtilTOPUBLIC;关系映射工具和其他数据库实用工具都可以作为 Eclipse 插件得到,它们独立于数据库,可以与我们的 HSQLDB 插件共同为此类开发者提供一

4、个完整的环境。本系列将着眼于数据库引擎开发者所关心的特性。HSQLDB 插件,第二版服务器端口、用户、密码和数据库文件路径),并且它们每一个都可以独立地启动或停止。但我意识到我只需要让 HSQLDB 作为一个标准的 Java 应用程序来运行,Eclipse JDT 本身就已经具备大部分的这些特性,于是我从根本上改变了这个计划。项目存储 HSQLDB 连接参数,而不是在整个工作台中只保存一次。性质和行为Eclipse 用 项目性质来定义一类新项目,项目性质是平台中可用的众多扩展点之一。每一个项目可以有多个性质,所以不需要创建全新的项目类,只需复制或者继承 Java 项目类的功能。您可以只告诉工作

5、台,新性质依赖于 JDT 已定义的 Java 项目性质。Java 性质提供了编辑 Java 类、创建单元测试用例和调试 Java 应用程序的所有工具。HSQLDB 引擎性质提供了启动、停止和配置 HSQLDB 的方法。 Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(3)关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 清单 3 显示了 plugin.xml 文件定义新性质的代码片断。它与一个类相关联,这个类必须实现 IProjectNature ,并可以将生成器和其他元素添

6、加到工作台,但是这个第二版的 HSQLDB 插件不需要去做任何事情。总之,必须给出性质实现类,不然工作台不会将性质添加到项目中。使用新性质很简单,我们只需要将特定的项目设定为 HSQLDB 行为可用(或者不可用)。 清单 3. plugin.xml 清单文件中定义 HSQLDB 引擎项目性质的片断每一个 Java 项目将获得一个 HSQLDB 菜单。它被初始化时只包含有一个选项,即“Add HSQLDB Engine nature”,见图 1。如果您曾经尝试过使用 Eclipse Consortium 的 EMF 插件,您将发现两者在概念上是相同的。图 1. Java 项目上下文菜单中的 HS

7、QLDB 子菜单Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(4)关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 当用户选择了这一动作,菜单将发生变化并显示出更多选项,包括启动和停止 HSQLDB,以及以独立模式(进行中)或者以客户机/服务器模式启动数据库管理器,见图 2。我们在第一版插件中定义的,在工作台顶部菜单栏上的“HSQLDB”菜单将消失,由每个 Java 项目上下文菜单中的“HSQLDB”子菜单所取代。图 2. 添加引擎性质后的 HSQLDB 子菜单 操作的可见

8、与启用在第一版 HSQLDB 插件中,每一步操作都要去检查它是否可以执行(例如,不允许启动数据库服务器的两个实例)。我已经注意到了 Eclipse 没有提供在程序中设置菜单项状态的简单方法,因为工作台试图去自己管理所有事情,只有当真正要调用插件代码时才加载插件。既然每一步操作都依赖于工作台资源(一个 Java 项目),那么工作台 可以 确定每一个选项什么时候应该可见或者被启用,而不必调用插件。元素 visibility 和 enablement 可以有子元素,比如 objectState ,该子元素查询资源属性以设置每一个操作的状态。清单 4 显示了 plugin.xml 中定义 5 个 ob

9、jectContribution 的片断: “Run HSQLDB SQL Script”操作,具备此新性质的项目中的任何 *.sql文件都可见。 “HSQLDB”子菜单包含两组选项,对任何 Java 项目都可见。如果两组都有关联到它们的操作,会画出一条分隔线将它们分开。只有当 Java 项目具有我们新定义的性质时,所有在本系列第 1 部分最初定义的 HSQLDB 操作才是可见的,例如启动和停止服务器。转载请注明文章来源及原始链接,谢谢合作! 该文发布于2009-12-17, 已有 人浏览 Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(5)关键词:一

10、个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 当 Java 项目没有插件自己定义的性质时“Add HSQLDB Engine nature”是可见的。最后,当 Java 项目具有我们的新性质时,“Remove HSQLDB Engine nature”可见。清单 4. plugin.xml 清单文件中定义 HSQLDB 菜单操作的片断转载请注明文章来源及原始链接,谢谢合作! 该文发布于2009-12-17, 已有 人浏览 Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(6)关键词:

11、一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 在顶层上下文菜单中包含的第一个 objectContribution 用于 IFile 资源,第二个定义了用于 Java 项目的“HSQLDB”子菜单。其余的那些将显示在子菜单本身上面:第三个在 group1 上,最后两个在 group2 上,但是对于一个给定的项目这两个只有一个是可见的。图 3 和图 4 显示了 PDE 清单编辑器上的这些 objectContributionorg.eclipse.ui.popupMenus 扩展点。 图 3. PDE 清单编辑器上的插件(

12、#1/2)定义的操作 图 4. PDE 清单编辑器上的插件(#2/2)定义的操作 除了只为正确类型的项目显示操作( objectContribution )之外,每个操作只有在有意义的时候才会被启用:我们只能在所选择的项目已经启动了一个 HSQLDB 服务器实例之后,才能停止它,而且我们不能再启动另外一个实例,因为它会去监听同一个 TCP 端口,而这个端口已经在使用了。同样道理,如果服务器已经在运行,那么数据库管理器只能以客户机/服务器模式启动。但是,如果没有服务器在运行,我们可以以独立模式运行数据库服务器,这种模式下 HSQLDB 引擎正在运行。 这是通过将 会话属性关联到每一个项目资源来完

13、成的。会话属性会在工作台关闭时丢失,这样它们可以帮助插件维持特定资源的不断变化的状态。它们是以程序方式定义的,而不是由插件清单定义的。 Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(7)关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 还需要有关联到每一个 Java 项目的自定义属性页,以使每一个项目拥有到它们的 HSQLDB 服务器的不同连接参数,例如,不同的用户和密码。清单 5 显示了属性页扩展的片断。对 plugin.xml的讨论到此已经足够,下面将来看一些 Java

14、 代码! 清单 5. plugin.xml 清单文件中针对 HSQLDB 项目属性页的片断HSQLDB 引擎项目性质将 hsqldb.ui.hsqldbEngine 性质添加到 Java 项目是很直观的,如清单 6 所示:获得相应的 IProjectDescriptor ,然后向与项目相关联的包含所有性质 id 的字符串数组中添加一个新元素。 这可能反而让读者直觉上认为 IJavaProject 并不是 IProject 。工作台和 JDT 维持的是平行的资源层次,前者描述项目、文件夹和文件,而后者描述的是 Java 项目、包和类。尽管“Add HSQLDB Engine nature”操作依

15、赖于 Java项目,我们还是必须首先得到相应的 Workbench 项目。然后我们才可以为它赋以新的描述,以及 hsqdbEngine 性质。 =Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(8)关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 (Workbench)项目描述更新完成后,我们定制(Java)项目的 CLASSPATH,并控制 HSQLDB 在其内部创建一个名为“database”的默认数据库。然后刷新项目,以使用户可以看到那些变化(新文件和库)。如本系列文章

16、的第 1 部分所讲,大部分操作,包括 HSQLDB 数据库类本身,都是来自 HsqldbUtil 类的静态方法,并且在第 2 部分它将拥有一些新的静态方法。 清单 6. 将 DB 引擎性质添加到一个 Java 项目IProjectproj=currentProject.getProject();IProjectDescriptiondescription=proj.getDescription();/addthehsqldbEnginenaturetotheprojectStringnatures=description.getNatureIds();StringnewNatures=newS

17、tringnatures.length+1;System.arraycopy(natures,0,newNatures,0,natures.length);/mustprefixwithpluginid!newNaturesnatures.length=hsqldb.ui.hsqldbEngine;description.setNatureIds(newNatures);proj.setDescription(description,null);/addtheHSQLDBclasspathvariableIClasspathEntryrawClasspath=currentProject.ge

18、tRawClasspath();IClasspathEntrynewRawClasspath=newIClasspathEntryrawClasspath.length+1;System.arraycopy(rawClasspath,0,newRawClasspath,0,rawClasspath.length);newRawClasspathrawClasspath.length=JavaCore.newVariableEntry(newPath(HSQLDB),null,null);currentProject.setRawClasspath(newRawClasspath,null);/

19、createtheinitialdatabasefilesIPathdbPath=proj.getLocation();Stringdatabase=dbPath.toString()+/database;HsqldbUtil.createEmptyHsqlDatabase(database);/refreshprojectsouserseesnewfiles,libraries,etcproj.refreshLocal(IResource.DEPTH_INFINITE,null);Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(9)关键词:一个 服务

20、器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 Classpath 变量除了具有特别的操作之外,DB 引擎项目还需要能访问 HSQLDB 服务器类。从本系列的第 1 部分我们已经知道如何在 hsqldb.core 插件中找到包含有这些类的 hsqldb.jar。但是通过文件系统实现每一个项目对这个库的引用,并不适用于团队开发。设想如果每一个团队成员将 Eclipse 安装到不同的文件系统文件夹,他们每个人将通过不同的路径使用那个库。但是我们并不希望 CVS 用最后一个做出提交的开发者的路径去更新每个开发者的路径。 这就是为什么在第二

21、版 HSQLDB 插件中定义了一个新的 classpath 变量来保存对 hsqldb.jar的引用。当添加 DB 引擎项目性质时,项目的类路径会被更新以包含这个变量,这个变量是由清单 7 中的工作台扩展点定义的。必须有一个类来初始化这个变量;代码见清单 8。 这个新的 classpath 变量对客户机开发者来说也是有用的:他们仅仅需要将这个变量添加到任何一个客户机项目的 Java 编译路径中,或者添加到任何一个客户机应用程序的运行期类路径中。这相对于在文件系统中寻找库 jar 文件简单得多。清单 7. 声明 HSQLDB classpath 变量的 plugin.xml 片断清单 8. HS

22、QLDB classpath 变量的初始化类publicclassHsqldbVariableextendsClasspathVariableInitializerpublicHsqldbVariable()super();publicvoidinitialize(Stringvariable)/ignorethevariableargument,sincewedefinejustone/classpathvariabletryJavaCore.setClasspathVariable(HSQLDB,newPath(HsqldbUtil.getHsqldbJarPath(),null);/ca

23、ntcreatetheclasspathvariablecatch(JavaModelExceptione)System.err.println(e);Eclipse 和 HSQLDB: 将关系数据库服务器嵌入到 Eclipse 中,第 2(10)关键词:一个 服务器 关系 项目 数据库 HSQLDB 关系数据库服务器嵌入 性质 Jav 分类:Java教程 投搞 我要评论 移除 HSQLDB 引擎性质如果我们提供了将 HSQLDB 引擎项目性质添加到 Java 项目的方法,自然,我们也会提供一个方法来移除它。步骤基本上与添加性质相同,但是我们是从字符串数组中删除而不是添加一个性质 id。清单

24、9 显示了完整的操作类代码,不只是改变项目描述的片断,这样我们可以学习为第二版插件创建的一些实用方法。清单 9. 移除 HSQLDB 引擎项目性质的操作publicclassRemoveDBEngineNatureimplementsIObjectActionDelegateprivateIJavaProjectcurrentProject;publicRemoveDBEngineNature()super();publicvoidsetActivePart(IActionaction,IWorkbenchParttargetPart)publicvoidrun(IActionaction)t

25、ryIProjectproj=currentProject.getProject();IProjectDescriptiondescription=proj.getDescription();/removethehsqldbEnginenaturetotheprojectStringnatures=description.getNatureIds();StringnewNatures=newStringnatures.length-1;for(inti=0;inatures.length;i+)if(!naturesi.equals(hsqldb.ui.hsqldbEngine)newNatu

26、resi=naturesi;description.setNatureIds(newNatures);proj.setDescription(description,null);/refreshprojectsouserseeschangesproj.refreshLocal(IResource.DEPTH_INFINITE,null);/asbothdecoratorssharethesamevisibilityrules,thiswillworkHsqldbRunningDecorator.updateDecorators();catch(Exceptione)Shellshell=new

27、Shell();MessageDialog.openInformation(shell,HsqldbUiPlug-in,CannotremoveHSQLDBDatabaseEnginenature:n+ActionUtil.getStatusMessages(e);Shellshell=newShell();MessageDialog.openInformation(shell,HsqldbUiPlug-in,RemovedHSQLDBDatabaseEnginefromthisproject.n+Youmustmanuallydeletedatabasefilesandlibrariesifwanted.);publicvoidselectionChanged(IActionaction,ISelectionselection)currentProject=ActionUtil.findSelectedJavaProject(selection);

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!