Exemplo n.º 1
0
        private static IEnumerable <IGrouping <int, T> > ToGroupBy <T>(IClustering <T> engine, IEnumerable <T> source)
        {
            if (engine is null)
            {
                throw new ArgumentNullException(nameof(engine));
            }
            else if (source is null)
            {
                throw new ArgumentNullException(nameof(source));
            }

            Dictionary <int, List <T> > result = new();

            foreach (var(item, cluster) in engine.Clusterize(source))
            {
                if (result.TryGetValue(cluster, out var list))
                {
                    list.Add(item);
                }
                else
                {
                    result.Add(cluster, new List <T>()
                    {
                        item
                    });
                }
            }

            int index = 0;

            foreach (var pair in result.OrderBy(p => p.Key))
            {
                yield return(new Grouping <int, T>(index++, pair.Value));
            }
        }
        private void Clustering(IClustering clusterAlgorithm)
        {
            DialogResult dialogResult = openClassMethodsFile.ShowDialog();

            if (dialogResult == DialogResult.OK)
            {
                string inputfile = openClassMethodsFile.FileName;

                Dictionary <string, List <string> > rawClasses = ClassParser.ReadClassEntities(inputfile);

                List <INode> clusters = initializeClusters(rawClasses);

                List <INode> clustered = clusterAlgorithm.Clusterize(clusters);

                ReloadTree(clustered[0]);
            }
        }