add formats for CSW GetRecords and GetDomain requests, p=bbinet, r=me (closes #2132)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9699 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
33
lib/OpenLayers/Format/CSWGetDomain.js
Normal file
33
lib/OpenLayers/Format/CSWGetDomain.js
Normal file
@@ -0,0 +1,33 @@
|
||||
/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD
|
||||
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format.js
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function: OpenLayers.Format.CSWGetDomain.
|
||||
* Default version is 2.0.2.
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Format>} A CSWGetDomain format of the given version.
|
||||
*/
|
||||
OpenLayers.Format.CSWGetDomain = function(options) {
|
||||
options = OpenLayers.Util.applyDefaults(
|
||||
options, OpenLayers.Format.CSWGetDomain.DEFAULTS
|
||||
);
|
||||
var cls = OpenLayers.Format.CSWGetDomain["v"+options.version.replace(/\./g, "_")];
|
||||
if(!cls) {
|
||||
throw "Unsupported CSWGetDomain version: " + options.version;
|
||||
}
|
||||
return new cls(options);
|
||||
};
|
||||
|
||||
/**
|
||||
* Constant: OpenLayers.Format.CSWGetDomain.DEFAULTS
|
||||
* {Object} Default properties for the CSWGetDomain format.
|
||||
*/
|
||||
OpenLayers.Format.CSWGetDomain.DEFAULTS = {
|
||||
"version": "2.0.2"
|
||||
};
|
||||
242
lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js
Normal file
242
lib/OpenLayers/Format/CSWGetDomain/v2_0_2.js
Normal file
@@ -0,0 +1,242 @@
|
||||
/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD
|
||||
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format/XML.js
|
||||
* @requires OpenLayers/Format/CSWGetDomain.js
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class: OpenLayers.Format.CSWGetDomain.v2_0_2
|
||||
* A format for creating CSWGetDomain v2.0.2 transactions.
|
||||
* Create a new instance with the
|
||||
* <OpenLayers.Format.CSWGetDomain.v2_0_2> constructor.
|
||||
*
|
||||
* Inherits from:
|
||||
* - <OpenLayers.Format.XML>
|
||||
*/
|
||||
OpenLayers.Format.CSWGetDomain.v2_0_2 = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
|
||||
/**
|
||||
* Property: namespaces
|
||||
* {Object} Mapping of namespace aliases to namespace URIs.
|
||||
*/
|
||||
namespaces: {
|
||||
xlink: "http://www.w3.org/1999/xlink",
|
||||
xsi: "http://www.w3.org/2001/XMLSchema-instance",
|
||||
csw: "http://www.opengis.net/cat/csw/2.0.2"
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: defaultPrefix
|
||||
* {String} The default prefix (used by Format.XML).
|
||||
*/
|
||||
defaultPrefix: "csw",
|
||||
|
||||
/**
|
||||
* Property: version
|
||||
* {String} CSW version number.
|
||||
*/
|
||||
version: "2.0.2",
|
||||
|
||||
/**
|
||||
* Property: schemaLocation
|
||||
* {String} http://www.opengis.net/cat/csw/2.0.2
|
||||
* http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd
|
||||
*/
|
||||
schemaLocation: "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
|
||||
|
||||
/**
|
||||
* APIProperty: PropertyName
|
||||
* {String} Value of the csw:PropertyName element, used when
|
||||
* writing a GetDomain document.
|
||||
*/
|
||||
PropertyName: null,
|
||||
|
||||
/**
|
||||
* APIProperty: ParameterName
|
||||
* {String} Value of the csw:ParameterName element, used when
|
||||
* writing a GetDomain document.
|
||||
*/
|
||||
ParameterName: null,
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Format.CSWGetDomain.v2_0_2
|
||||
* A class for parsing and generating CSWGetDomain v2.0.2 transactions.
|
||||
*
|
||||
* Parameters:
|
||||
* options - {Object} Optional object whose properties will be set on the
|
||||
* instance.
|
||||
*
|
||||
* Valid options properties:
|
||||
* - PropertyName
|
||||
* - ParameterName
|
||||
*/
|
||||
initialize: function(options) {
|
||||
OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: read
|
||||
* Parse the response from a GetDomain request.
|
||||
*/
|
||||
read: function(data) {
|
||||
if(typeof data == "string") {
|
||||
data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
|
||||
}
|
||||
if(data && data.nodeType == 9) {
|
||||
data = data.documentElement;
|
||||
}
|
||||
var obj = {};
|
||||
this.readNode(data, obj);
|
||||
return obj;
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: readers
|
||||
* Contains public functions, grouped by namespace prefix, that will
|
||||
* be applied when a namespaced node is found matching the function
|
||||
* name. The function will be applied in the scope of this parser
|
||||
* with two arguments: the node being read and a context object passed
|
||||
* from the parent.
|
||||
*/
|
||||
readers: {
|
||||
"csw": {
|
||||
"GetDomainResponse": function(node, obj) {
|
||||
this.readChildNodes(node, obj);
|
||||
},
|
||||
"DomainValues": function(node, obj) {
|
||||
if (!(obj.DomainValues instanceof Array)) {
|
||||
obj.DomainValues = [];
|
||||
}
|
||||
var attrs = node.attributes;
|
||||
var domainValue = {};
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
domainValue[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
this.readChildNodes(node, domainValue);
|
||||
obj.DomainValues.push(domainValue);
|
||||
},
|
||||
"PropertyName": function(node, obj) {
|
||||
obj.PropertyName = this.getChildValue(node);
|
||||
},
|
||||
"ParameterName": function(node, obj) {
|
||||
obj.ParameterName = this.getChildValue(node);
|
||||
},
|
||||
"ListOfValues": function(node, obj) {
|
||||
if (!(obj.ListOfValues instanceof Array)) {
|
||||
obj.ListOfValues = [];
|
||||
}
|
||||
this.readChildNodes(node, obj.ListOfValues);
|
||||
},
|
||||
"Value": function(node, obj) {
|
||||
var attrs = node.attributes;
|
||||
var value = {}
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
value[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
value.value = this.getChildValue(node);
|
||||
obj.push({Value: value});
|
||||
},
|
||||
"ConceptualScheme": function(node, obj) {
|
||||
obj.ConceptualScheme = {};
|
||||
this.readChildNodes(node, obj.ConceptualScheme);
|
||||
},
|
||||
"Name": function(node, obj) {
|
||||
obj.Name = this.getChildValue(node);
|
||||
},
|
||||
"Document": function(node, obj) {
|
||||
obj.Document = this.getChildValue(node);
|
||||
},
|
||||
"Authority": function(node, obj) {
|
||||
obj.Authority = this.getChildValue(node);
|
||||
},
|
||||
"RangeOfValues": function(node, obj) {
|
||||
obj.RangeOfValues = {};
|
||||
this.readChildNodes(node, obj.RangeOfValues);
|
||||
},
|
||||
"MinValue": function(node, obj) {
|
||||
var attrs = node.attributes;
|
||||
var value = {}
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
value[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
value.value = this.getChildValue(node);
|
||||
obj.MinValue = value;
|
||||
},
|
||||
"MaxValue": function(node, obj) {
|
||||
var attrs = node.attributes;
|
||||
var value = {}
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
value[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
value.value = this.getChildValue(node);
|
||||
obj.MaxValue = value;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: write
|
||||
* Given an configuration js object, write a CSWGetDomain request.
|
||||
*
|
||||
* Parameters:
|
||||
* options - {Object} A object mapping the request.
|
||||
*
|
||||
* Returns:
|
||||
* {String} A serialized CSWGetDomain request.
|
||||
*/
|
||||
write: function(options) {
|
||||
var node = this.writeNode("csw:GetDomain", options);
|
||||
return OpenLayers.Format.XML.prototype.write.apply(this, [node]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: writers
|
||||
* As a compliment to the readers property, this structure contains public
|
||||
* writing functions grouped by namespace alias and named like the
|
||||
* node names they produce.
|
||||
*/
|
||||
writers: {
|
||||
"csw": {
|
||||
"GetDomain": function(options) {
|
||||
var node = this.createElementNSPlus("csw:GetDomain", {
|
||||
attributes: {
|
||||
service: "CSW",
|
||||
version: this.version
|
||||
}
|
||||
});
|
||||
if (options.PropertyName || this.PropertyName) {
|
||||
this.writeNode(
|
||||
"csw:PropertyName",
|
||||
options.PropertyName || this.PropertyName,
|
||||
node
|
||||
);
|
||||
} else if (options.ParameterName || this.ParameterName) {
|
||||
this.writeNode(
|
||||
"csw:ParameterName",
|
||||
options.ParameterName || this.ParameterName,
|
||||
node
|
||||
);
|
||||
}
|
||||
this.readChildNodes(node, options);
|
||||
return node;
|
||||
},
|
||||
"PropertyName": function(value) {
|
||||
var node = this.createElementNSPlus("csw:PropertyName", {
|
||||
value: value
|
||||
});
|
||||
return node;
|
||||
},
|
||||
"ParameterName": function(value) {
|
||||
var node = this.createElementNSPlus("csw:ParameterName", {
|
||||
value: value
|
||||
});
|
||||
return node;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Format.CSWGetDomain.v2_0_2"
|
||||
});
|
||||
33
lib/OpenLayers/Format/CSWGetRecords.js
Normal file
33
lib/OpenLayers/Format/CSWGetRecords.js
Normal file
@@ -0,0 +1,33 @@
|
||||
/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD
|
||||
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format.js
|
||||
*/
|
||||
|
||||
/**
|
||||
* Function: OpenLayers.Format.CSWGetRecords.
|
||||
* Default version is 2.0.2.
|
||||
*
|
||||
* Returns:
|
||||
* {<OpenLayers.Format>} A CSWGetRecords format of the given version.
|
||||
*/
|
||||
OpenLayers.Format.CSWGetRecords = function(options) {
|
||||
options = OpenLayers.Util.applyDefaults(
|
||||
options, OpenLayers.Format.CSWGetRecords.DEFAULTS
|
||||
);
|
||||
var cls = OpenLayers.Format.CSWGetRecords["v"+options.version.replace(/\./g, "_")];
|
||||
if(!cls) {
|
||||
throw "Unsupported CSWGetRecords version: " + options.version;
|
||||
}
|
||||
return new cls(options);
|
||||
};
|
||||
|
||||
/**
|
||||
* Constant: OpenLayers.Format.CSWGetRecords.DEFAULTS
|
||||
* {Object} Default properties for the CSWGetRecords format.
|
||||
*/
|
||||
OpenLayers.Format.CSWGetRecords.DEFAULTS = {
|
||||
"version": "2.0.2"
|
||||
};
|
||||
454
lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
Normal file
454
lib/OpenLayers/Format/CSWGetRecords/v2_0_2.js
Normal file
@@ -0,0 +1,454 @@
|
||||
/* Copyright (c) 2006-2008 MetaCarta, Inc., published under the Clear BSD
|
||||
* license. See http://svn.openlayers.org/trunk/openlayers/license.txt for the
|
||||
* full text of the license. */
|
||||
|
||||
/**
|
||||
* @requires OpenLayers/Format/XML.js
|
||||
* @requires OpenLayers/Format/CSWGetRecords.js
|
||||
* @requires OpenLayers/Format/Filter/v1_0_0.js
|
||||
* @requires OpenLayers/Format/Filter/v1_1_0.js
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class: OpenLayers.Format.CSWGetRecords.v2_0_2
|
||||
* A format for creating CSWGetRecords v2.0.2 transactions.
|
||||
* Create a new instance with the
|
||||
* <OpenLayers.Format.CSWGetRecords.v2_0_2> constructor.
|
||||
*
|
||||
* Inherits from:
|
||||
* - <OpenLayers.Format.XML>
|
||||
*/
|
||||
OpenLayers.Format.CSWGetRecords.v2_0_2 = OpenLayers.Class(OpenLayers.Format.XML, {
|
||||
|
||||
/**
|
||||
* Property: namespaces
|
||||
* {Object} Mapping of namespace aliases to namespace URIs.
|
||||
*/
|
||||
namespaces: {
|
||||
xlink: "http://www.w3.org/1999/xlink",
|
||||
xsi: "http://www.w3.org/2001/XMLSchema-instance",
|
||||
csw: "http://www.opengis.net/cat/csw/2.0.2",
|
||||
dc: "http://purl.org/dc/elements/1.1/",
|
||||
dct: "http://purl.org/dc/terms/",
|
||||
ows: "http://www.opengis.net/ows"
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: defaultPrefix
|
||||
* {String} The default prefix (used by Format.XML).
|
||||
*/
|
||||
defaultPrefix: "csw",
|
||||
|
||||
/**
|
||||
* Property: version
|
||||
* {String} CSW version number.
|
||||
*/
|
||||
version: "2.0.2",
|
||||
|
||||
/**
|
||||
* Property: schemaLocation
|
||||
* {String} http://www.opengis.net/cat/csw/2.0.2
|
||||
* http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd
|
||||
*/
|
||||
schemaLocation: "http://www.opengis.net/cat/csw/2.0.2 http://schemas.opengis.net/csw/2.0.2/CSW-discovery.xsd",
|
||||
|
||||
/**
|
||||
* APIProperty: requestId
|
||||
* {String} Value of the requestId attribute of the GetRecords element.
|
||||
*/
|
||||
requestId: null,
|
||||
|
||||
/**
|
||||
* APIProperty: resultType
|
||||
* {String} Value of the resultType attribute of the GetRecords element,
|
||||
* specifies the result type in the GetRecords response, "hits" is
|
||||
* the default.
|
||||
*/
|
||||
resultType: null,
|
||||
|
||||
/**
|
||||
* APIProperty: outputFormat
|
||||
* {String} Value of the outputFormat attribute of the GetRecords element,
|
||||
* specifies the format of the GetRecords response,
|
||||
* "application/xml" is the default.
|
||||
*/
|
||||
outputFormat: null,
|
||||
|
||||
/**
|
||||
* APIProperty: outputSchema
|
||||
* {String} Value of the outputSchema attribute of the GetRecords element,
|
||||
* specifies the schema of the GetRecords response.
|
||||
*/
|
||||
outputSchema: null,
|
||||
|
||||
/**
|
||||
* APIProperty: startPosition
|
||||
* {String} Value of the startPosition attribute of the GetRecords element,
|
||||
* specifies the start position (offset+1) for the GetRecords response,
|
||||
* 1 is the default.
|
||||
*/
|
||||
startPosition: null,
|
||||
|
||||
/**
|
||||
* APIProperty: maxRecords
|
||||
* {String} Value of the maxRecords attribute of the GetRecords element,
|
||||
* specifies the maximum number of records in the GetRecords response,
|
||||
* 10 is the default.
|
||||
*/
|
||||
maxRecords: null,
|
||||
|
||||
/**
|
||||
* APIProperty: DistributedSearch
|
||||
* {String} Value of the csw:DistributedSearch element, used when writing
|
||||
* a csw:GetRecords document.
|
||||
*/
|
||||
DistributedSearch: null,
|
||||
|
||||
/**
|
||||
* APIProperty: ResponseHandler
|
||||
* {Array({String})} Values of the csw:ResponseHandler elements, used when
|
||||
* writting a csw:GetRecords document.
|
||||
*/
|
||||
ResponseHandler: null,
|
||||
|
||||
/**
|
||||
* APIProperty: Query
|
||||
* {String} Value of the csw:Query element, used when writing a csw:GetRecords
|
||||
* document.
|
||||
*/
|
||||
Query: null,
|
||||
|
||||
/**
|
||||
* Constructor: OpenLayers.Format.CSWGetRecords.v2_0_2
|
||||
* A class for parsing and generating CSWGetRecords v2.0.2 transactions.
|
||||
*
|
||||
* Parameters:
|
||||
* options - {Object} Optional object whose properties will be set on the
|
||||
* instance.
|
||||
*
|
||||
* Valid options properties (documented as class properties):
|
||||
* - requestId
|
||||
* - resultType
|
||||
* - outputFormat
|
||||
* - outputSchema
|
||||
* - startPosition
|
||||
* - maxRecords
|
||||
* - DistributedSearch
|
||||
* - ResponseHandler
|
||||
* - Query
|
||||
*/
|
||||
initialize: function(options) {
|
||||
OpenLayers.Format.XML.prototype.initialize.apply(this, [options]);
|
||||
},
|
||||
|
||||
/**
|
||||
* APIMethod: read
|
||||
* Parse the response from a GetRecords request.
|
||||
*/
|
||||
read: function(data) {
|
||||
if(typeof data == "string") {
|
||||
data = OpenLayers.Format.XML.prototype.read.apply(this, [data]);
|
||||
}
|
||||
if(data && data.nodeType == 9) {
|
||||
data = data.documentElement;
|
||||
}
|
||||
var obj = {};
|
||||
this.readNode(data, obj);
|
||||
return obj;
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: readers
|
||||
* Contains public functions, grouped by namespace prefix, that will
|
||||
* be applied when a namespaced node is found matching the function
|
||||
* name. The function will be applied in the scope of this parser
|
||||
* with two arguments: the node being read and a context object passed
|
||||
* from the parent.
|
||||
*/
|
||||
readers: {
|
||||
"csw": {
|
||||
"GetRecordsResponse": function(node, obj) {
|
||||
obj.records = [];
|
||||
this.readChildNodes(node, obj);
|
||||
var version = this.getAttributeNS(node, "", 'version');
|
||||
if (version != "") {
|
||||
obj.version = version;
|
||||
}
|
||||
},
|
||||
"RequestId": function(node, obj) {
|
||||
obj.RequestId = this.getChildValue(node);
|
||||
},
|
||||
"SearchStatus": function(node, obj) {
|
||||
obj.SearchStatus = {};
|
||||
var timestamp = this.getAttributeNS(node, "", 'timestamp');
|
||||
if (timestamp != "") {
|
||||
obj.SearchStatus.timestamp = timestamp;
|
||||
}
|
||||
},
|
||||
"SearchResults": function(node, obj) {
|
||||
this.readChildNodes(node, obj);
|
||||
var attrs = node.attributes;
|
||||
var SearchResults = {};
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
if ((attrs[i].name == "numberOfRecordsMatched") ||
|
||||
(attrs[i].name == "numberOfRecordsReturned") ||
|
||||
(attrs[i].name == "nextRecord")) {
|
||||
SearchResults[attrs[i].name] = parseInt(attrs[i].nodeValue);
|
||||
} else {
|
||||
SearchResults[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
}
|
||||
obj.SearchResults = SearchResults;
|
||||
},
|
||||
"SummaryRecord": function(node, obj) {
|
||||
var record = {type: "SummaryRecord"};
|
||||
this.readChildNodes(node, record);
|
||||
obj.records.push(record);
|
||||
},
|
||||
"BriefRecord": function(node, obj) {
|
||||
var record = {type: "BriefRecord"};
|
||||
this.readChildNodes(node, record);
|
||||
obj.records.push(record);
|
||||
},
|
||||
"DCMIRecord": function(node, obj) {
|
||||
var record = {type: "DCMIRecord"};
|
||||
this.readChildNodes(node, record);
|
||||
obj.records.push(record);
|
||||
},
|
||||
"Record": function(node, obj) {
|
||||
var record = {type: "Record"};
|
||||
this.readChildNodes(node, record);
|
||||
obj.records.push(record);
|
||||
}
|
||||
},
|
||||
"dc": {
|
||||
// audience, contributor, coverage, creator, date, description, format,
|
||||
// identifier, language, provenance, publisher, relation, rights,
|
||||
// rightsHolder, source, subject, title, type, URI
|
||||
"*": function(node, obj) {
|
||||
if (!(obj[node.localName] instanceof Array)) {
|
||||
obj[node.localName] = new Array();
|
||||
}
|
||||
var dc_element = {};
|
||||
var attrs = node.attributes;
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
dc_element[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
dc_element.value = this.getChildValue(node);
|
||||
obj[node.localName].push(dc_element);
|
||||
}
|
||||
},
|
||||
"dct": {
|
||||
// abstract, modified, spatial
|
||||
"*": function(node, obj) {
|
||||
if (!(obj[node.localName] instanceof Array)) {
|
||||
obj[node.localName] = new Array();
|
||||
}
|
||||
obj[node.localName].push(this.getChildValue(node));
|
||||
}
|
||||
},
|
||||
"ows": {
|
||||
"WGS84BoundingBox": function(node, obj) {
|
||||
// LowerCorner = "min_x min_y"
|
||||
// UpperCorner = "max_x max_y"
|
||||
if (!(obj.BoundingBox instanceof Array)) {
|
||||
obj.BoundingBox = new Array();
|
||||
}
|
||||
//this.readChildNodes(node, bbox);
|
||||
var lc = this.getChildValue(
|
||||
this.getElementsByTagNameNS(
|
||||
node,
|
||||
this.namespaces["ows"],
|
||||
"LowerCorner"
|
||||
)[0]
|
||||
).split(' ', 2);
|
||||
var uc = this.getChildValue(
|
||||
this.getElementsByTagNameNS(
|
||||
node,
|
||||
this.namespaces["ows"],
|
||||
"UpperCorner"
|
||||
)[0]
|
||||
).split(' ', 2);
|
||||
|
||||
var boundingBox = {
|
||||
value: [
|
||||
parseFloat(lc[0]),
|
||||
parseFloat(lc[1]),
|
||||
parseFloat(uc[0]),
|
||||
parseFloat(uc[1])
|
||||
]
|
||||
};
|
||||
// store boundingBox attributes
|
||||
var attrs = node.attributes;
|
||||
for(var i=0, len=attrs.length; i<len; ++i) {
|
||||
boundingBox[attrs[i].name] = attrs[i].nodeValue;
|
||||
}
|
||||
obj.BoundingBox.push(boundingBox);
|
||||
},
|
||||
|
||||
"BoundingBox": function(node, obj) {
|
||||
// FIXME: We consider that BoundingBox is the same as WGS84BoundingBox
|
||||
// LowerCorner = "min_x min_y"
|
||||
// UpperCorner = "max_x max_y"
|
||||
// It should normally depend on the projection
|
||||
this.readers['ows']['WGS84BoundingBox'].apply(this, [node, obj]);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Method: write
|
||||
* Given an configuration js object, write a CSWGetRecords request.
|
||||
*
|
||||
* Parameters:
|
||||
* options - {Object} A object mapping the request.
|
||||
*
|
||||
* Returns:
|
||||
* {String} A serialized CSWGetRecords request.
|
||||
*/
|
||||
write: function(options) {
|
||||
var node = this.writeNode("csw:GetRecords", options);
|
||||
return OpenLayers.Format.XML.prototype.write.apply(this, [node]);
|
||||
},
|
||||
|
||||
/**
|
||||
* Property: writers
|
||||
* As a compliment to the readers property, this structure contains public
|
||||
* writing functions grouped by namespace alias and named like the
|
||||
* node names they produce.
|
||||
*/
|
||||
writers: {
|
||||
"csw": {
|
||||
"GetRecords": function(options) {
|
||||
if (!options) {
|
||||
options = {};
|
||||
}
|
||||
var node = this.createElementNSPlus("csw:GetRecords", {
|
||||
attributes: {
|
||||
service: "CSW",
|
||||
version: this.version,
|
||||
requestId: options.requestId || this.requestId,
|
||||
resultType: options.resultType || this.resultType,
|
||||
outputFormat: options.outputFormat || this.outputFormat,
|
||||
outputSchema: options.outputSchema || this.outputSchema,
|
||||
startPosition: options.startPosition || this.startPosition,
|
||||
maxRecords: options.maxRecords || this.maxRecords
|
||||
}
|
||||
});
|
||||
if (options.DistributedSearch || this.DistributedSearch) {
|
||||
this.writeNode(
|
||||
"csw:DistributedSearch",
|
||||
options.DistributedSearch || this.DistributedSearch,
|
||||
node
|
||||
);
|
||||
}
|
||||
var ResponseHandler = options.ResponseHandler || this.ResponseHandler;
|
||||
if (ResponseHandler instanceof Array && ResponseHandler.length > 0) {
|
||||
// ResponseHandler must be a non-empty array
|
||||
for(var i=0, len=ResponseHandler.length; i<len; i++) {
|
||||
this.writeNode(
|
||||
"csw:ResponseHandler",
|
||||
ResponseHandler[i],
|
||||
node
|
||||
);
|
||||
}
|
||||
}
|
||||
this.writeNode("Query", options.Query || this.Query, node);
|
||||
return node;
|
||||
},
|
||||
"DistributedSearch": function(options) {
|
||||
var node = this.createElementNSPlus("csw:DistributedSearch", {
|
||||
attributes: {
|
||||
hopCount: options.hopCount
|
||||
}
|
||||
});
|
||||
return node;
|
||||
},
|
||||
"ResponseHandler": function(options) {
|
||||
var node = this.createElementNSPlus("csw:ResponseHandler", {
|
||||
value: options.value
|
||||
});
|
||||
return node;
|
||||
},
|
||||
"Query": function(options) {
|
||||
if (!options) {
|
||||
options = {};
|
||||
}
|
||||
var node = this.createElementNSPlus("csw:Query", {
|
||||
attributes: {
|
||||
typeNames: options.typeNames || "csw:Record"
|
||||
}
|
||||
});
|
||||
var ElementName = options.ElementName;
|
||||
if (ElementName instanceof Array && ElementName.length > 0) {
|
||||
// ElementName must be a non-empty array
|
||||
for(var i=0, len=ElementName.length; i<len; i++) {
|
||||
this.writeNode(
|
||||
"csw:ElementName",
|
||||
ElementName[i],
|
||||
node
|
||||
);
|
||||
}
|
||||
} else {
|
||||
this.writeNode(
|
||||
"csw:ElementSetName",
|
||||
options.ElementSetName || {value: 'summary'},
|
||||
node
|
||||
);
|
||||
}
|
||||
if (options.Constraint) {
|
||||
this.writeNode(
|
||||
"csw:Constraint",
|
||||
options.Constraint,
|
||||
node
|
||||
);
|
||||
}
|
||||
//TODO: not implemented in ogc filters?
|
||||
//if (options.SortBy) {
|
||||
//this.writeNode(
|
||||
//"ogc:SortBy",
|
||||
//options.SortBy,
|
||||
//node
|
||||
//);
|
||||
//}
|
||||
return node;
|
||||
},
|
||||
"ElementName": function(options) {
|
||||
var node = this.createElementNSPlus("csw:ElementName", {
|
||||
value: options.value
|
||||
});
|
||||
return node;
|
||||
},
|
||||
"ElementSetName": function(options) {
|
||||
var node = this.createElementNSPlus("csw:ElementSetName", {
|
||||
attributes: {
|
||||
typeNames: options.typeNames
|
||||
},
|
||||
value: options.value
|
||||
});
|
||||
return node;
|
||||
},
|
||||
"Constraint": function(options) {
|
||||
var node = this.createElementNSPlus("csw:Constraint", {
|
||||
attributes: {
|
||||
version: options.version
|
||||
}
|
||||
});
|
||||
if (options.Filter) {
|
||||
var format = new OpenLayers.Format.Filter({
|
||||
version: options.version
|
||||
});
|
||||
node.appendChild(format.write(options.Filter));
|
||||
} else if (options.CqlText) {
|
||||
var child = this.createElementNSPlus("CqlText", {
|
||||
value: options.CqlText.value
|
||||
});
|
||||
node.appendChild(child);
|
||||
}
|
||||
return node;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
CLASS_NAME: "OpenLayers.Format.CSWGetRecords.v2_0_2"
|
||||
});
|
||||
Reference in New Issue
Block a user