Pro自定义数据源原理
1. 概念
Connector:定义连接到一个数据源的连接信息,用于创建datastore。
Datastore:代表一个数据源的实例,用于打开一个或多个tables或feature class。
Cursor:可以通过查询一个table或feature class获得返回的记录。
Row:可以通过遍历cursor获得每一条要素记录。

对于Plugin Datasource,这个流程也是遵循上述概念的,具体实现如下:

PluginDatasourceConnectorPath:相对于Connector。PluginDatasourceConnectorPath通过指定数据源的ID和访问Uri路径,可以创建对应的PluginDatastore实例。
PluginDatastore:相对于Datastore。
2. 基础类
要实现自定义数据的接入,开发人员需要实现自定义数据源的PluginDatastore、Table和RowCursor,Pro SDK提供了对应的基础类,分别是PluginDatatoreTemplate、PluginTableTemplate、PluginCursorTemplate。这些基础类定义了需要实现的方法,开发人员只需要实现相应的方法则可。
继承PluginDatastoreTemplate的实例类需要实现的方法:
|
方法 |
说明 |
|
void Open(Uri connectionPath) |
建立和数据源的连接。 |
|
bool CanOpen(Uri connectionPath) |
用于判断该数据源是否能访问。 |
|
void Close() |
关闭数据源的连接。 |
|
IReadonlyList<string> GetTableNames() |
获得数据源中的数据集列表。 |
|
PluginTableTemplate OpenTable(string name) |
打开数据集。 |
|
bool IsQueryLanguageSupported() |
用于判断是否支持查询语法 |
|
string GetDatasourceDescription(bool inPluralForm) |
获得数据源文字描述信息 |
|
string GetDatasetDescription(DatasetType datasetType) |
获得数据集的文字描述信息 |
继承PluginTableTemplate的实例类需要实现的方法:
|
方法 |
说明 |
|
string GetName() |
返回要素集的名字,必须是数据源GetTableNames()方法返回的列表中。 |
|
IReadOnlyList<PluginField> GetFields() |
返回要素集的字段列表。 |
|
PluginCursorTemplate Search(QueryFilter queryFilter) |
用于进行属性查询。 |
|
PluginCursorTemplate Search(SpatialQueryFilter queryFilter) |
用于进行空间查询。 |
|
bool IsNativeRowCountSupported() |
用于判断数据集是否支持返回总记录数。 |
|
int GetNativeRowCount() |
返回数据集的总记录数。 |
|
GeometryType GetShapeType() |
返回数据集的图形类型。 |
继承PluginCursorTemplate的实例类需要实现的方法:
|
方法 |
说明 |
|
PluginRow GetCurrentRow() |
获得当前记录。 |
|
bool MoveNext() |
指针向前读取成功,则返回True,否则返回False。 |
Pro自定义数据源原理的更多相关文章
- 【Mybatis】MyBatis之配置自定义数据源(十一)
本例是在[Mybatis]MyBatis之配置多数据源(十)的基础上进行拓展,查看本例请先学习第十章 实现原理 1.扩展Spring的AbstractRoutingDataSource抽象类(该类充当 ...
- FastReport自定义数据源及ListView控件的使用
##1.想批量生成一堆物资信息卡,效果如下图所示,fastreport可以一下全部生成,并且发现不用单独写东西, ##2.发现FastReport官方给出的Demo.exe很友好,基本可以满足要求,想 ...
- JDBC 学习笔记(三)—— 数据源(数据库连接池):DBCP数据源、C3P0 数据源以及自定义数据源技术
本文目录: 1.应用程序直接获取连接的缺点(图解) 2.使用数据库连接池优化程序性能(图解) 3.可扩展增强某个类方法的功能的三种方式 4.自定 ...
- Aspose.Word邮件合并之自定义数据源
Aspose.Word在进行邮件合并时,默认的几个重载方法对Database支持比较友好,但是也可以通过自定义数据源来实现从集合或者对象中返回数据进行邮件合并. 自定义数据源主要是通过实现IMailM ...
- 20. Spring Boot 默认、自定义数据源 、配置多个数据源 jdbcTemplate操作DB
Spring-Boot-2.0.0-M1版本将默认的数据库连接池从tomcat jdbc pool改为了hikari,这里主要研究下hikari的默认配置 0. 创建Spring Boot项目,选中 ...
- WinForm中使用CrystalReport水晶报表——基础,分组统计,自定义数据源
开篇 本篇文章主要是帮助刚开始接触CrystalReport报表的新手提供一个循序渐进的教程.该教程主要分为三个部分1)CrystalReport的基本使用方法:2)使用CrystalReport对数 ...
- JavaWeb之数据源连接池(4)---自定义数据源连接池
[续上文<JavaWeb之数据源连接池(3)---Tomcat>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究其原 ...
- JDBC数据源连接池(4)---自定义数据源连接池
[续上文<JDBC数据源连接池(3)---Tomcat集成DBCP>] 我们已经 了解了DBCP,C3P0,以及Tomcat内置的数据源连接池,那么,这些数据源连接池是如何实现的呢?为了究 ...
- ArcGIS Pro 自定义坐标系地图矢量切片制作
ArcGIS Pro从1.4版本起就支持自定义坐标系统地图的矢量切片制作了. 步骤: 1. 将地图有全图范围缩小到屏幕像素大约10*10像素的范围,然后记录下地图的比例尺.这一步十分关键,不然系统要经 ...
随机推荐
- SpringBoot +MSSQL
____SpringBoot +MSSQL_______________________________________________________________________________ ...
- 在windows中使用PuTTy上传下载文件和目录
打开windows的cmd,使用cd命令切换到PuTTy安装目录 C:\Users\NUC>cd C:\Program Files\PuTTY 在cmd中使用pscp命令上传下载文件 windo ...
- python实现scp功能
最近公司有一个需求,需要把服务器A上的任务放到服务器B上,因为B上有HTTP,并且可以被外网访问,但是直接通过shell的scp,每次都需要输入密码.这里用python简单实现一下 直接上代码: im ...
- iOS 打包静态库.a文件(真机版 + 虚拟机)
我们以打包IOS开发中封装的高地地图基础功能包 GDMap为例. 1>我们需要准备好需要打包的GDMap 2>接下来我们开始新建一个工程文件取名GDMap 3>删掉无 ...
- 怎样用 vue-i18n这个结合vue的$t来实现通过data传值的翻译
<el-row class="searchForm"> <template v-for="(item,index) in searchConfig&qu ...
- UCOSIII系统内部任务
1. 空闲任务 空闲任务是UCOSIII创建的第一个任务 空闲任务是UCOSIII必须创建的 空闲任务优先级总是为OS_CFG_PRIO_MAK-1 空闲任务中不能调用任何可使空闲任务进入等待态的函数 ...
- Mysql8.0.17安装(windows10)
1.因为系统重装 又双叒叕开始了装mysql数据库 下载安装包 https://dev.mysql.com/downloads/mysql/ 2.解压到你想安装的地方 3.解压完是没有图红色框中的文 ...
- Linux环境下安装RabbitMQ
首先RabbitMQ是使用erLang编写的开源消息中间件.所以需要先安装erlang环境. 我使用的是CentOS的系统安装erlang21.0的步骤如下: #下载安装包 (下面是我用的比较匹配的版 ...
- plsql查看是否锁表,锁模式等,以及解锁SQL
--工作中的点滴积累SELECT l.session_id sid, s.serial#, l.locked_mode 锁模式, l.oracle_username 登录用户, l.os_user_n ...
- 汽车电子测试项目管理系统-TPA
概述 INTEWORK-TPA(Test Project Administrator, 以下简称TPA) 是一款集成的测试项目管理工具,它可以管理测试过程中的所有数据,包括需求.用例.样件.计划.报告 ...