Example #1
0
        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();
            }
        }
Example #2
0
            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;
            }
Example #3
0
        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();
            }
        }
Example #4
0
 public LayerCreator(Wms.WmsCreator wmsCreator)
     : this(wmsCreator, null)
 {
     // Not used
 }
Example #5
0
        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);
        }
Example #6
0
 protected override void Initialization(Wms.WmsCreator wmsCreator)
 {
     creator = wmsCreator;
 }
Example #7
0
 protected abstract void Initialization(Wms.WmsCreator wmsCreator);