/// <summary> /// Execute search item validation /// </summary> /// <param name="item">Search item to validate</param> private void ValidateSearchItem(ISearchItem item) { var searchParameter = item as ISearchParameter; if (!this._solrExpressOptions.FailFast || searchParameter == null) { return; } var attributes = searchParameter .GetType() #if NETCORE .GetTypeInfo() #endif .GetCustomAttributes() .Where(q => q is IValidationAttribute) .ToList(); var hasMultipleInstances = this ._searchItemCollection .GetSearchParameters() ?.Count(q => q.GetType() == searchParameter.GetType()) > 1; var allowMultipleInstances = !attributes.Any(q => q is AllowMultipleInstancesAttribute); Checker.IsTrue <AllowMultipleInstancesException>(hasMultipleInstances && !allowMultipleInstances, searchParameter.GetType().FullName); foreach (var attribute in attributes) { var isValid = ((IValidationAttribute)attribute).IsValid <TDocument>(searchParameter, out string errorMessage); Checker.IsFalse <SearchParameterIsInvalidException>(isValid, searchParameter.GetType().FullName, errorMessage); } }
public virtual bool IsIncluded(ISearchItem fileName) { if (Type == SearchType.Unknown || Parameter == SearchParameter.Unknown || string.IsNullOrEmpty(Value)) { return(true); } switch (Type) { case SearchType.Contains: return(SwitchContains(fileName) == Include); case SearchType.NotContains: return(!SwitchContains(fileName) == Include); case SearchType.Is: return(SwitchEquals(fileName) == Include); case SearchType.Not: return(!SwitchEquals(fileName) == Include); default: return(false); } }
/// <summary> /// Validate search parameter /// </summary> /// <param name="item">Search item to validate</param> private void ValidateSearchParameter(ISearchItem item) { if (item is ISearchParameter) { var parameter = (ISearchParameter)item; var multipleInstances = !parameter.AllowMultipleInstances && this._items .Any(q => (q.GetType() == parameter.GetType())); Checker.IsTrue <AllowMultipleInstanceOfParameterTypeException>(multipleInstances, parameter.GetType().FullName); var parameterValidation = parameter as IValidation; var mustValidate = this.Options.FailFast && parameterValidation != null; if (parameter is IAnyParameter <TDocument> ) { mustValidate = mustValidate && this.Options.CheckAnyParameter && parameter is IAnyParameter <TDocument>; } if (mustValidate) { bool isValid; string errorMessage; parameterValidation.Validate(out isValid, out errorMessage); Checker.IsTrue <InvalidParameterTypeException>(!isValid, parameterValidation.GetType().FullName, errorMessage); } } }
private bool SwitchEquals(ISearchItem fileName) { switch (Parameter) { case SearchParameter.Extension: { return(fileName.Extension.ToLower().Equals(Value.ToLower())); } case SearchParameter.Name: { return(Path.GetFileNameWithoutExtension(fileName.Name).ToLower().Equals(Value.ToLower())); } case SearchParameter.NameOrExtension: { return(Path.GetFileNameWithoutExtension(fileName.Name).ToLower().Equals(Value) || fileName.Extension.Equals(Value.ToLower())); } case SearchParameter.WholePath: { return(fileName.FullName.ToLower().Equals(Value.ToLower())); } } return(false); }
/// <summary> /// Removes the <see cref="ISearchItem{TKey}"/>. /// </summary> /// <param name="item">The item to remove.</param> /// <returns><see langword="true"/>, if <paramref name="item"/> was removed. <see langword="false"/>, if <paramref name="item"/> was not found.</returns> public static bool RemoveCommand(ISearchItem <string> item) { var assembly = Assembly.GetCallingAssembly(); string assemblyName = assembly?.GetName()?.Name ?? "Null"; assemblyName = assemblyName.Replace("_", " "); var sourceName = "___UNNAMEDITEMSOURCE___"; var combined = $"{assemblyName}_{sourceName}"; if (searchItemSources.TryGetValue(combined, out var existing)) { ExternalCommandItemSource source = (ExternalCommandItemSource)existing; var key = source.entries.Where(e => e.Value == item).Select(e => e.Key).FirstOrDefault(); if (key != null) { source.entries.Remove(key); return(true); } if (source.entries.Count == 0) { searchItemSources.TryRemove(combined, out var _); } } return(false); }
public int CalculateMatchStrength(ISearchItem searchItem) { if (string.IsNullOrEmpty(SearchTerm)) { return 1; } int wholeScore = CalculatePartScore(searchItem.Alias, SearchTerm); if (wholeScore > 0) { return wholeScore << 24; } int runningScore = 0; int partLengthMatched = 0; for (int i = 0; i < _parts.Length; ++i) { int partScore = CalculatePartScore(searchItem.Alias, _parts[i]); if (partScore > 0) { partLengthMatched += _parts[i].Length; runningScore += partScore & 0x7F; } } return ((partLengthMatched & 0x7F) << 16) | (runningScore & 0xFFFF); }
public int CalculateMatchStrength(ISearchItem searchItem) { if (string.IsNullOrEmpty(SearchTerm)) { return(1); } int wholeScore = CalculatePartScore(searchItem.Alias, SearchTerm); if (wholeScore > 0) { return(wholeScore << 24); } int runningScore = 0; int partLengthMatched = 0; for (int i = 0; i < _parts.Length; ++i) { int partScore = CalculatePartScore(searchItem.Alias, _parts[i]); if (partScore > 0) { partLengthMatched += _parts[i].Length; runningScore += partScore & 0x7F; } } return(((partLengthMatched & 0x7F) << 16) | (runningScore & 0xFFFF)); }
private static bool CheckDateRange(ISearchItem file, CalendarDateRange range = null) { if (range == null) { return(true); } return(file.CreationTime >= range.Start && file.CreationTime <= range.End); }
private static bool CheckSizeRange(ISearchItem file, SizeRange range) { if (range == null) { return(true); } return(range.IsInRange(file.Length)); }
private void OnLostFocus(object sender, RoutedEventArgs e) { ISearchItem selected = SelectedItem; if (selected != null && !Options.IsKeyboardFocusWithin) { Text = selected.CollapsedItemText; CommitedItem = selected; } }
/// <summary> /// Add an item to search /// </summary> /// <param name="item">Parameter to add in the query</param> /// <returns>Itself</returns> public DocumentSearch <TDocument> Add(ISearchItem item) { Checker.IsNull(item); this.ValidateSearchItem(item); this._searchItemCollection.Add(item); return(this); }
/// <summary> /// Add an item to search /// </summary> /// <param name="item">Parameter to add in the query</param> ISolrSearch <TDocument> ISolrSearch <TDocument> .Add(ISearchItem item) { Checker.IsNull(item); this.ValidateSearchParameter(item); this._items.Add(item); return(this); }
/// <summary> /// 注册一个数据源 /// </summary> /// <param name="inputItem">输入的数据源</param> /// <param name="ifAdjustCache">是否调整检索缓存</param> /// <returns>是否成功</returns> private bool TryRegistOneItem(ISearchItem inputItem, bool ifAdjustCache) { if (null == inputItem || string.IsNullOrWhiteSpace(inputItem.ItemName)) { return(false); } //调整输入 string realName = AdjustString(inputItem.ItemName); if (!m_dicSearchSource.ContainsKey(realName)) { m_dicSearchSource.Add(realName, new List <ISearchItem>()); } if (!m_dicSearchSource[realName].Contains(inputItem)) { m_dicSearchSource[realName].Add(inputItem); //判断是否需要添加到上次检索缓存 //*上次检索可以触发此次添加的数值 if (IfCanUseLastCache(realName)) { if (!m_LastSearchcache.Value.ContainsKey(realName)) { m_LastSearchcache.Value.Add(realName, new List <ISearchItem>()); } m_LastSearchcache.Value[realName].Add(inputItem); } //若需要调整缓存 if (ifAdjustCache) { Regex tempRegex = null; foreach (var oneCacheKVP in m_cache) { tempRegex = new Regex(oneCacheKVP.Key); //若命中 if (tempRegex.IsMatch(realName)) { //加入缓存 oneCacheKVP.Value.Add(inputItem); } } } return(true); } else { return(false); } }
// Here you do whatever is needed to create a list of FilteredList items that is // passed to the control for display private void OnSelectedChoiceChanged(ISearchItem item) { if (item == null) { return; } this.FilteredList.Clear(); foreach (var model in this.Source.Where(n => n.ID.StartsWith(item.Name))) { // note that we are just attaching the ExampeSearchModel object to the SearcItem this.FilteredList.Add(new SearchItem(model.ID, model.ID, model)); } }
/// <summary> /// Execute search item validation /// </summary> /// <param name="item">Search item to validate</param> internal void ValidateSearchItem(ISearchItem item) { var searchParameter = item as ISearchParameter; var errorMessage = string.Empty; if (!this._solrExpressOptions.FailFast || searchParameter == null) { return; } var attributes = searchParameter .GetType() #if NETCORE .GetTypeInfo() #endif .GetCustomAttributes() .Where(q => q is IValidationAttribute) .ToList(); var hasMultipleInstances = this ._searchItemCollection .GetSearchParameters() ?.Count(q => q.GetType() == searchParameter.GetType()) > 1; var allowMultipleInstances = !attributes.Any(q => q is AllowMultipleInstancesAttribute); Checker.IsTrue <AllowMultipleInstancesException>(hasMultipleInstances && !allowMultipleInstances, searchParameter.GetType().FullName); if (this._solrExpressOptions.CheckAnyParameter) { var useAnyThanSpecificParameterRather = attributes.FirstOrDefault(q => q is UseAnyThanSpecificParameterRatherAttribute); var isValid = ((IValidationAttribute)useAnyThanSpecificParameterRather).IsValid <TDocument>(searchParameter, out errorMessage); Checker.IsFalse <SearchParameterIsInvalidException>(isValid, searchParameter.GetType().FullName, errorMessage); } var filteredAttributes = attributes .Where(q => !(q is UseAnyThanSpecificParameterRatherAttribute) && !(q is AllowMultipleInstancesAttribute)) .ToList(); foreach (var attribute in filteredAttributes) { var isValid = ((IValidationAttribute)attribute).IsValid <TDocument>(searchParameter, out errorMessage); Checker.IsFalse <SearchParameterIsInvalidException>(isValid, searchParameter.GetType().FullName, errorMessage); } }
private static bool CheckSearchConditions(ISearchItem file, ICollection <SearchCondition> conditions = null) { if (conditions == null || conditions.Count == 0) { return(true); } foreach (var searchCondition in conditions) { if (searchCondition.IsIncluded(file)) { return(true); } } return(false); }
/// <summary> /// Adds a <see cref="ISearchItem{TKey}"/>. /// </summary> /// <param name="item"><see cref="ISearchItem{TKey}"/> to add.</param> /// <returns><see langword="true"/>, if item was added. <see langword="false"/>, if item already existed.</returns> public static bool AddCommand(ISearchItem <string> item) { var assembly = Assembly.GetCallingAssembly(); string assemblyName = assembly?.GetName()?.Name ?? "Null"; assemblyName = assemblyName.Replace("_", " "); if (!registeredAssemblies.Contains(assemblyName)) { registeredAssemblies.Add(assemblyName); } var key = $"{assemblyName}_{item.TopLeft}"; var source = GetOrCreateSource(assemblyName); if (!source.entries.ContainsKey(key)) { source.entries.Add(key, item); return(true); } return(false); }
/// <summary>Get all items which can be searched and added to the player's inventory through the console.</summary> private IEnumerable <ISearchItem> GetItems() { // objects foreach (int id in Game1.objectInformation.Keys) { ISearchItem obj = id >= Ring.ringLowerIndexRange && id <= Ring.ringUpperIndexRange ? new SearchableRing(id) : (ISearchItem) new SearchableObject(id); if (obj.IsValid) { yield return(obj); } } // weapons foreach (int id in Game1.content.Load <Dictionary <int, string> >("Data\\weapons").Keys) { ISearchItem weapon = new SearchableWeapon(id); if (weapon.IsValid) { yield return(weapon); } } }
private View ViewSelector(ISearchItem item) { if (demoDataTemplateSelector) { // this is an example of using a dataTemplate selector int id = int.Parse(item.ID); string dataTemplateKey = id % 2 == 0 ? "TemplateA" : "TemplateB"; if (id % 3 == 0) { dataTemplateKey = "TemplateC"; } DataTemplate dt = this.Resources[dataTemplateKey] as DataTemplate; if (dt != null) { return(dt.CreateContent() as View); } return(null); } else { // this is an example of using a single template for all grid cells return(new MGCheckBoxFilter()); } }
public void Add(ISearchItem item) { // Test purpose only }
public SearchItemContainer(ComboSearch search, ISearchItem item) { Item = item; _search = search; search.SearchTextChanged += OnSearchTextChanged; }
public static void SetSelectedChoice(BindableObject target, ISearchItem value) { target.SetValue(SelectedChoiceProperty, value); }
/// <summary> /// 注册一个数据源 /// </summary> /// <param name="inputItem">输入的数据源</param> /// <returns>是否成功</returns> public bool TryRegistOneItem(ISearchItem inputItem) { return(TryRegistOneItem(inputItem, true)); }
/// <summary> /// Determines whether an element is in current list /// </summary> /// <param name="item">Item to add</param> /// <returns>Returns true if item is found in list, otherwise false</returns> public bool Contains(ISearchItem item) => this._items.Contains(item);
public bool IsMatch(ISearchItem searchItem) { return(CalculateMatchStrength(searchItem) > 0); }
public bool IsMatch(ISearchItem searchItem) { return CalculateMatchStrength(searchItem) > 0; }
public void Add(ISearchItem item) { this._searchItems.Add(item); }
public void Add(ISearchItem item) { }