예제 #1
0
        public string getServiceList()
        {
            var dataWorker = new DataWorker();

            var allWebservices = dataWorker.getWebServiceList();

            WebServiceNode wsn5588 = null;
            int            count   = 0;

            foreach (WebServiceNode wsn in allWebservices)
            {
                Console.WriteLine(String.Format("{0} - {1}", count++, wsn.ServiceID));
                if (5588 == wsn.ServiceID)
                {
                    wsn5588 = wsn;
                }
            }

            if (allWebservices != null)
            {
                var json = JsonConvert.SerializeObject(allWebservices);
                json = "{ \"data\":" + json + "}";
                return(json);
            }
            else
            {
                throw new NullReferenceException();
            }
        }
예제 #2
0
        public SearchResult GetSeriesCatalogInRectangle(Box extentBox, string[] keywords, double tileWidth, double tileHeight,
            DateTime startDate, DateTime endDate, WebServiceNode[] serviceIDs, BusinessObjects.Models.IProgressHandler bgWorker)
        {
            if (extentBox == null) throw new ArgumentNullException("extentBox");
            if (serviceIDs == null) throw new ArgumentNullException("serviceIDs");
            if (bgWorker == null) throw new ArgumentNullException("bgWorker");

            if (keywords == null || keywords.Length == 0)
            {
                keywords = new[] { String.Empty };
            }

            bgWorker.CheckForCancel();
            var extent = new Extent(extentBox.XMin, extentBox.YMin, extentBox.XMax, extentBox.YMax);
            var fullSeriesList = GetSeriesListForExtent(extent, keywords, tileWidth, tileHeight, startDate, endDate,
                                                        serviceIDs, bgWorker, series => true);
            SearchResult resultFs = null;
            if (fullSeriesList.Count > 0)
            {
                bgWorker.ReportMessage("Calculating Points...");
                resultFs = SearchHelper.ToFeatureSetsByDataSource(fullSeriesList);
            }

            bgWorker.CheckForCancel();
            var message = string.Format("{0} Series found.", totalSeriesCount);
            bgWorker.ReportProgress(100, "Search Finished. " + message);
            return resultFs;
        }
예제 #3
0
        private void UpdateWebServicesCaption()
        {
            var webservicesSettings = SearchSettings.Instance.WebServicesSettings;
            var checkedCount        = webservicesSettings.CheckedCount;
            var totalCount          = webservicesSettings.TotalCount;

            string         caption;
            string         hint;
            WebServiceNode webServiceNode = null;

            if (checkedCount == totalCount)
            {
                caption = "All services";
                hint    = caption;
            }
            else if (checkedCount == 1)
            {
                // Get single checked item
                var items = webservicesSettings.WebServices.Where(w => w.Checked).ToList();
                Debug.Assert(items.Count == 1);
                webServiceNode = items[0];
                caption        = items[0].Title;
                hint           = caption;
            }
            else
            {
                caption = string.Format("{0} services selected", checkedCount);
                hint    = string.Format("{0} services", checkedCount);
            }

            rbServices.Caption     = caption;
            rbServices.ToolTipText = string.Format("Select web services ({0} selected)", hint);
            ChangeWebServicesIcon(webServiceNode);
        }
예제 #4
0
        public IEnumerable <WebServiceNode> GetWebServices()
        {
            var document = GetWebServicesFromHISCentral(_hisCentralUrl);

            if (document.DocumentElement == null)
            {
                return new WebServiceNode[] {}
            }
            ;

            var result = new List <WebServiceNode>(document.DocumentElement.ChildNodes.Count);

            foreach (XmlNode childNode1 in document.DocumentElement.ChildNodes)
            {
                if (childNode1.Name == "ServiceInfo")
                {
                    string desciptionUrl = null;
                    string serviceUrl    = null;
                    string title         = null;
                    string serviceID     = null;
                    string serviceCode   = null;
                    foreach (XmlNode childNode2 in childNode1.ChildNodes)
                    {
                        switch (childNode2.Name)
                        {
                        case "Title":
                            title = childNode2.InnerText;
                            break;

                        case "ServiceID":
                            serviceID = childNode2.InnerText;
                            break;

                        case "ServiceDescriptionURL":
                            desciptionUrl = childNode2.InnerText;
                            break;

                        case "servURL":
                            serviceUrl = childNode2.InnerText;
                            break;

                        case "NetworkName":
                            serviceCode = childNode2.InnerText;
                            break;
                        }
                    }
                    var node = new WebServiceNode(title, serviceCode, serviceID, desciptionUrl, serviceUrl);
                    result.Add(node);
                }
            }

            return(result);
        }
예제 #5
0
        public SearchResult GetSeriesCatalogInPolygon(IList<IFeature> polygons, string[] keywords, double tileWidth, double tileHeight,
            DateTime startDate, DateTime endDate, WebServiceNode[] serviceIDs, BusinessObjects.Models.IProgressHandler bgWorker)
        {
            if (polygons == null) throw new ArgumentNullException("polygons");
            if (bgWorker == null) throw new ArgumentNullException("bgWorker");
            if (polygons.Count == 0)
            {
                throw new ArgumentException("The number of polygons must be greater than zero.");
            }

            if (keywords == null || keywords.Length == 0)
            {
                keywords = new[] { String.Empty };
            }

            var fullSeriesList = new List<BusinessObjects.Models.SeriesDataCartModel.SeriesDataCart>();
            for (int index = 0; index < polygons.Count; index++)
            {
                if (polygons.Count > 1)
                {
                    bgWorker.ReportMessage(string.Format("Processing polygons: {0} of {1}", index + 1, polygons.Count));
                }

                bgWorker.CheckForCancel();
                var polygon = polygons[index];
                var extentBox = new Extent(polygon.Envelope);
                var seriesForPolygon = GetSeriesListForExtent(extentBox, keywords, tileWidth, tileHeight, startDate,
                                                              endDate,
                                                              serviceIDs, bgWorker,
                                                              item => polygon.Intersects(new Coordinate(item.Longitude, item.Latitude)));
                fullSeriesList.AddRange(seriesForPolygon);
            }

            SearchResult resultFs = null;
            if (fullSeriesList.Count > 0)
            {
                bgWorker.ReportMessage("Calculating Points...");
                resultFs = SearchHelper.ToFeatureSetsByDataSource(fullSeriesList);
            }

            bgWorker.CheckForCancel();
            var message = string.Format("{0} Series found.", totalSeriesCount);
            bgWorker.ReportProgress(100, "Search Finished. " + message);
            return resultFs;
        }
예제 #6
0
        private void ChangeWebServicesIcon(WebServiceNode webServiceNode = null)
        {
            if (webServiceNode == null ||
                string.IsNullOrEmpty(webServiceNode.ServiceCode))
            {
                rbServices.LargeImage = Resources.server_32;
                rbServices.SmallImage = Resources.server_16;
                return;
            }

            try
            {
                var image = ServiceIconHelper.Instance.GetImageForService(webServiceNode.ServiceCode);
                rbServices.LargeImage = rbServices.SmallImage = image;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to change icon." + Environment.NewLine +
                                ex.Message, Msg.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
        private void gridViewWebServices_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == -1)
            {
                return;
            }

            if (e.ColumnIndex == 7)
            {
                double[] minXY = new double[2];
                double[] maxXY = new double[2];

                //Now convert from Lat-Long to x,y coordinates that App.Map.ViewExtents can use to pan to the correct location.
                WebServiceNode node = (WebServiceNode)gridViewWebServices.Rows[e.RowIndex].Tag;

                minXY = LatLonReproject(node.ServiceBoundingBox.XMin, node.ServiceBoundingBox.YMin);
                maxXY = LatLonReproject(node.ServiceBoundingBox.XMax, node.ServiceBoundingBox.YMax);

                //Get extent where center is desired X,Y coordinate.
                App.Map.ViewExtents.MinX = minXY[0] - (minXY[0] / 20.0);
                App.Map.ViewExtents.MinY = minXY[1] - (minXY[1] / 20.0);
                App.Map.ViewExtents.MaxX = maxXY[0] + (maxXY[0] / 20.0);
                App.Map.ViewExtents.MaxY = maxXY[1] + (maxXY[1] / 20.0);

                Extent ex = App.Map.ViewExtents;

                _rectangleDrawing.Color = Color.Gold;
                _rectangleDrawing.RestoreSearchRectangle(node.ServiceBoundingBox.XMin, node.ServiceBoundingBox.YMin, node.ServiceBoundingBox.XMax, node.ServiceBoundingBox.YMax);

                App.Map.ViewExtents = ex;
            }
            else if (e.ColumnIndex == 8)
            {
                string url;
                if ((url = ((WebServiceNode)gridViewWebServices.Rows[e.RowIndex].Tag).DescriptionUrl) != null)
                {
                    Process.Start(url);
                }
            }
        }
예제 #8
0
        private void ChangeWebServicesIcon(WebServiceNode webServiceNode = null)
        {
            if (webServiceNode == null ||
                string.IsNullOrEmpty(webServiceNode.ServiceCode))
            {
                rbServices.LargeImage = Resources.server_32;
                rbServices.SmallImage = Resources.server_16;
                return;
            }

            try
            {
                var imageHelper = new ServiceIconHelper(SearchSettings.Instance.CatalogSettings.HISCentralUrl);
                var image       = imageHelper.GetImageForService(webServiceNode.ServiceCode);
                rbServices.LargeImage = rbServices.SmallImage = image;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Unable to change icon." + Environment.NewLine +
                                "Error: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
예제 #9
0
        private List <WebServiceNode> getWebserviceNodeList(string xmlData)
        {
            var list = new List <WebServiceNode>();

            var xmlReaderSettings = new XmlReaderSettings
            {
                CloseInput       = true,
                IgnoreComments   = true,
                IgnoreWhitespace = true,
            };

            using (var reader = XmlReader.Create(new StringReader(xmlData), xmlReaderSettings))
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        if (XmlContext.AdvanceReaderPastEmptyElement(reader))
                        {
                            //Empty element - advance and continue...
                            continue;
                        }

                        if (reader.Name == "ServiceInfo")
                        {
                            string desciptionUrl = null;
                            string serviceUrl    = null;
                            string title         = null;
                            int    serviceID     = -1;
                            string serviceCode   = null;
                            string organization  = null;

                            int    variables = -1, values = -1, sites = -1;
                            double xmin = double.NaN, xmax = double.NaN, ymin = double.NaN, ymax = double.NaN;

                            while (reader.Read())
                            {
                                if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "ServiceInfo")
                                {
                                    break;
                                }

                                if (reader.NodeType == XmlNodeType.Element)
                                {
                                    if (XmlContext.AdvanceReaderPastEmptyElement(reader))
                                    {
                                        //Empty element - advance and continue...
                                        continue;
                                    }

                                    switch (reader.Name)
                                    {
                                    case "Title":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        title = reader.Value.Trim();
                                        break;

                                    case "ServiceID":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        serviceID = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "ServiceDescriptionURL":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        desciptionUrl = reader.Value.Trim();
                                        break;

                                    case "organization":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        organization = reader.Value.Trim();
                                        break;

                                    case "servURL":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        serviceUrl = reader.Value.Trim();
                                        break;

                                    case "valuecount":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        values = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "variablecount":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        variables = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "sitecount":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        sites = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "NetworkName":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        serviceCode = reader.Value.Trim();
                                        break;

                                    case "minx":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out xmin);
                                        break;

                                    case "maxx":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out xmax);
                                        break;

                                    case "miny":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out ymin);
                                        break;

                                    case "maxy":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out ymax);
                                        break;
                                    }
                                }
                            }

                            var boundingBox = (Box)null;
                            if (!double.IsNaN(xmin) && !double.IsNaN(xmax) && !double.IsNaN(ymin) && !double.IsNaN(ymax))
                            {
                                boundingBox = new Box(xmin, xmax, ymin, ymax);
                            }

                            var node = new WebServiceNode(title, serviceCode, serviceID, desciptionUrl, serviceUrl, boundingBox, organization, sites, variables, values);
                            list.Add(node);
                        }
                    }
                }
            }

            return(list);
        }
        public IEnumerable <WebServiceNode> GetWebServices()
        {
            var searcher = new HISCentralSearcher(_hisCentralUrl);

            RefreshListFromHisCentral(searcher);
            var xmlReaderSettings = new XmlReaderSettings
            {
                CloseInput       = true,
                IgnoreComments   = true,
                IgnoreWhitespace = true,
            };

            var result = new List <WebServiceNode>();

            using (var reader = XmlReader.Create(WebServicesFilename, xmlReaderSettings))
            {
                while (reader.Read())
                {
                    if (reader.NodeType == XmlNodeType.Element)
                    {
                        if (reader.Name == "ServiceInfo")
                        {
                            string desciptionUrl = null;
                            string serviceUrl    = null;
                            string title         = null;
                            int    serviceID     = -1;
                            string serviceCode   = null;
                            string organization  = null;

                            int    variables = -1, values = -1, sites = -1;
                            double xmin = double.NaN, xmax = double.NaN, ymin = double.NaN, ymax = double.NaN;

                            while (reader.Read())
                            {
                                if (reader.NodeType == XmlNodeType.EndElement && reader.Name == "ServiceInfo")
                                {
                                    break;
                                }

                                if (reader.NodeType == XmlNodeType.Element)
                                {
                                    switch (reader.Name)
                                    {
                                    case "Title":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        title = reader.Value.Trim();
                                        break;

                                    case "ServiceID":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        serviceID = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "ServiceDescriptionURL":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        desciptionUrl = reader.Value.Trim();
                                        break;

                                    case "organization":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        organization = reader.Value.Trim();
                                        break;

                                    case "servURL":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        serviceUrl = reader.Value.Trim();
                                        break;

                                    case "valuecount":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        values = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "variablecount":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        variables = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "sitecount":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        sites = Convert.ToInt32(reader.Value.Trim());
                                        break;

                                    case "NetworkName":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        serviceCode = reader.Value.Trim();
                                        break;

                                    case "minx":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out xmin);
                                        break;

                                    case "maxx":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out xmax);
                                        break;

                                    case "miny":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out ymin);
                                        break;

                                    case "maxy":
                                        if (!reader.Read())
                                        {
                                            continue;
                                        }
                                        double.TryParse(reader.Value.Trim(), NumberStyles.Number, CultureInfo.InvariantCulture,
                                                        out ymax);
                                        break;
                                    }
                                }
                            }

                            var boundingBox = (Box)null;
                            if (!double.IsNaN(xmin) && !double.IsNaN(xmax) && !double.IsNaN(ymin) && !double.IsNaN(ymax))
                            {
                                boundingBox = new Box(xmin, xmax, ymin, ymax);
                            }

                            var node = new WebServiceNode(title, serviceCode, serviceID, desciptionUrl, serviceUrl, boundingBox, organization, sites, variables, values);
                            result.Add(node);
                        }
                    }
                }
            }

            return(result);
        }