protected override void Initialization(Wms.WmsCreator wmsCreator) { Debug.Assert(wmsCreator != null, "XML capabilities reader must be initialized when layer parsing starts!"); if (parent != null) { layerCreator = parent.AddLayer(); } else { layerCreator = wmsCreator.MakeLayerCreator(); } }
public LayerCreator(Wms.WmsCreator wmsCreator, LayerCreator parent) { Debug.Assert(wmsCreator != null, "We need WmsCreator to create layers!"); WmsCreator = wmsCreator; if (parent == null) { WmsCreator.Layer = this; } Parent = parent; Name = string.Empty; Title = string.Empty; Description = string.Empty; ImageFormat = ImageFormat.PNG; }
public void Parse(XmlReader reader, Wms.WmsCreator creator) { Debug.Assert(creator != null, "XML parser needs WMSCreator as parameter!"); Initialization(creator); try { Debug.Assert(reader != null, "XML reader must be valid!"); while (IsRunning && reader.Read()) { switch (reader.NodeType) { case XmlNodeType.Element: ParseStartElement(reader); break; case XmlNodeType.EndElement: ParseEndElement(reader); break; case XmlNodeType.Text: case XmlNodeType.CDATA: ParseText(reader); break; default: break; } } if (IsRunning) { throw new XmlException("Unexpected end of XML file!"); } } finally { Finalization(); } }
public LayerCreator(Wms.WmsCreator wmsCreator) : this(wmsCreator, null) { // Not used }
private string CreateNewWms(Uri uri) { Debug.Assert(uri != null, "We cannot create new WMS without service URI!"); // TODO: Rewrite downloading to WebRequestPool using (var webClient = new WebClient()) { var uriBuilder = new UriBuilder(uri); // Parameters to get WMS capabilities uriBuilder.Query = Wms.CAPABILITY_ADDRESS_QUERY; byte[] data = null; try { data = webClient.DownloadData(uriBuilder.Uri); } catch (WebException) { return(Properties.Resources.WmsCapabilitiesDownloadingError); } var contentType = webClient.ResponseHeaders.Get("Content-Type"); // Additional information is omitted. if (contentType.StartsWith("application/vnd.ogc.wms_xml", StringComparison.OrdinalIgnoreCase) || contentType.StartsWith("application/xml", StringComparison.OrdinalIgnoreCase) || contentType.StartsWith("text/xml", StringComparison.OrdinalIgnoreCase)) { var settings = new XmlReaderSettings(); settings.ProhibitDtd = false; settings.IgnoreComments = true; settings.IgnoreProcessingInstructions = true; settings.IgnoreWhitespace = true; settings.ValidationType = ValidationType.Schema; using (var stream = new MemoryStream(data)) using (var reader = XmlReader.Create(stream, settings)) { var parser = new CapabilitiesParser(); var creator = new Wms.WmsCreator(); try { parser.Parse(reader, creator); } catch (XmlException) { return(Properties.Resources.NotValidXmlFile); } catch (XmlParser.XmlParserException e) { return(e.Message); } creator.ServiceAddress = uri; var wms = creator.Create(); var layer = wms.Layer; layers.BeginUpdate(); try { layer.AddToTreeView(layers); } finally { layers.EndUpdate(); } canvas.Invalidate(false); } } else { return(Properties.Resources.FileNotInXmlFormat); } } return(null); }
protected override void Initialization(Wms.WmsCreator wmsCreator) { creator = wmsCreator; }
protected abstract void Initialization(Wms.WmsCreator wmsCreator);