示例#1
0
        public void getTypes(String LocalFilePath)
        {
            var ext = new List <string> {
                ".java"
            };
            //TODO: Project path eka UI eken aragen danda
            var myFiles = Directory.GetFiles(@LocalFilePath, "*.*", SearchOption.AllDirectories)
                          .Where(s => ext.Any(e => s.EndsWith(e)));

            using (var _cycloneEntities = new cycloneEntities())
            {
                string analyzerid = _cycloneEntities.source_analyzer.OrderByDescending(a => a.processed_time).FirstOrDefault().analyzer_id;
                var    filesList  = _cycloneEntities.clone_class.Where(a => a.analyzer_id == analyzerid).ToList();
                foreach (clone_class cloneclass in filesList)
                {
                    var fragmentList = _cycloneEntities.clone_fragment.Where(a => a.analyzer_id == analyzerid && a.clone_class_id == cloneclass.cloneclass_id).ToList();
                    foreach (clone_fragment cf in fragmentList)
                    {
                        int i = 0;
                        if (i > 0)
                        {
                            break;
                        }
                        String CodeBlockI = getCodeByStartAndEnd(cf.source_path, cf.start_line, cf.end_line);
                        bool   isTypeII   = false;
                        for (int j = 0; j < fragmentList.Count; j++)
                        {
                            if (i < j)
                            {
                                String CodeBlockII = getCodeByStartAndEnd(fragmentList[j].source_path,
                                                                          fragmentList[j].start_line, fragmentList[j].end_line);
                                Boolean status = CompareCodeBlocks(CodeBlockI, CodeBlockII);

                                if (!status)
                                {
                                    isTypeII = true;
                                    break;
                                }
                            }
                        }
                        clone_class cloneClass = _cycloneEntities.clone_class.Where(a => a.cloneclass_id == cloneclass.cloneclass_id && a.analyzer_id == cloneclass.analyzer_id).FirstOrDefault();
                        if (isTypeII)
                        {
                            cloneClass.clone_class_type = "Type2";
                        }
                        else
                        {
                            cloneClass.clone_class_type = "Type1";
                        }
                        _cycloneEntities.clone_class.Attach(cloneClass);
                        var entry = _cycloneEntities.Entry(cloneClass);
                        entry.Property(e => e.clone_class_type).IsModified = true;
                        _cycloneEntities.SaveChanges();
                        i++;
                    }
                }
            }
        }