private static void RemoveFilterDescriptorPrefix(CompositeFilterDescriptor descriptors) { for (var i = descriptors.FilterDescriptors.Count - 1; i >= 0; i--) { var descriptor = descriptors.FilterDescriptors[i]; var compositeFilterDescriptor = descriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { RemoveFilterDescriptorPrefix(compositeFilterDescriptor); if (compositeFilterDescriptor.FilterDescriptors.Count == 0) { descriptors.FilterDescriptors.Remove(descriptor); } continue; } var filterDescriptor = descriptor as FilterDescriptor; if (filterDescriptor != null) { if (filterDescriptor.Member.Contains(".")) { filterDescriptor.Member = filterDescriptor.Member.Split(new[] { "." }, StringSplitOptions.RemoveEmptyEntries).Last(); } } } }
private static void RemoveFilterDescriptorByPrefix(CompositeFilterDescriptor descriptors, string prefix) { for (var i = descriptors.FilterDescriptors.Count - 1; i >= 0; i--) { var descriptor = descriptors.FilterDescriptors[i]; var compositeFilterDescriptor = descriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { RemoveFilterDescriptorByPrefix(compositeFilterDescriptor, prefix); if (compositeFilterDescriptor.FilterDescriptors.Count == 0) { descriptors.FilterDescriptors.Remove(descriptor); } continue; } var filterDescriptor = descriptor as FilterDescriptor; if (filterDescriptor != null) { if (filterDescriptor.Member.StartsWith(prefix + ".")) { descriptors.FilterDescriptors.Remove(descriptor); } } } }
private static bool IsContainsFilterDescriptorPrefix(CompositeFilterDescriptor descriptors, string prefix) { for (var i = descriptors.FilterDescriptors.Count - 1; i >= 0; i--) { var descriptor = descriptors.FilterDescriptors[i]; var compositeFilterDescriptor = descriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { var value = IsContainsFilterDescriptorPrefix(compositeFilterDescriptor, prefix); if (value) { return(true); } continue; } var filterDescriptor = descriptor as FilterDescriptor; if (filterDescriptor != null) { if (filterDescriptor.Member.Contains(prefix + ".")) { return(true); } } } return(false); }
private static void FindInCompositeFilterDescriptor(CompositeFilterDescriptor descriptors, string memberName) { for (var i = descriptors.FilterDescriptors.Count - 1; i >= 0; i--) { var descriptor = descriptors.FilterDescriptors[i]; var compositeFilterDescriptor = descriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { FindInCompositeFilterDescriptor(compositeFilterDescriptor, memberName); if (compositeFilterDescriptor.FilterDescriptors.Count == 0) { descriptors.FilterDescriptors.Remove(descriptor); } continue; } var filterDescriptor = descriptor as FilterDescriptor; if (filterDescriptor != null) { if (filterDescriptor.Member == memberName) { descriptors.FilterDescriptors.Remove(descriptor); } } } }
public void StartVisit(ILogicalNode logicalNode) { var filterDescriptor1 = new CompositeFilterDescriptor { LogicalOperator = logicalNode.LogicalOperator }; var filterDescriptor2 = CurrentDescriptor as CompositeFilterDescriptor; if (filterDescriptor2 != null) { filterDescriptor2.FilterDescriptors.Add(filterDescriptor1); } context.Push(filterDescriptor1); }
private static object GetFilterDescriptionValue(CompositeFilterDescriptor descriptors, string name) { for (var i = descriptors.FilterDescriptors.Count - 1; i >= 0; i--) { var descriptor = descriptors.FilterDescriptors[i]; var compositeFilterDescriptor = descriptor as CompositeFilterDescriptor; if (compositeFilterDescriptor != null) { return(GetFilterDescriptionValue(compositeFilterDescriptor, name)); } var filterDescriptor = descriptor as FilterDescriptor; if (filterDescriptor != null) { if (filterDescriptor.Member == name) { return(filterDescriptor.Value); } } } return(null); }