public override bool Parse(string str, ProcessDescription processDescription) { if (String.IsNullOrEmpty(str)) { return(false); } string[] tokens = str.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); ExceptionReport exception = null; foreach (string param in tokens) { string[] kv = param.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); if (kv.Length > 0) { OutputData output = processDescription.GetProcessOutputParameter(kv[0]); if (output != null) { OutputData myoutput = output.Clone(); try { myoutput.Parse(param); Outputs.Add(myoutput); } catch (ExceptionReport e) { exception = new ExceptionReport(e, exception); } } else { exception = new ExceptionReport(exception, "The output " + kv[0] + " is not a valid output for the process " + processDescription.Identifier, ExceptionCode.InvalidParameterValue, "responseDocument"); } } } if (exception != null) { throw exception; } return(tokens.Length != 0); }
public override bool Parse(string str, ProcessDescription processDescription) { if (String.IsNullOrEmpty(str)) { return(false); } string[] tokens = str.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (tokens.Length != 1) { throw new ExceptionReport("One identifier is mandatory when requesting a raw data output but " + tokens.Length + " were found.", ExceptionCode.InvalidParameterValue, "RawDataOutput"); } string[] kv = str.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); if (kv.Length > 0) { OutputData outputData = processDescription.GetProcessOutputParameter(kv[0]); if (outputData == null) { throw new ExceptionReport(String.Format("The output {0} is not a valid output for the process {1}", kv[0], processDescription.Identifier), ExceptionCode.InvalidParameterValue, "rawDataOutput"); } ComplexOutput output = outputData.asComplexOutput(); if (output == null) { throw new ExceptionReport(String.Format("Only ComplexOutputs can be requested as rawDataOutput but {0} is a {1}", kv[0], outputData.GetType().ToString()), ExceptionCode.InvalidParameterValue, "rawDataOutput"); } Identifier = kv[0]; Format = output.Format; // default format Format.ParseValue(str); if (output.Formats.Find(delegate(ComplexFormat cf) { return(cf.Equals(Format)); }) == null) { throw new ExceptionReport(string.Format("Requested format for the output {0} is not supported", kv[0]), ExceptionCode.InvalidParameterValue, kv[0]); } } return(false); }
public override bool Parse(XmlNode node, ProcessDescription processDescription) { if (node == null) { return(false); } XmlNamespaceManager nsmgr = Utils.CreateWPSNamespaceManager(node.OwnerDocument); XmlNodeList childs = node.SelectNodes("ows:Identifier", nsmgr); if (childs.Count != 1) { throw new ExceptionReport("One identifier is mandatory when requesting a raw data output but " + childs.Count + " were found.", ExceptionCode.InvalidParameterValue, "wps:RawDataOutput/ows:Identifier"); } Identifier = childs[0].InnerText; OutputData outputData = processDescription.GetProcessOutputParameter(Identifier); if (outputData == null) { throw new ExceptionReport(String.Format("The output {0} is not a valid output for the process {1}", Identifier, processDescription.Identifier), ExceptionCode.InvalidParameterValue, "rawDataOutput"); } ComplexOutput processOutput = outputData.asComplexOutput(); if (processOutput == null) { throw new ExceptionReport(String.Format("Only ComplexOutputs can be requested as rawDataOutput but {0} is a {1}", Identifier, outputData.GetType().Name), ExceptionCode.InvalidParameterValue, "rawDataOutput"); } Format = processOutput.Format; Format.ParseValue(node); return(true); }
public override bool Parse(string str, ProcessDescription processDescription) { if (String.IsNullOrEmpty(str)) return false; string[] tokens = str.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); ExceptionReport exception = null; foreach (string param in tokens) { string[] kv = param.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); if (kv.Length > 0) { OutputData output = processDescription.GetProcessOutputParameter(kv[0]); if (output != null) { OutputData myoutput = output.Clone(); try { myoutput.Parse(param); Outputs.Add(myoutput); } catch (ExceptionReport e) { exception = new ExceptionReport(e, exception); } } else { exception = new ExceptionReport(exception, "The output " + kv[0] + " is not a valid output for the process " + processDescription.Identifier, ExceptionCode.InvalidParameterValue, "responseDocument"); } } } if (exception != null) throw exception; return tokens.Length != 0; }
public override bool Parse(XmlNode node, ProcessDescription processDescription) { if (node == null) return false; // Create an XmlNamespaceManager for resolving namespaces. XmlNamespaceManager nsmgr = Utils.CreateWPSNamespaceManager(node.OwnerDocument); lineage = Boolean.Parse(Utils.GetXmlAttributesValue(node, "lineage", "false")); status = Boolean.Parse(Utils.GetXmlAttributesValue(node, "status", "false")); storeExecuteResponse = Boolean.Parse(Utils.GetXmlAttributesValue(node, "storeExecuteResponse", "false")); XmlNodeList outputs = node.SelectNodes("wps:Output", nsmgr); if (outputs.Count == 0) throw new ExceptionReport(String.Format("No 'wps:Output' node was found inside the 'wps:ResponseDocument' node for the process '{0}'. Please check your request.", processDescription.Identifier), ExceptionCode.MissingParameterValue, processDescription.Identifier); ExceptionReport exception = null; foreach (XmlNode output in outputs) { XmlNode id = output.SelectSingleNode("ows:Identifier", nsmgr); XmlNode abst = output.SelectSingleNode("ows:Abstract", nsmgr); XmlNode title = output.SelectSingleNode("ows:Title", nsmgr); string identifier = id.InnerText; string titleStr = title != null ? title.InnerText : ""; string abstStr = abst != null ? abst.InnerText : ""; OutputData processOutput = processDescription.GetProcessOutputParameter(identifier); if (processOutput != null) { OutputData myoutput = processOutput.Clone(); myoutput.Title = titleStr; myoutput.Abstract = abstStr; myoutput.asReference = Boolean.Parse(Utils.GetXmlAttributesValue(output, "asReference", "false")); if (myoutput.asReference && !processDescription.storeSupported) exception = new ExceptionReport(exception, String.Format("The storage of response is not supported for the process {0} but is requested for the output {1}.", processDescription.Identifier, identifier), ExceptionCode.StorageNotSupported); try { myoutput.Parse(output); Outputs.Add(myoutput); } catch (ExceptionReport e) { exception = new ExceptionReport(e, exception); } } else { exception = new ExceptionReport(exception, String.Format("The output {0} is not a valid output for the process {1}", identifier, processDescription.Identifier), ExceptionCode.InvalidParameterValue, "responseDocument"); } } if (exception != null) throw exception; return true; }
public override bool Parse(string str, ProcessDescription processDescription) { if (String.IsNullOrEmpty(str)) return false; string[] tokens = str.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries); if (tokens.Length != 1) throw new ExceptionReport("One identifier is mandatory when requesting a raw data output but " + tokens.Length + " were found.", ExceptionCode.InvalidParameterValue, "RawDataOutput"); string[] kv = str.Split(new char[] { '@' }, StringSplitOptions.RemoveEmptyEntries); if (kv.Length > 0) { OutputData outputData = processDescription.GetProcessOutputParameter(kv[0]); if (outputData == null) throw new ExceptionReport(String.Format("The output {0} is not a valid output for the process {1}", kv[0], processDescription.Identifier), ExceptionCode.InvalidParameterValue, "rawDataOutput"); ComplexOutput output = outputData.asComplexOutput(); if (output == null) throw new ExceptionReport(String.Format("Only ComplexOutputs can be requested as rawDataOutput but {0} is a {1}", kv[0], outputData.GetType().ToString()), ExceptionCode.InvalidParameterValue, "rawDataOutput"); Identifier = kv[0]; Format = output.Format; // default format Format.ParseValue(str); if (output.Formats.Find(delegate(ComplexFormat cf) { return cf.Equals(Format); }) == null) throw new ExceptionReport(string.Format("Requested format for the output {0} is not supported", kv[0]), ExceptionCode.InvalidParameterValue, kv[0]); } return false; }
public override bool Parse(XmlNode node, ProcessDescription processDescription) { if (node == null) return false; XmlNamespaceManager nsmgr = Utils.CreateWPSNamespaceManager(node.OwnerDocument); XmlNodeList childs = node.SelectNodes("ows:Identifier", nsmgr); if (childs.Count != 1) throw new ExceptionReport("One identifier is mandatory when requesting a raw data output but " + childs.Count + " were found.", ExceptionCode.InvalidParameterValue, "wps:RawDataOutput/ows:Identifier"); Identifier = childs[0].InnerText; OutputData outputData = processDescription.GetProcessOutputParameter(Identifier); if (outputData == null) throw new ExceptionReport(String.Format("The output {0} is not a valid output for the process {1}", Identifier, processDescription.Identifier), ExceptionCode.InvalidParameterValue, "rawDataOutput"); ComplexOutput processOutput = outputData.asComplexOutput(); if (processOutput == null) throw new ExceptionReport(String.Format("Only ComplexOutputs can be requested as rawDataOutput but {0} is a {1}", Identifier, outputData.GetType().Name), ExceptionCode.InvalidParameterValue, "rawDataOutput"); Format = processOutput.Format; Format.ParseValue(node); return true; }
public override bool Parse(XmlNode node, ProcessDescription processDescription) { if (node == null) { return(false); } // Create an XmlNamespaceManager for resolving namespaces. XmlNamespaceManager nsmgr = Utils.CreateWPSNamespaceManager(node.OwnerDocument); lineage = Boolean.Parse(Utils.GetXmlAttributesValue(node, "lineage", "false")); status = Boolean.Parse(Utils.GetXmlAttributesValue(node, "status", "false")); storeExecuteResponse = Boolean.Parse(Utils.GetXmlAttributesValue(node, "storeExecuteResponse", "false")); XmlNodeList outputs = node.SelectNodes("wps:Output", nsmgr); if (outputs.Count == 0) { throw new ExceptionReport(String.Format("No 'wps:Output' node was found inside the 'wps:ResponseDocument' node for the process '{0}'. Please check your request.", processDescription.Identifier), ExceptionCode.MissingParameterValue, processDescription.Identifier); } ExceptionReport exception = null; foreach (XmlNode output in outputs) { XmlNode id = output.SelectSingleNode("ows:Identifier", nsmgr); XmlNode abst = output.SelectSingleNode("ows:Abstract", nsmgr); XmlNode title = output.SelectSingleNode("ows:Title", nsmgr); string identifier = id.InnerText; string titleStr = title != null ? title.InnerText : ""; string abstStr = abst != null ? abst.InnerText : ""; OutputData processOutput = processDescription.GetProcessOutputParameter(identifier); if (processOutput != null) { OutputData myoutput = processOutput.Clone(); myoutput.Title = titleStr; myoutput.Abstract = abstStr; myoutput.asReference = Boolean.Parse(Utils.GetXmlAttributesValue(output, "asReference", "false")); if (myoutput.asReference && !processDescription.storeSupported) { exception = new ExceptionReport(exception, String.Format("The storage of response is not supported for the process {0} but is requested for the output {1}.", processDescription.Identifier, identifier), ExceptionCode.StorageNotSupported); } try { myoutput.Parse(output); Outputs.Add(myoutput); } catch (ExceptionReport e) { exception = new ExceptionReport(e, exception); } } else { exception = new ExceptionReport(exception, String.Format("The output {0} is not a valid output for the process {1}", identifier, processDescription.Identifier), ExceptionCode.InvalidParameterValue, "responseDocument"); } } if (exception != null) { throw exception; } return(true); }