// set plagiarism result in percentage private void SetPlagiarismPercentage() { try { double percentage = 0; var sourceFileList = SourceFileContent.Distinct().ToList(); var compareResultsList = CompareResultBag.GroupBy(item => item.matchText) .Select(grp => grp.OrderBy(item => item.matchText).First()) .ToList(); if (sourceFileList.Count > 0 && compareResultsList.Count > 0) { percentage = Convert.ToDouble((double)compareResultsList.Count / (double)sourceFileList.Count) * 100; } labelPalagrismPer.Visible = true; labelPalagrismResult.Visible = true; labelPalagrismResult.Text = Math.Round(percentage, 2).ToString() + "%"; } catch (Exception ex) { throw ex; } }
// compare directory file content with browsed file content private void CompareFile(int i, string[] filesList) { try { string fileContent = GetFileText(filesList[i]); if (!string.IsNullOrEmpty(fileContent.Trim())) { foreach (string text in SourceFileContent) { if (fileContent.Replace(" ", "").ToLower().Trim().Contains(text.Replace(" ", "").ToLower().Trim())) { CompareResult compareResult = new CompareResult(); compareResult.matchText = text; compareResult.filePath = filesList[i]; // set value of chracter tracing compareResult.charTracing = SetCharTracingText(fileContent, text); CompareResultBag.Add(compareResult); } else { // for testing only CompareResult compareResult = new CompareResult(); compareResult.matchText = text; compareResult.filePath = filesList[i]; UnMatchResultBag.Add(compareResult); } } var fileMatchWords = CompareResultBag.Where(x => x.filePath == filesList[i]); if (fileMatchWords != null && fileMatchWords.ToList().Count > 0) { var compareResultsList = fileMatchWords.GroupBy(item => item.matchText) .Select(grp => grp.OrderBy(item => item.matchText).First()) .ToList(); double totalMatchWords = (double)compareResultsList.Count; double fileWordsWithCombination = SourceFileContent.Distinct().ToList().Count; double percentage = Convert.ToDouble(totalMatchWords / fileWordsWithCombination) * 100; fileMatchWords.FirstOrDefault().filePercentage = Math.Round(percentage, 2).ToString() + "%"; } } } catch (Exception ex) { throw ex; } }
private void compareButton_Click(object sender, EventArgs e) { try { // reset form values ResetFormValues(); if (string.IsNullOrEmpty(filePathtextBox.Text.Trim())) { MessageBox.Show("Compare file is missing", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else if (string.IsNullOrEmpty(dirPathtextBox.Text.Trim())) { MessageBox.Show("Compare directory is missing", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { // get all files from directory string[] filesList = Directory.GetFiles(dirPathtextBox.Text.Trim(), "*.*", SearchOption.AllDirectories); // prepare splited source file content SourceFileContent = new List <string>(); SourceFileContent = PrepareSplitFileContent(filePathtextBox.Text.Trim()); // compare directory files content with browsed file content CompareFiles(filesList); if (CompareResultBag.Count == 0) { MessageBox.Show("No Plagiarism found! File is 100% identical.", "Plagiarism Result", MessageBoxButtons.OK, MessageBoxIcon.Information); } // populate results into grid dataGridView.DataSource = CompareResultBag.ToList(); // set plagiarism result in percentage SetPlagiarismPercentage(); } } catch (Exception ex) { MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } }