forked from SuperMap/iClient-JavaScript
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDatasourceService.js
More file actions
116 lines (107 loc) · 4.13 KB
/
DatasourceService.js
File metadata and controls
116 lines (107 loc) · 4.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
/* Copyright© 2000 - 2023 SuperMap Software Co.Ltd. All rights reserved.
* This program are made available under the terms of the Apache License, Version 2.0
* which accompanies this distribution and is available at http://www.apache.org/licenses/LICENSE-2.0.html.*/
import {Util} from '../commontypes/Util';
import {CommonServiceBase} from './CommonServiceBase';
/**
* @class DatasourceService
* @deprecatedclass SuperMap.DatasourceService
* @category iServer Data Datasource
* @classdesc 数据源查询服务类。
* @param {string} url - 服务地址。如访问World Data服务,只需将url设为:http://localhost:8090/iserver/services/data-world/rest/data 即可。
* @param {Object} options - 参数。
* @param {Object} options.eventListeners - 事件监听器对象。有processCompleted属性可传入处理完成后的回调函数。processFailed属性传入处理失败后的回调函数。
* @param {DataFormat} [options.format=DataFormat.GEOJSON] - 查询结果返回格式,目前支持 iServerJSON 和 GeoJSON 两种格式。参数格式为 "ISERVER","GEOJSON"。
* @param {string} options.datasource - 要查询的数据集所在的数据源名称。
* @param {string} options.dataset - 要查询的数据集名称。
* @param {boolean} [options.crossOrigin] - 是否允许跨域请求。
* @param {Object} [options.headers] - 请求头。
* @extends {CommonServiceBase}
* @usage
*/
export class DatasourceService extends CommonServiceBase {
constructor(url, options) {
super(url, options);
if (options) {
Util.extend(this, options);
}
this.eventCount = 0;
this.CLASS_NAME = "SuperMap.DatasourceService";
}
/**
* @function DatasourceService.prototype.destroy
* @override
*/
destroy() {
this.eventCount = 0;
super.destroy();
}
/**
* @function DatasourceService.prototype.getDatasourceService
* @description 获取指定数据源信息。
*/
getDatasourceService(datasourceName, callback) {
let url = Util.urlPathAppend(this.url,`datasources/name/${datasourceName}`);
this.processAsync(url, "GET", callback);
}
/**
* @function DatasourceService.prototype.getDatasourcesService
* @description 获取所有数据源信息。
*/
getDatasourcesService(callback) {
let url = Util.urlPathAppend(this.url,`datasources`);
this.processAsync(url, "GET", callback);
}
/**
* @function DatasourceService.prototype.setDatasourceService
* @description 更新数据源信息。
*/
setDatasourceService(params, callback) {
if (!params) {
return;
}
const url = Util.urlPathAppend(this.url,`datasources/name/${params.datasourceName}`);
this.processAsync(url, "PUT", callback, params);
}
processAsync(url, method, callback, params) {
let eventId = ++this.eventCount;
let eventListeners = {
scope: this,
processCompleted: function(result) {
if (eventId === result.result.eventId && callback) {
delete result.result.eventId;
callback(result);
this.events && this.events.un(eventListeners);
return false;
}
},
processFailed: function(result) {
if ((eventId === result.error.eventId || eventId === result.eventId) && callback) {
callback(result);
this.events && this.events.un(eventListeners);
return false;
}
}
}
this.events.on(eventListeners);
var me = this;
let requestConfig = {
url,
method,
scope: me,
success(result, options) {
result.eventId = eventId;
this.serviceProcessCompleted(result, options);
},
failure(result, options) {
if (result.error) {
result.error.eventId = eventId;
}
result.eventId = eventId;
this.serviceProcessFailed(result, options);
}
}
params && (requestConfig.data = Util.toJSON(params));
me.request(requestConfig);
}
}