Ejemplo n.º 1
0
        /// <summary>
        /// Check that data is valid.
        /// </summary>
        /// <param name="searchCriteria">Search criteria.</param>
        /// <param name="isSingleCompareOperatorExpected">
        /// Indicates if exactly one compare operator should be specified.
        /// </param>
        /// <param name="isElasticsearchUsed">
        /// Indicates if Elsticsearch is used.
        /// Some handling of search criteria differs depending
        /// on which data source that will be used.
        /// </param>
        public static void CheckData(this WebStringSearchCriteria searchCriteria,
                                     Boolean isSingleCompareOperatorExpected,
                                     Boolean isElasticsearchUsed = false)
        {
            if (searchCriteria.IsNotNull())
            {
                if (isSingleCompareOperatorExpected)
                {
                    // Exactly one string compare operator must be specified.
                    if (searchCriteria.CompareOperators.IsEmpty() ||
                        searchCriteria.CompareOperators.Count > 1)
                    {
                        throw new ArgumentException("WebStringSearchCriteria: Exactly one string compare operator must be specified.");
                    }
                }
                else
                {
                    // At least one string compare operator must be specified.
                    if (searchCriteria.CompareOperators.IsEmpty())
                    {
                        throw new ArgumentException("WebStringSearchCriteria: At least one string compare operator must be specified.");
                    }
                }

                if (isElasticsearchUsed)
                {
                    searchCriteria.SearchString = searchCriteria.SearchString.CheckJsonInjection();
                }
                else
                {
                    searchCriteria.SearchString = searchCriteria.SearchString.CheckInjection();
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Get string filter to be used with Elasticsearch.
        /// </summary>
        /// <param name="searchCriteria">Search criteria.</param>
        /// <param name="stringColumn">Name of the field with a string value.</param>
        /// <returns>String filter.</returns>
        public static String GetFilter(this WebStringSearchCriteria searchCriteria,
                                       String stringColumn)
        {
            if (searchCriteria.IsNotNull())
            {
                switch (searchCriteria.CompareOperators[0])
                {
                case StringCompareOperator.BeginsWith:
                    return("{ \"prefix\" : { \"" + stringColumn + "_Lowercase" + "\" : \"" + searchCriteria.SearchString.ToLower() + "\" }}");

                case StringCompareOperator.Contains:
                    return("{\"query\" : { \"wildcard\" : { \"" + stringColumn + "_Lowercase" + "\" : \"*" + searchCriteria.SearchString.ToLower() + "*\"}}}");

                case StringCompareOperator.EndsWith:
                    return("{\"query\" : { \"wildcard\" : { \"" + stringColumn + "_Lowercase" + "\" : \"*" + searchCriteria.SearchString.ToLower() + "\"}}}");

                case StringCompareOperator.Equal:
                    return("{ \"term\" : { \"" + stringColumn + "_Lowercase" + "\" : \"" + searchCriteria.SearchString.ToLower() + "\" }}");

                case StringCompareOperator.Like:
                    return("{\"query\" : { \"wildcard\" : { \"" + stringColumn + "_Lowercase" + "\" : \"" + searchCriteria.SearchString.ToLower() + "\"}}}");

                case StringCompareOperator.NotEqual:
                    return("{not : { \"term\" : { \"" + stringColumn + "_Lowercase" + "\" : \"" + searchCriteria.SearchString.ToLower() + "\" }}}");

                default:
                    throw new ArgumentException("Not handled string compare operator = " + searchCriteria.CompareOperators[0]);
                }
            }

            return(null);
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Get string that can be added as part of a SQL where condition.
        /// Returned string matches specified search criteria.
        /// This procedure only handles one string compare operator.
        /// </summary>
        /// <param name="searchCriteria">Search criteria.</param>
        /// <param name="stringColumn">Name of column with string value.</param>
        /// <returns>String that can be added as part of a SQL where condition.</returns>
        public static String GetWhereCondition(this WebStringSearchCriteria searchCriteria,
                                               String stringColumn)
        {
            if (searchCriteria.IsNotNull())
            {
                switch (searchCriteria.CompareOperators[0])
                {
                case StringCompareOperator.BeginsWith:
                    return(" (" + stringColumn + " LIKE '" + searchCriteria.SearchString + "%') ");

                case StringCompareOperator.Contains:
                    return(" (" + stringColumn + " LIKE '%" + searchCriteria.SearchString + "%') ");

                case StringCompareOperator.EndsWith:
                    return(" (" + stringColumn + " LIKE '%" + searchCriteria.SearchString + "') ");

                case StringCompareOperator.Equal:
                    return(" (" + stringColumn + " = '" + searchCriteria.SearchString + "') ");

                case StringCompareOperator.Like:
                    return(" (" + stringColumn + " LIKE '" + searchCriteria.SearchString + "') ");

                case StringCompareOperator.NotEqual:
                    return(" (" + stringColumn + " <> '" + searchCriteria.SearchString + "') ");

                default:
                    throw new ArgumentException("Not handled string compare operator = " + searchCriteria.CompareOperators[0].ToString());
                }
            }

            return(null);
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Get search criteria system as string.
        /// </summary>
        /// <param name="searchCriteria">Search criteria.</param>
        /// <returns>Search criteria as string.</returns>
        public static String WebToString(this WebStringSearchCriteria searchCriteria)
        {
            Int32         index;
            StringBuilder stringBuilder;

            if (searchCriteria.IsNull())
            {
                return(String.Empty);
            }
            else
            {
                stringBuilder = new StringBuilder();
                stringBuilder.Append("String search criteria: ");
                if (searchCriteria.CompareOperators.IsNotEmpty())
                {
                    if (searchCriteria.CompareOperators.Count == 1)
                    {
                        stringBuilder.Append("Compare operator = " + searchCriteria.CompareOperators[0] + ", ");
                    }
                    else
                    {
                        stringBuilder.Append("Compare operators = [" + searchCriteria.CompareOperators[0]);
                        for (index = 1; index < searchCriteria.CompareOperators.Count; index++)
                        {
                            stringBuilder.Append(", " + searchCriteria.CompareOperators[index]);
                        }

                        stringBuilder.Append("], ");
                    }
                }

                stringBuilder.Append("Search string = [" + searchCriteria.SearchString + "]");
                return(stringBuilder.ToString());
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// Get WebStringSearchCriteria from specified IStringSearchCriteria
        /// </summary>
        /// <param name="userContext">The user context</param>
        /// <param name="stringSearchCriteria">An IStringSearchCriteria</param>
        /// <returns></returns>
        private WebStringSearchCriteria GetStringSearchCriteria(IUserContext userContext,
                                                                IStringSearchCriteria stringSearchCriteria)
        {
            WebStringSearchCriteria webStringSearchCriteria = new WebStringSearchCriteria();

            webStringSearchCriteria.CompareOperators = stringSearchCriteria.CompareOperators;
            webStringSearchCriteria.SearchString     = stringSearchCriteria.SearchString;
            return(webStringSearchCriteria);
        }
Ejemplo n.º 6
0
        public WebStringSearchCriteria GetStringSearchCriteria(Boolean refresh = false)
        {
            if (_stringSearchCriteria.IsNull() || refresh)
            {
                _stringSearchCriteria = new WebStringSearchCriteria();
            }

            return(_stringSearchCriteria);
        }
Ejemplo n.º 7
0
 /// <summary>
 /// Get cities that matches the search criteria.
 /// </summary>
 /// <param name="clientInformation">Information about the client that makes this web service call.</param>
 /// <param name="searchCriteria">City search criteria.</param>
 /// <param name="coordinateSystem">Coordinate system used in returned geography information.</param>
 /// <returns>Regions that matches the search criterias.</returns>
 public List <WebCityInformation> GetCitiesByNameSearchString(WebClientInformation clientInformation,
                                                              WebStringSearchCriteria searchCriteria,
                                                              WebCoordinateSystem coordinateSystem)
 {
     using (ClientProxy client = new ClientProxy(this, 1))
     {
         return(client.Client.GetCitiesByNameSearchString(clientInformation, searchCriteria, coordinateSystem));
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Get cities by name string search
        /// </summary>
        /// <param name="userContext">User context</param>
        /// <param name="criteria">City search criteria</param>
        /// <param name="coordinateSystem">The coordinate system used in the returned WebCityInformations</param>
        /// <returns></returns>
        public CityInformationList GetCitiesByNameSearchString(IUserContext userContext,
                                                               IStringSearchCriteria criteria,
                                                               ICoordinateSystem coordinateSystem)
        {
            WebStringSearchCriteria webStringSearchCriteria = GetStringSearchCriteria(userContext, criteria);
            WebCoordinateSystem     webCoordinateSystem     = GetCoordinateSystem(coordinateSystem);

            List <WebCityInformation> cityInformations = WebServiceProxy.GeoReferenceService.GetCitiesByNameSearchString(GetClientInformation(userContext),
                                                                                                                         webStringSearchCriteria,
                                                                                                                         webCoordinateSystem);

            return(GetCityInformationList(userContext, cityInformations));
        }
        /// <summary>
        /// Get web string search criteria from search criteria.
        /// </summary>
        /// <param name="stringSearchCriteria">Search criteria.</param>
        /// <returns>WebRole.</returns>
        protected WebStringSearchCriteria GetStringSearchCriteria(IStringSearchCriteria stringSearchCriteria)
        {
            WebStringSearchCriteria webSearchCriteria;

            if (stringSearchCriteria.IsNull())
            {
                webSearchCriteria = null;
            }
            else
            {
                webSearchCriteria = new WebStringSearchCriteria();
                webSearchCriteria.CompareOperators = stringSearchCriteria.CompareOperators;
                webSearchCriteria.SearchString     = stringSearchCriteria.SearchString;
            }

            return(webSearchCriteria);
        }
        public void GetCitiesByNameSearchString()
        {
            WebStringSearchCriteria searchCriteria = new WebStringSearchCriteria()
            {
                SearchString = "Uppsala%"
            };

            // Get cities in Google Mercator
            WebCoordinateSystem coordinateSystem = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.GoogleMercator
            };
            List <WebCityInformation> cityInformations = RegionManager.GetCitiesByNameSearchString(GetContext(), searchCriteria, coordinateSystem);

            Assert.IsTrue(cityInformations.IsNotEmpty());

            // Get cities in RT90 (same as in database)
            WebCoordinateSystem coordinateSystemRt90 = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.Rt90_25_gon_v
            };
            List <WebCityInformation> cityInformationsRt90 = RegionManager.GetCitiesByNameSearchString(GetContext(), searchCriteria, coordinateSystemRt90);

            Assert.IsTrue(cityInformationsRt90.IsNotEmpty());

            // Get cities in Sweref99TM
            WebCoordinateSystem coordinateSystemSweref99TM = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.SWEREF99_TM
            };
            List <WebCityInformation> cityInformationsSweref99TM = RegionManager.GetCitiesByNameSearchString(GetContext(), searchCriteria, coordinateSystemSweref99TM);

            Assert.IsTrue(cityInformationsSweref99TM.IsNotEmpty());

            // Test with character '.
            searchCriteria = new WebStringSearchCriteria();
            searchCriteria.SearchString = "Hej ' hopp";
            coordinateSystemSweref99TM  = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.SWEREF99_TM
            };
            cityInformationsSweref99TM = RegionManager.GetCitiesByNameSearchString(GetContext(), searchCriteria, coordinateSystemSweref99TM);
            Assert.IsTrue(cityInformationsSweref99TM.IsEmpty());
        }
Ejemplo n.º 11
0
        public void WebToString()
        {
            String stringSearchCriteria;

            _stringSearchCriteria = null;
            stringSearchCriteria  = _stringSearchCriteria.WebToString();
            Assert.IsTrue(stringSearchCriteria.IsEmpty());

            GetStringSearchCriteria(true).CompareOperators = new List <StringCompareOperator>();
            GetStringSearchCriteria().SearchString         = "hej hopp%";
            stringSearchCriteria = GetStringSearchCriteria().WebToString();
            Assert.IsTrue(stringSearchCriteria.IsNotEmpty());

            GetStringSearchCriteria().CompareOperators.Add(StringCompareOperator.Equal);
            stringSearchCriteria = GetStringSearchCriteria().WebToString();
            Assert.IsTrue(stringSearchCriteria.IsNotEmpty());

            GetStringSearchCriteria().CompareOperators.Add(StringCompareOperator.BeginsWith);
            stringSearchCriteria = GetStringSearchCriteria().WebToString();
            Assert.IsTrue(stringSearchCriteria.IsNotEmpty());
        }
        public void GetCitiesByNameSearchString()
        {
            List <WebCityInformation> cities;
            WebStringSearchCriteria   searchCriteria = new WebStringSearchCriteria()
            {
                SearchString = "Uppsala%"
            };
            WebCoordinateSystem coordinateSystemRt90 = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.Rt90_25_gon_v
            };
            WebCoordinateSystem coordinateSystemGoogleMercator = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.GoogleMercator
            };
            WebCoordinateSystem coordinateSystemSweref99TM = new WebCoordinateSystem()
            {
                Id = CoordinateSystemId.SWEREF99_TM
            };

            // Get result in RT90
            cities = WebServiceProxy.GeoReferenceService.GetCitiesByNameSearchString(GetClientInformation(),
                                                                                     searchCriteria,
                                                                                     coordinateSystemRt90);
            Assert.IsTrue(cities.IsNotEmpty());

            // Get result in GoogleMercator
            cities = WebServiceProxy.GeoReferenceService.GetCitiesByNameSearchString(GetClientInformation(),
                                                                                     searchCriteria,
                                                                                     coordinateSystemGoogleMercator);
            Assert.IsTrue(cities.IsNotEmpty());

            // Get result in Sweref99
            cities = WebServiceProxy.GeoReferenceService.GetCitiesByNameSearchString(GetClientInformation(),
                                                                                     searchCriteria,
                                                                                     coordinateSystemSweref99TM);
            Assert.IsTrue(cities.IsNotEmpty());
        }
 /// <summary>
 /// Get cities with names matching the search criteria
 /// </summary>
 /// <param name="clientInformation">Information about the client that makes this web service call.</param>
 /// <param name="searchCriteria">City name search criteria</param>
 /// <param name="coordinateSystem">Coordinate system used in returned geography information.</param>
 /// <returns></returns>
 public List <WebCityInformation> GetCitiesByNameSearchString(
     WebClientInformation clientInformation,
     WebStringSearchCriteria searchCriteria,
     WebCoordinateSystem coordinateSystem)
 {
     using (WebServiceContext context = GetWebServiceContext(clientInformation))
     {
         try
         {
             return
                 (ArtDatabanken.WebService.GeoReferenceService.Data.RegionManager.GetCitiesByNameSearchString(
                      context,
                      searchCriteria,
                      coordinateSystem));
         }
         catch (Exception exception)
         {
             LogException(clientInformation, context, exception);
             LogParameter(context, "CoordinateSystem", coordinateSystem.WebToString());
             LogParameter(context, "SearchCriteria", searchCriteria.WebToString());
             throw;
         }
     }
 }
        public void GetRegionsBySearchCriteria()
        {
            List <Int32>             countryIsoCodes;
            List <WebRegion>         regions;
            List <WebRegionCategory> allRegionCategories, regionCategories;
            String                  nameSearchString;
            WebRegionCategory       regionCategory;
            WebRegionSearchCriteria searchCriteria;
            WebRegionType           regionType;
            WebStringSearchCriteria stringSearchCriteria;

            allRegionCategories = WebServiceProxy.GeoReferenceService.GetRegionCategories(GetClientInformation(), false, 0);

            // Test - All parameters are empty.
            // All regions are returned.
            searchCriteria = new WebRegionSearchCriteria();
            regions        = WebServiceProxy.GeoReferenceService.GetRegionsBySearchCriteria(GetClientInformation(), searchCriteria);
            Assert.IsTrue(regions.IsNotEmpty());

            // Test - CountryIsoCodes.
            searchCriteria  = new WebRegionSearchCriteria();
            countryIsoCodes = new List <Int32>();
            countryIsoCodes.Add(allRegionCategories[0].CountryIsoCode);
            searchCriteria.CountryIsoCodes = countryIsoCodes;
            regions = WebServiceProxy.GeoReferenceService.GetRegionsBySearchCriteria(GetClientInformation(), searchCriteria);
            Assert.IsTrue(regions.IsNotEmpty());

            // Name search string.
            searchCriteria       = new WebRegionSearchCriteria();
            nameSearchString     = "U%";
            stringSearchCriteria = new WebStringSearchCriteria();
            stringSearchCriteria.SearchString = nameSearchString;
            searchCriteria.NameSearchString   = stringSearchCriteria;
            regions = WebServiceProxy.GeoReferenceService.GetRegionsBySearchCriteria(GetClientInformation(), searchCriteria);
            Assert.IsTrue(regions.IsNotEmpty());
            // Check that every region name starts with letter "U"
            foreach (WebRegion region in regions)
            {
                Assert.IsTrue(region.Name.Substring(0, 1).Equals("U"));
            }

            // Test - Region categories.
            searchCriteria   = new WebRegionSearchCriteria();
            regionCategories = new List <WebRegionCategory>();
            regionCategory   = allRegionCategories[2];
            regionCategories.Add(regionCategory);
            searchCriteria.Categories = regionCategories;
            regions = WebServiceProxy.GeoReferenceService.GetRegionsBySearchCriteria(GetClientInformation(), searchCriteria);
            Assert.IsTrue(regions.IsNotEmpty());
            // Check that all regions belong to the specified category.
            foreach (WebRegion region in regions)
            {
                Assert.AreEqual(regionCategory.Id, region.CategoryId);
            }

            // Test - Region type.
            searchCriteria      = new WebRegionSearchCriteria();
            regionType          = WebServiceProxy.GeoReferenceService.GetRegionTypes(GetClientInformation())[0];
            searchCriteria.Type = regionType;
            regions             = WebServiceProxy.GeoReferenceService.GetRegionsBySearchCriteria(GetClientInformation(), searchCriteria);
            Assert.IsTrue(regions.IsNotEmpty());
        }
Ejemplo n.º 15
0
 public WebStringSearchCriteriaExtensionTest()
 {
     _stringSearchCriteria = null;
 }