public bool geturl(string searchText, string stype)
        {
            if (metadataRecords == null)
            {
                return(false);
            }

            string selVal = searchText;
            List <datacontract.metadata> metaObjs = (from n in metadataRecords
                                                     where n.title == selVal
                                                     select n).ToList();

            if (metaObjs.Count > 0 && metaObjs[0].links.Count > 0)
            {
                datacontract.metadata metaObj  = metaObjs[0];
                List <List <string> > linkList = metaObj.links.Select(c => c.Split('|').ToList()).ToList();
                for (int c = 1; c < linkList.Count; c++)
                {
                    List <string> link = linkList[c];
                    for (int i = 1; i < link.Count; i++)
                    {
                        if (link[i].ToUpper().Contains(stype) && link[i - 1].ToLower().Contains("http"))
                        {
                            return(true);
                        }
                    }
                }
                return(false);
            }
            else
            {
                return(false);
            }
        }
Beispiel #2
0
        public datacontract.metadataResponse search(string q, int start = 1, int to               = 20,
                                                    string themekey     = "", string orgName      = "", string dataType = "", string siteId = "",
                                                    string inspiretheme = "", string inspireannex = "", string inspireServiceType = "")
        {
            qryValues.Add("fast", "index");
            qryValues.Add("sortBy", "changeDate");
            if (q != "" && q != null)
            {
                qryValues.Add("any", "*" + q + "*");
            }
            qryValues.Add("from", start.ToString());
            qryValues.Add("to", to.ToString());
            if (themekey != "")
            {
                qryValues.Add("themekey", ("\"" + themekey + "\"").Replace("&", "%26"));
            }
            if (orgName != "")
            {
                qryValues.Add("orgName", "\"" + orgName + "\"");
            }
            if (dataType != "")
            {
                qryValues.Add("type", dataType);
            }
            if (siteId != "")
            {
                qryValues.Add("siteId", siteId);
            }
            if (inspiretheme != "")
            {
                qryValues.Add("inspiretheme", inspiretheme);
            }
            if (inspireannex != "")
            {
                qryValues.Add("inspireannex", inspireannex);
            }
            if (inspireServiceType != "")
            {
                qryValues.Add("inspireServiceType", inspireServiceType);
            }

            client.QueryString = qryValues;

            Uri url = new Uri(geoNetworkUrl + "/q");

            string   xmlDoc  = client.DownloadString(url);
            XElement element = XElement.Parse(xmlDoc);

            int maxCount; int from; int xto;

            int.TryParse(element.Element("summary").Attribute("count").Value, out maxCount);
            int.TryParse(element.Attribute("from").Value, out from);
            int.TryParse(element.Attribute("to").Value, out xto);

            datacontract.metadataResponse metaResp = new datacontract.metadataResponse()
            {
                from = from, to = xto, maxCount = maxCount
            };
            List <datacontract.metadata> metaList = new List <datacontract.metadata>();
            IEnumerable <XElement>       sources  = element.Elements("metadata");

            foreach (var item in sources)
            {
                datacontract.metadata meta = new datacontract.metadata();
                XNamespace            ns   = "http://www.fao.org/geonetwork";

                var xsource   = item.Element(ns + "info");
                var xtitle    = item.Element("title");
                var xabstract = item.Element("abstract");

                if (xsource == null || xtitle == null)
                {
                    continue;
                }

                meta.sourceID = xsource.Element("uuid").Value;
                meta.title    = xtitle.Value;
                if (xabstract != null)
                {
                    meta.description = xabstract.Value;
                }
                else
                {
                    meta.description = "";
                }
                meta.links = new List <string>();
                foreach (var elem in item.Elements("link"))
                {
                    meta.links.Add(elem.Value);
                }
                metaList.Add(meta);
            }
            metaResp.metadataRecords = metaList;

            qryValues.Clear();
            client.QueryString.Clear();

            return(metaResp);
        }
Beispiel #3
0
        public datacontract.metadataResponse search(string q, int start = 1, int to = 20, 
            string themekey="", string orgName="", string dataType="", string siteId="", 
            string inspiretheme="", string inspireannex="", string inspireServiceType="")
        {
            qryValues.Add("fast", "index");
            qryValues.Add("sortBy", "changeDate");
            if (q != "" && q != null) qryValues.Add("any", "*" + q + "*");
            qryValues.Add("from", start.ToString());
            qryValues.Add("to", to.ToString());
            if (themekey != "") qryValues.Add("themekey", ("\"" + themekey + "\"").Replace("&", "%26"));
            if (orgName != "") qryValues.Add("orgName", "\"" + orgName + "\"" );
            if (dataType != "") qryValues.Add("type", dataType);
            if (siteId != "") qryValues.Add("siteId", siteId);
            if (inspiretheme != "") qryValues.Add("inspiretheme", inspiretheme);
            if (inspireannex != "") qryValues.Add("inspireannex", inspireannex);
            if (inspireServiceType != "") qryValues.Add("inspireServiceType", inspireServiceType);

            client.QueryString = qryValues;

            Uri url = new Uri(geoNetworkUrl + "/q");

            string xmlDoc = client.DownloadString(url);
            XElement element = XElement.Parse(xmlDoc);

            int maxCount; int from; int xto ;
            int.TryParse( element.Element("summary").Attribute("count").Value , out maxCount);
            int.TryParse(element.Attribute("from").Value, out from);
            int.TryParse(element.Attribute("to").Value, out xto);

            datacontract.metadataResponse metaResp = new datacontract.metadataResponse()
                                {from = from, to=xto, maxCount=maxCount };
            List<datacontract.metadata> metaList = new List<datacontract.metadata>();
            IEnumerable<XElement> sources = element.Elements("metadata");
            foreach (var item in sources)
            {
                datacontract.metadata meta = new datacontract.metadata();
                XNamespace ns = "http://www.fao.org/geonetwork";

                var xsource = item.Element(ns + "info");
                var xtitle = item.Element("title");
                var xabstract = item.Element("abstract");

                if (xsource == null || xtitle == null) continue;

                meta.sourceID = xsource.Element("uuid").Value;
                meta.title = xtitle.Value;
                if (xabstract != null) meta.description = xabstract.Value;
                else meta.description = "";
                meta.links = new List<string>();
                foreach (var elem in item.Elements("link"))
                {
                    meta.links.Add(elem.Value);
                }
                metaList.Add(meta);
            }
            metaResp.metadataRecords = metaList ;

            qryValues.Clear();
            client.QueryString.Clear();

            return metaResp;
        }