UNPKG

rn_supermap

Version:

rn_supermap 一款基于React-Native框架的移动应用开发工具。基于该开发工具,用户可以使用JavaScript开发语言,开发出在Android和IOS操作系统下运行的原生移动GIS应用,入门门槛低,一次开发,处处运行。

281 lines (257 loc) 8.34 kB
/********************************************************************************* Copyright © SuperMap. All rights reserved. Author: will E-mail: pridehao@gmail.com Description:数据源类 **********************************************************************************/ import { NativeModules } from 'react-native'; let D = NativeModules.JSDatasource; import Datasets from './Datasets.js'; import Dataset from './Dataset.js'; import DatasetVector from './DatasetVector.js'; import PrjCoordSys from './PrjCoordSys.js'; import DatasourceConnectionInfo from './DatasourceConnectionInfo.js'; /** * @class Datasource * @description 该类管理投影信息、数据源与数据库的连接信息和对其中的数据集的相关操作,如通过已有数据集复制生成新的数据集等。 * @property {number} EncodeType - 数据集存储时的压缩编码方式 NONE | BYTE | INT16 | INT24 | INT32 | LZW | SGL | DCT * @property {number} DatasourceEncrytionType - 数据集存储时的压缩编码方式 DEFAULT | AES */ export default class Datasource { async getAlias() { try { var { alias } = await D.getAlias(this._SMDatasourceId); return alias; } catch (e) { console.error(e); } } /** * 获取数据集集合。 * @memberOf Datasource * @deprecated - 已弃用,Datasets类不建议使用,后续版本即将移除此接口 * @returns {Promise.<Datasets>} */ async getDatasets() { console.warn("Datasource.js:getDatasets() function has been deprecated. If you want to get dataset , please call the getDataset() function"); try { var { datasetsId } = await D.getDatasets(this._SMDatasourceId); var datasets = new Datasets(); datasets._SMDatasetsId = datasetsId; return datasets; } catch (e) { console.error(e); } } /** * 指定名称或序号来获取数据集。 * @memberOf Datasource * @param {number | string} index|name - 既可以是序号,也可以是数据集名称 * @returns {Promise.<Dataset>} */ async getDataset(arg) { try { var dataset = new Dataset(); if (typeof arg != "string") { var { datasetId } = await D.getDataset(this._SMDatasourceId, arg); } else { var { datasetId } = await D.getDatasetByName(this._SMDatasourceId, arg); } dataset._SMDatasetId = datasetId; return dataset; } catch (e) { console.error(e); } } /** * 返回一个数据源中未被使用的数据集的名称。 * @memberOf Datasource * @param {string} name - 待检测名称 * @returns {Promise.<string>} */ async getAvailableDatasetName(name) { try { var { datasetName } = await D.getAvailableDatasetName(this._SMDatasourceId, name); return datasetName; } catch (e) { console.error(e); } } /** * 根据指定的矢量数据集信息来创建矢量数据集。可传入一个datasetVectorInfo类对象,或直接传入数据集名称、数据集类型和编码类型三个参数。 * @memberOf Datasource * @param {object | string} datasetVectorInfo|datasetName - 数据集矢量信息对象 * @param {number} datasetType - {@link Dataset} * @param {number} encodeType - 数据集存储时的压缩编码方式 NONE | BYTE | INT16 | INT24 | INT32 | LZW | SGL | DCT * @returns {Promise.<DatasetVector>} */ async createDatasetVector(nameOrInfoObj, datasetType, encodeType) { try { if (arguments.length === 1) { var { datasetVectorId } = await D.createDatasetVector(this._SMDatasourceId, nameOrInfoObj._SMDatasetVectorInfoId); var datasetVector = new DatasetVector(); datasetVector._SMDatasetVectorId = datasetVectorId; return datasetVector; } else { var { datasetVectorId } = await D.createDatasetVectorDirectly(this._SMDatasourceId, nameOrInfoObj, datasetType, encodeType); var datasetVector = new DatasetVector(); datasetVector._SMDatasetVectorId = datasetVectorId; return datasetVector; } } catch (e) { console.error(e); } } /** * 用于在相同或不同引擎数据源中复制数据集。 * @memberOf Datasource * @param {object} srcDataset - 要复制的源数据集。 * @param {string} desDatasetName - 目标数据集的名称。 * @param {Datasource.EncodeType}encodeType - 数据集的编码方式。 * @returns {Promise.<Dataset>} */ async copyDataset(srcDataset, desDatasetName, encodeType) { try { var { datasetId } = await D.copyDataset(this._SMDatasourceId, srcDataset._SMDatasetId, desDatasetName, encodeType | 0); var dataset = new Dataset(); dataset.datasetId = datasetId; return dataset; } catch (e) { console.error(e); } } /* * 修改当前数据源的密码 * @memberOf Datasource * @param {number} oldPassword - 原始密码,不能为null * @param {number} newPassword - 新密码,不能为null * @param {Datasource.DatasourceEncrytionType} datasourceEncrytionType * @returns {Promise.<Promise.changed>} 新密码使用的加密类型 */ /* async changepassword(oldPassword,newPassword,datasourceEncrytionType){ try{ if(!oldPassword || !newPassword) throw new Error("Datasource.js:原始密码和新密码不能为空。"); var {changed} = await D.changepassword(this._SMDatasourceId,oldPassword,newPassword, datasourceEncrytionType | 0); return changed; }catch(e){ console.error(e); } } */ /** * 返回数据源的投影信息。 * @memberOf Datasource * @returns {Promise.<PrjCoordSys>} */ async getPrjCoordSys() { try { var { prjCoordSysId } = await D.getPrjCoordSys(this._SMDatasourceId); var prjCoordSys = new PrjCoordSys(); prjCoordSys._SMPrjCoordSysId = prjCoordSysId; return prjCoordSys; } catch (e) { console.error(e); } } /** * 检查当前数据源中是否包含指定名称的数据集。 * @memberOf Datasource * @param {string} datasetName - 数据集名称 * @returns {Promise.<boolean>} */ async containDataset(datasetName) { try { var { contain } = await D.containDataset(this._SMDatasourceId, datasetName); return contain; } catch (e) { console.error(e); } } /** * 用于删除指定名称的数据集。 * @memberOf Datasource * @param {string} datasetName - 数据集名称 * @returns {Promise.<boolean>} */ async deleteDataset(datasetName) { try { var { deleted } = await D.deleteDataset(this._SMDatasourceId, datasetName); return deleted; } catch (e) { console.error(e); } } /** * 返回数据集集合中数据集的个数。 * @memberOf Datasource * @returns {Promise.<number>} */ async getDatasetCount() { try { var { count } = await D.getDatasetCount(this._SMDatasourceId); return count; } catch (e) { console.error(e); } } /** * 返回数据源是否已打开 * @returns {Promise.<Promise|*>} */ async isOpened() { try { return await D.isOpened(this._SMDatasourceId); } catch (e) { console.error(e); } } /** * 返回数据源是否有改动 * @returns {Promise.<Promise|Promise.<Promise.isModified>>} */ async isModified() { try { return await D.isModified(this._SMDatasourceId); } catch (e) { console.error(e); } } /** * 返回数据源是否以制度方式打开 * @returns {Promise.<Promise|Promise.<void>>} */ async isReadOnly() { try { return await D.isReadOnly(this._SMDatasourceId); } catch (e) { console.error(e); } } /** * 返回此数据源的连接信息 * @returns {Promise.<Promise|Promise.<void>>} */ async getConnectionInfo() { try { let id = await D.getConnectionInfo(this._SMDatasourceId); let connInfo = new DatasourceConnectionInfo() connInfo._SMDatasourceConnectionInfoId = id return connInfo } catch (e) { console.error(e); } } } Datasource.EncodeType = { NONE: 0, BYTE: 1, INT16: 2, INT24: 3, INT32: 4, DCT: 8, SGL: 9, LZW: 11 } Datasource.DatasourceEncrytionType = { DEFAULT: 0, AES: 1 }