WebServiceRequest.js
	
	
Summary
	
		No overview generated for 'WebServiceRequest.js'
	
    
    
 
        
mapbuilder.loadScript(baseDir+"/tool/ToolBase.js");
function WebServiceRequest(toolNode, model) {
  ToolBase.apply(this, new Array(toolNode, model));
  var requestName = toolNode.selectSingleNode("mb:requestName");
  if (requestName) {
    this.requestName = requestName.firstChild.nodeValue;
  }
  var requestFilter = toolNode.selectSingleNode("mb:requestFilter");
  if (requestFilter) {
    this.requestFilter = requestFilter.firstChild.nodeValue;
  }
  var styleUrl = baseDir+"/tool/xsl/"+this.requestName.replace(/:/,"_")+".xsl";
  this.requestStylesheet = new XslProcessor(styleUrl);
  for (var j=0;j<toolNode.childNodes.length;j++) {
    if (toolNode.childNodes[j].firstChild && toolNode.childNodes[j].firstChild.nodeValue) {
      this.requestStylesheet.setParameter(toolNode.childNodes[j].nodeName,toolNode.childNodes[j].firstChild.nodeValue);
    }
  }
  this.model.addListener("init", this.init, this);
  this.model.addListener(this.requestName.replace(/:/,"_"), this.doRequest, this);
}
WebServiceRequest.prototype.createHttpPayload = function(feature) {
  if (this.debug) mbDebugMessage(this, "source:"+(new XMLSerializer()).serializeToString(feature));
  var httpPayload = new Object();
  httpPayload.method = this.targetModel.method;
  this.requestStylesheet.setParameter("httpMethod", httpPayload.method );
  this.requestStylesheet.setParameter("version", this.model.getVersion(feature) );
  if (this.requestFilter) {
    var filter = config.objects[this.requestFilter];
    this.requestStylesheet.setParameter("filter", escape((new XMLSerializer()).serializeToString(filter.doc).replace(/[\n\f\r\t]/g,'') ));
    if (this.debug) mbDebugMessage(this, (new XMLSerializer()).serializeToString(filter.doc));
  }
  httpPayload.postData = this.requestStylesheet.transformNodeToObject(feature);
  if (this.debug) {
    mbDebugMessage(this, "request data:"+(new XMLSerializer()).serializeToString(httpPayload.postData));
    if (config.serializeUrl) var response = postLoad(config.serializeUrl, httpPayload.postData);
  }
  httpPayload.url = this.model.getServerUrl(this.requestName, httpPayload.method, feature);
  if (httpPayload.method.toLowerCase() == "get") {
    httpPayload.postData.setProperty("SelectionLanguage", "XPath");
    Sarissa.setXpathNamespaces(httpPayload.postData, "xmlns:mb='http://mapbuilder.sourceforge.net/mapbuilder'");
    var queryString = httpPayload.postData.selectSingleNode("//mb:QueryString");
    if (httpPayload.url.indexOf("?") < 0) {
      httpPayload.url += "?";
    } else {
      httpPayload.url += "&";
    }
    httpPayload.url += queryString.firstChild.nodeValue;
    httpPayload.postData = null;
  }
  mbDebugMessage(this, "URL:"+httpPayload.url);
  return httpPayload;
}
WebServiceRequest.prototype.doRequest = function(objRef, featureName) {
  objRef.targetModel.featureName = featureName;
  var feature = objRef.model.getFeatureNode(featureName);
  if (!feature) {
    alert(mbGetMessage("featureNotFoundWebServiceRequest", featureName));
    return;
  }
  if (objRef.model.setRequestParameters) objRef.model.setRequestParameters(featureName, objRef.requestStylesheet);
  var httpPayload = objRef.createHttpPayload(feature);
  objRef.targetModel.newRequest(objRef.targetModel,httpPayload);
}
WebServiceRequest.prototype.setAoiParameters = function(objRef) {
  if (objRef.containerModel) {
    var featureSRS = null;
    var containerSRS = "EPSG:4326";
    var bbox = objRef.containerModel.getBoundingBox();
    var containerSRS = objRef.containerModel.getSRS();
    objRef.requestStylesheet.setParameter("bBoxMinX", bbox[0]);
    objRef.requestStylesheet.setParameter("bBoxMinY", bbox[1]);
    objRef.requestStylesheet.setParameter("bBoxMaxX", bbox[2]);
    objRef.requestStylesheet.setParameter("bBoxMaxY", bbox[3]);
    objRef.requestStylesheet.setParameter("srs", containerSRS );
    objRef.requestStylesheet.setParameter("width", objRef.containerModel.getWindowWidth() );
    objRef.requestStylesheet.setParameter("height", objRef.containerModel.getWindowHeight() );
  }
}
WebServiceRequest.prototype.init = function(objRef) {
  if (objRef.targetModel.containerModel) {
    objRef.containerModel = objRef.targetModel.containerModel;
  } else if (objRef.model.containerModel) {
    objRef.containerModel = objRef.model.containerModel;
  }
  if (objRef.containerModel) {
    objRef.containerModel.addListener("aoi", objRef.setAoiParameters, objRef);
    objRef.containerModel.addListener("bbox", objRef.setAoiParameters, objRef);
    objRef.containerModel.addListener("selectedLayer", objRef.selectFeature, objRef);
    objRef.containerModel.addListener("loadModel", objRef.mapInit, objRef);
  }
}
WebServiceRequest.prototype.mapInit = function(objRef) {
  objRef.containerModel.map.events.registerPriority('mouseup', objRef, objRef.setClickPosition);  
}
WebServiceRequest.prototype.setClickPosition = function(e) {
  this.requestStylesheet.setParameter("xCoord", e.xy.x);
  this.requestStylesheet.setParameter("yCoord", e.xy.y);
}
WebServiceRequest.prototype.selectFeature = function(objRef, featureName) {
  objRef.requestStylesheet.setParameter("queryLayer", featureName);
}
	
Documentation generated by 
JSDoc on Tue Aug 21 08:12:28 2007