UNPKG

wps-js-52-north

Version:

Web Processing Service JavaScrict library

163 lines (139 loc) 6.45 kB
/** * nearly all values are equal fpr WPS 1.0 and WPS 2.0. Thus most of them are hardcoded here! * Only some different values have to be set individually */ var CapabilitiesResponse_xml = CapabilitiesResponse.extend({ /** * @wpsResponse should be an XML v2.0.0 WPS Capabilities document */ instantiate : function(wpsResponse){ /* * set values */ var xmlCapabilities = $(wpsResponse).find("wps\\:Capabilities, Capabilities"); /* * version and service */ this.capabilities.version = xmlCapabilities.attr("version"); this.capabilities.service = xmlCapabilities.attr("service"); /* * service identification */ var xmlServiceIdentification = xmlCapabilities.find("ows\\:ServiceIdentification, ServiceIdentification"); this.capabilities.serviceIdentification.title = xmlServiceIdentification.find("ows\\:Title , Title").text(); this.capabilities.serviceIdentification.abstractValue = xmlServiceIdentification.find("ows\\:Abstract, Abstract").text(); this.capabilities.serviceIdentification.keywords = this.createArrayFromTextValues(xmlServiceIdentification.find("ows\\:Keyword, Keyword")); this.capabilities.serviceIdentification.serviceType = xmlServiceIdentification.find("ows\\:ServiceType, ServiceType").text(); this.capabilities.serviceIdentification.serviceTypeVersions = this.createArrayFromTextValues(xmlServiceIdentification.find("ows\\:ServiceTypeVersion, ServiceTypeVersion")); this.capabilities.serviceIdentification.fees = xmlServiceIdentification.find("ows\\:Fees, Fees").text(); this.capabilities.serviceIdentification.accessConstraints = xmlServiceIdentification.find("ows\\:AccessConstraints, AccessConstraints").text(); /* * service provider */ var xmlServiceProvider = $(xmlCapabilities).find("ows\\:ServiceProvider, ServiceProvider"); this.capabilities.serviceProvider.providerName = xmlServiceProvider.find("ows\\:ProviderName, ProviderName").text() || undefined; var providerSiteNode=xmlServiceProvider.find("ows\\:ProviderSite, ProviderSite") || undefined; this.capabilities.serviceProvider.providerSite = providerSiteNode.attr("href") || providerSiteNode.attr("xlin\\:href") || providerSiteNode.attr("xlink\\:href") || undefined; var serviceContact = xmlServiceProvider.find("ows\\:ServiceContact, ServiceContact") || undefined; this.capabilities.serviceProvider.serviceContact.individualName = serviceContact.find("ows\\:IndividualName, IndividualName").text() || undefined; var address = serviceContact.find("ows\\:Address, Address"); this.capabilities.serviceProvider.serviceContact.contactInfo.address.deliveryPoint = address.find("ows\\:DeliveryPoint, DeliveryPoint").text() || undefined; this.capabilities.serviceProvider.serviceContact.contactInfo.address.city = address.find("ows\\:City, City").text() || undefined; this.capabilities.serviceProvider.serviceContact.contactInfo.address.administrativeArea = address.find("ows\\:AdministrativeArea, AdministrativeArea").text() || undefined; this.capabilities.serviceProvider.serviceContact.contactInfo.address.postalCode = address.find("ows\\:PostalCode, PostalCode").text() || undefined; this.capabilities.serviceProvider.serviceContact.contactInfo.address.country = address.find("ows\\:Country, Country").text() || undefined; this.capabilities.serviceProvider.serviceContact.contactInfo.address.electronicMailAddress = address.find("ows\\:ElectronicMailAddress, ElectronicMailAddress").text() || undefined; /* * operations */ var operationsMetadata = xmlCapabilities.find("ows\\:OperationsMetadata, OperationsMetadata"); this.capabilities.operations = this.createOperationsArray(operationsMetadata.find("ows\\:Operation, Operation")); /* * languages */ var languages = this.extractAllLanguages(xmlCapabilities); this.capabilities.languages = this.createArrayFromTextValues(languages.find("ows\\:Language, Language")); /* * processes */ var processOfferings = this.extractProcessOfferings(xmlCapabilities); this.capabilities.processes = this.createProcessesArray(this.extractAllProcesses(processOfferings)); }, /** * extracts all languages. * * Differs for each WPS version */ extractAllLanguages : function(xmlCapabilities){ /* * override in child class */ }, /** * extracts process offering xml node. * * Differs for each WPS version */ extractProcessOfferings : function(xmlCapabilities){ /* * override in child class */ return xmlCapabilities.find("wps\\:Contents, Contents"); }, /** * extracts all process xml nodes. * * Differs for each WPS version */ extractAllProcesses : function(processOfferingsXml){ /* * override in child class */ }, createOperationsArray : function(nodes){ var array = new Array(nodes.length); for (var int = 0; int < nodes.length; int++) { var xmlOperation = $(nodes[int]); var name = xmlOperation.attr("name"); var getUrlNode=xmlOperation.find("ows\\:Get, Get"); var getUrl = getUrlNode.attr("href") || getUrlNode.attr("xlin\\:href") || getUrlNode.attr("xlink\\:href"); var PostUrlNode=xmlOperation.find("ows\\:Post, Post"); var postUrl = PostUrlNode.attr("href") || PostUrlNode.attr("xlin\\:href") || PostUrlNode.attr("xlink\\:href"); array[int] = this.createOperation(name, getUrl, postUrl); } return array; }, createProcessesArray : function(nodes){ var array = new Array(nodes.length); for (var int = 0; int < nodes.length; int++) { var xmlProcess = $(nodes[int]); var title = xmlProcess.find("ows\\:Title, Title").text(); var identifier = xmlProcess.find("ows\\:Identifier, Identifier").text(); var processVersion = xmlProcess.attr("processVersion") || xmlProcess.attr("wps\\:processVersion"); var jobControlOutputs = this.extractJobControlOptions(xmlProcess); var outputTransmission = this.extractOutputTransmission(xmlProcess); array[int] = this.createProcess(title, identifier, processVersion, jobControlOutputs, outputTransmission); } return array; }, /** * extracts jobControlOptions parameter. * * Differs for each WPS version */ extractJobControlOptions : function(xmlProcess){ /* * override in child class */ }, /** * extracts outputTransmission parameter. * * Differs for each WPS version */ extractOutputTransmission : function(xmlProcess){ /* * override in child class */ } });