private static LDAPAttributeFilter Build(SearchRequestFilter filter) { var result = new LDAPAttributeFilter { Type = (SearchFilterTypes)filter.Type }; switch (filter.Type) { case SearchRequestFilterTypes.Present: result.AttributeName = filter.Value; break; case SearchRequestFilterTypes.EqualityMatch: case SearchRequestFilterTypes.GreaterOrEqual: case SearchRequestFilterTypes.LessOrEqual: case SearchRequestFilterTypes.ApproxMatch: result.AttributeName = filter.Attribute.AttributeDescription.Value; result.AttributeValue = filter.Attribute.AssertionValue.Value; break; case SearchRequestFilterTypes.Or: case SearchRequestFilterTypes.And: foreach (var f in filter.Filters) { var child = Build(f); result.Filters.Add(child); } break; } return(result); }
public SearchRequestFilter BuildPresentFilter(string name) { var filter = new SearchRequestFilter { Type = SearchRequestFilterTypes.Present, Value = name }; return(filter); }
public MappedSearchRequestFilter Map(SearchRequestFilter filter) { var result = new MappedSearchRequestFilter { Exclude = filter.Exclude, Mode = filter.Mode, ProcessBeforeAggregation = filter.ProcessBeforeAggregation, Values = filter.Values, Column = ColumnProvider.GetColumnMapping(_constants.DataSourceId, filter.ColumnId.Value) }; return(result); }
public SearchRequestFilter BuildLessOrEqualFilter(string name, string value) { var filter = new SearchRequestFilter { Type = SearchRequestFilterTypes.LessOrEqual, Attribute = new AttributeValueAssertion { AttributeDescription = new DEROctetString(name), AssertionValue = new DEROctetString(value) } }; return(filter); }
public SearchRequestFilter BuildOrFilter(IEnumerable <Func <FilterBuilder, SearchRequestFilter> > callbacks) { var filters = new List <SearchRequestFilter>(); foreach (var cb in callbacks) { filters.Add(cb(this)); } var filter = new SearchRequestFilter { Type = SearchRequestFilterTypes.Or, Filters = filters }; return(filter); }
public static SearchRequest Extract(ICollection <byte> buffer) { var searchRequest = new SearchRequest(); searchRequest.BaseObject = DEROctetString.Extract(buffer); searchRequest.Scope = DEREnumerated <SearchRequestScopes> .Extract(buffer); searchRequest.DeferAlias = DEREnumerated <SearchRequestDeferAliases> .Extract(buffer); searchRequest.SizeLimit = DERInteger.Extract(buffer); searchRequest.TimeLimit = DERInteger.Extract(buffer); searchRequest.TypesOnly = DERBoolean.Extract(buffer); searchRequest.Filter = SearchRequestFilter.Extract(buffer); searchRequest.Attributes = DERSequence <DEROctetString> .Extract(buffer); return(searchRequest); }
private Func <RegisteredEntity, bool> SearchRequestFilterToMatcherFunc(SearchRequestFilter filter) { return(registeredEntity => { foreach (var entity in registeredEntity.Entities) { var property = EntityProperties.SingleOrDefault(p => p.Name.Equals(filter.Field, StringComparison.InvariantCultureIgnoreCase)); if (property == null) { throw new Exception($"Cannot find Entity property with name {filter.Field}"); } var value = property.GetValue(entity)?.ToString(); var isMatch = false; switch (filter.Operator) { case DataOperator.Equals: isMatch = filter.Value.Equals(value, StringComparison.InvariantCultureIgnoreCase); break; case DataOperator.IsNull: isMatch = value == null; break; default: throw new Exception($"Operator {filter.Operator} is not supported (Used matching {filter.Field})"); } if (isMatch) { return true; } } return false; }); }
public void SetPresentFilter(string name) { var builder = new FilterBuilder(); _filter = builder.BuildPresentFilter(name); }
public void SetOrFilter(IEnumerable <Func <FilterBuilder, SearchRequestFilter> > callbacks) { var builder = new FilterBuilder(); _filter = builder.BuildOrFilter(callbacks); }
public void SetApproxMatchFilter(string name, string value) { var builder = new FilterBuilder(); _filter = builder.BuildApproxMatchFilter(name, value); }
public void SetLessOrEqualFilter(string name, string value) { var builder = new FilterBuilder(); _filter = builder.BuildLessOrEqualFilter(name, value); }