public void TestFilters() { using (var stream = File.OpenRead(@"C:\Users\dwn.GAIA2000\Dropbox\KNX Utveckling\Projekt\GAIA ver 7.0b.knxproj")) { var store = ProjectStore.Load(stream); var model = ObjectModelFactory.BuildModel(store); var filter = new Filter(); filter.Filters = new List<FilterDefinition>(); var fd = new FilterDefinition(FilterKinds.GroupAddressDescription, FilterTypes.EqualTo, FilterActions.Include, "Kontor"); string toMatch = "Kon"; var sugg = Filter.GetSuggestions(fd, model); Stopwatch sw = new Stopwatch(); sw.Start(); var t1 = LevenshteinDistance.SuggestMatches(toMatch, sugg, 20).ToList(); sw.Stop(); var e1 = sw.ElapsedMilliseconds; sw.Reset(); toMatch = "Konto"; sw.Start(); var t2 = LevenshteinDistance.SuggestMatches(toMatch, sugg, 20).ToList(); sw.Stop(); var e2 = sw.ElapsedMilliseconds; var r1 = filter.GetFilterResult(model); } }
public static IEnumerable<string> GetSuggestions(FilterDefinition filter, Model model) { return model.Project.Devices.SelectMany(row => row.ComObjectInstances) .SelectMany(row => filter.Iterate(row) .Where(r1 => !string.IsNullOrEmpty(r1))) .OrderBy(row => row) .Distinct(); }
public static IEnumerable<GroupAddressInstance> ApplyFilter(this IEnumerable<GroupAddressInstance> list, FilterDefinition filter) { return filter.ApplyFilter(list); }
public static IEnumerable<ComObjectInstance> ApplyFilter(this IEnumerable<ComObjectInstance> list, FilterDefinition filter) { return filter.ApplyFilter(list); }
public void TestPatterns() { using (var stream = File.OpenRead(@"C:\Users\dwn.GAIA2000\Dropbox\KNX Utveckling\Projekt\GAIA ver 7.0b.knxproj")) { var store = ProjectStore.Load(stream); var model = ObjectModelFactory.BuildModel(store); var filter = new Filter(); filter.Filters = new List<FilterDefinition>(); var fd = new FilterDefinition(FilterKinds.GroupAddressDescription, FilterTypes.EqualTo, FilterActions.Include, "Kontor"); //filter.Filters.Add(fd); var toTest = filter.GetFilterResult(model); var result = PatternFinder.FindPatterns<GroupAddressInstance>(toTest.Select(row => row.GroupAddress), (row => row.Ref.Name)).ToList(); } }