c8y-openlayer
Version:
This module is designed to help integrate Openlayer with Cumulocity IoT
428 lines (363 loc) • 11.6 kB
JavaScript
import _ol_ from '../index.js';
import _ol_format_XLink_ from '../format/xlink.js';
import _ol_format_XML_ from '../format/xml.js';
import _ol_format_XSD_ from '../format/xsd.js';
import _ol_xml_ from '../xml.js';
/**
* @constructor
* @extends {ol.format.XML}
*/
var _ol_format_OWS_ = function() {
_ol_format_XML_.call(this);
};
_ol_.inherits(_ol_format_OWS_, _ol_format_XML_);
/**
* @inheritDoc
*/
_ol_format_OWS_.prototype.readFromDocument = function(doc) {
for (var n = doc.firstChild; n; n = n.nextSibling) {
if (n.nodeType == Node.ELEMENT_NODE) {
return this.readFromNode(n);
}
}
return null;
};
/**
* @inheritDoc
*/
_ol_format_OWS_.prototype.readFromNode = function(node) {
var owsObject = _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.PARSERS_, node, []);
return owsObject ? owsObject : null;
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The address.
*/
_ol_format_OWS_.readAddress_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.ADDRESS_PARSERS_, node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The values.
*/
_ol_format_OWS_.readAllowedValues_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.ALLOWED_VALUES_PARSERS_, node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The constraint.
*/
_ol_format_OWS_.readConstraint_ = function(node, objectStack) {
var name = node.getAttribute('name');
if (!name) {
return undefined;
}
return _ol_xml_.pushParseAndPop({'name': name},
_ol_format_OWS_.CONSTRAINT_PARSERS_, node,
objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The contact info.
*/
_ol_format_OWS_.readContactInfo_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.CONTACT_INFO_PARSERS_, node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The DCP.
*/
_ol_format_OWS_.readDcp_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.DCP_PARSERS_, node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The GET object.
*/
_ol_format_OWS_.readGet_ = function(node, objectStack) {
var href = _ol_format_XLink_.readHref(node);
if (!href) {
return undefined;
}
return _ol_xml_.pushParseAndPop({'href': href},
_ol_format_OWS_.REQUEST_METHOD_PARSERS_, node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The HTTP object.
*/
_ol_format_OWS_.readHttp_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop({}, _ol_format_OWS_.HTTP_PARSERS_,
node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The operation.
*/
_ol_format_OWS_.readOperation_ = function(node, objectStack) {
var name = node.getAttribute('name');
var value = _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.OPERATION_PARSERS_, node, objectStack);
if (!value) {
return undefined;
}
var object = /** @type {Object} */
(objectStack[objectStack.length - 1]);
object[name] = value;
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The operations metadata.
*/
_ol_format_OWS_.readOperationsMetadata_ = function(node,
objectStack) {
return _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.OPERATIONS_METADATA_PARSERS_, node,
objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The phone.
*/
_ol_format_OWS_.readPhone_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop({},
_ol_format_OWS_.PHONE_PARSERS_, node, objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The service identification.
*/
_ol_format_OWS_.readServiceIdentification_ = function(node,
objectStack) {
return _ol_xml_.pushParseAndPop(
{}, _ol_format_OWS_.SERVICE_IDENTIFICATION_PARSERS_, node,
objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The service contact.
*/
_ol_format_OWS_.readServiceContact_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop(
{}, _ol_format_OWS_.SERVICE_CONTACT_PARSERS_, node,
objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {Object|undefined} The service provider.
*/
_ol_format_OWS_.readServiceProvider_ = function(node, objectStack) {
return _ol_xml_.pushParseAndPop(
{}, _ol_format_OWS_.SERVICE_PROVIDER_PARSERS_, node,
objectStack);
};
/**
* @param {Node} node Node.
* @param {Array.<*>} objectStack Object stack.
* @private
* @return {string|undefined} The value.
*/
_ol_format_OWS_.readValue_ = function(node, objectStack) {
return _ol_format_XSD_.readString(node);
};
/**
* @const
* @type {Array.<string>}
* @private
*/
_ol_format_OWS_.NAMESPACE_URIS_ = [
null,
'http://www.opengis.net/ows/1.1'
];
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'ServiceIdentification': _ol_xml_.makeObjectPropertySetter(
_ol_format_OWS_.readServiceIdentification_),
'ServiceProvider': _ol_xml_.makeObjectPropertySetter(
_ol_format_OWS_.readServiceProvider_),
'OperationsMetadata': _ol_xml_.makeObjectPropertySetter(
_ol_format_OWS_.readOperationsMetadata_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.ADDRESS_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'DeliveryPoint': _ol_xml_.makeObjectPropertySetter(
_ol_format_XSD_.readString),
'City': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'AdministrativeArea': _ol_xml_.makeObjectPropertySetter(
_ol_format_XSD_.readString),
'PostalCode': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'Country': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'ElectronicMailAddress': _ol_xml_.makeObjectPropertySetter(
_ol_format_XSD_.readString)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.ALLOWED_VALUES_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Value': _ol_xml_.makeObjectPropertyPusher(_ol_format_OWS_.readValue_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.CONSTRAINT_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'AllowedValues': _ol_xml_.makeObjectPropertySetter(
_ol_format_OWS_.readAllowedValues_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.CONTACT_INFO_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Phone': _ol_xml_.makeObjectPropertySetter(_ol_format_OWS_.readPhone_),
'Address': _ol_xml_.makeObjectPropertySetter(_ol_format_OWS_.readAddress_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.DCP_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'HTTP': _ol_xml_.makeObjectPropertySetter(_ol_format_OWS_.readHttp_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.HTTP_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Get': _ol_xml_.makeObjectPropertyPusher(_ol_format_OWS_.readGet_),
'Post': undefined // TODO
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.OPERATION_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'DCP': _ol_xml_.makeObjectPropertySetter(_ol_format_OWS_.readDcp_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.OPERATIONS_METADATA_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Operation': _ol_format_OWS_.readOperation_
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.PHONE_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Voice': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'Facsimile': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.REQUEST_METHOD_PARSERS_ = _ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Constraint': _ol_xml_.makeObjectPropertyPusher(
_ol_format_OWS_.readConstraint_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.SERVICE_CONTACT_PARSERS_ =
_ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'IndividualName': _ol_xml_.makeObjectPropertySetter(
_ol_format_XSD_.readString),
'PositionName': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'ContactInfo': _ol_xml_.makeObjectPropertySetter(
_ol_format_OWS_.readContactInfo_)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.SERVICE_IDENTIFICATION_PARSERS_ =
_ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'Abstract': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'AccessConstraints': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'Fees': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'Title': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'ServiceTypeVersion': _ol_xml_.makeObjectPropertySetter(
_ol_format_XSD_.readString),
'ServiceType': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString)
});
/**
* @const
* @type {Object.<string, Object.<string, ol.XmlParser>>}
* @private
*/
_ol_format_OWS_.SERVICE_PROVIDER_PARSERS_ =
_ol_xml_.makeStructureNS(
_ol_format_OWS_.NAMESPACE_URIS_, {
'ProviderName': _ol_xml_.makeObjectPropertySetter(_ol_format_XSD_.readString),
'ProviderSite': _ol_xml_.makeObjectPropertySetter(_ol_format_XLink_.readHref),
'ServiceContact': _ol_xml_.makeObjectPropertySetter(
_ol_format_OWS_.readServiceContact_)
});
export default _ol_format_OWS_;