/// <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(); } } }
/// <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); }
/// <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); }
/// <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()); } }
/// <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); }
public WebStringSearchCriteria GetStringSearchCriteria(Boolean refresh = false) { if (_stringSearchCriteria.IsNull() || refresh) { _stringSearchCriteria = new WebStringSearchCriteria(); } return(_stringSearchCriteria); }
/// <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)); } }
/// <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()); }
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()); }
public WebStringSearchCriteriaExtensionTest() { _stringSearchCriteria = null; }