public ApiController( AntiPlagiarismDb db, ISubmissionsRepo submissionsRepo, ISnippetsRepo snippetsRepo, ITasksRepo tasksRepo, IClientsRepo clientsRepo, IWorkQueueRepo workQueueRepo, IMostSimilarSubmissionsRepo mostSimilarSubmissionsRepo, IManualSuspicionLevelsRepo manualSuspicionLevelsRepo, PlagiarismDetector plagiarismDetector, CodeUnitsExtractor codeUnitsExtractor, IServiceScopeFactory serviceScopeFactory, NewSubmissionHandler newSubmissionHandler, IOptions <AntiPlagiarismConfiguration> configuration) : base(clientsRepo, db) { this.submissionsRepo = submissionsRepo; this.snippetsRepo = snippetsRepo; this.tasksRepo = tasksRepo; this.workQueueRepo = workQueueRepo; this.mostSimilarSubmissionsRepo = mostSimilarSubmissionsRepo; this.manualSuspicionLevelsRepo = manualSuspicionLevelsRepo; this.plagiarismDetector = plagiarismDetector; this.codeUnitsExtractor = codeUnitsExtractor; this.newSubmissionHandler = newSubmissionHandler; this.serviceScopeFactory = serviceScopeFactory; this.configuration = configuration.Value; }
private async Task UpdateSnippetsFromSubmissionAsync(ISnippetsRepo snippetsRepo, Submission submission) { var occurences = new HashSet <Tuple <int, int> >( (await snippetsRepo.GetSnippetsOccurrencesForSubmissionAsync(submission).ConfigureAwait(false)) .Select(o => Tuple.Create(o.SnippetId, o.FirstTokenIndex)) ); foreach (var(firstTokenIndex, snippet) in submissionSnippetsExtractor.ExtractSnippetsFromSubmission(submission)) { var foundSnippet = await snippetsRepo.GetOrAddSnippetAsync(snippet); if (!occurences.Contains(Tuple.Create(foundSnippet.Id, firstTokenIndex))) { log.Info($"Информация о сниппете #{foundSnippet.Id} в решении #{submission.Id} не найдена, добавляю"); try { await snippetsRepo.AddSnippetOccurenceAsync(submission, foundSnippet, firstTokenIndex, configuration.AntiPlagiarism.SubmissionInfluenceLimitInMonths); } catch (Exception e) { log.Error(e, $"Ошибка при добавлении сниппета #{foundSnippet.Id} в решении #{submission.Id}"); } } } }
public PlagiarismDetector( ISnippetsRepo snippetsRepo, ISubmissionsRepo submissionsRepo, CodeUnitsExtractor codeUnitsExtractor, ILogger logger, IOptions <AntiPlagiarismConfiguration> options) { this.snippetsRepo = snippetsRepo; this.submissionsRepo = submissionsRepo; this.codeUnitsExtractor = codeUnitsExtractor; this.logger = logger; configuration = options.Value; }
public PlagiarismDetector( ISnippetsRepo snippetsRepo, ISubmissionsRepo submissionsRepo, IMostSimilarSubmissionsRepo mostSimilarSubmissionsRepo, CodeUnitsExtractor codeUnitsExtractor, IOptions <AntiPlagiarismConfiguration> options) { this.snippetsRepo = snippetsRepo; this.submissionsRepo = submissionsRepo; this.mostSimilarSubmissionsRepo = mostSimilarSubmissionsRepo; this.codeUnitsExtractor = codeUnitsExtractor; configuration = options.Value; }
public NewSubmissionHandler( ISubmissionsRepo submissionsRepo, ISnippetsRepo snippetsRepo, ITasksRepo tasksRepo, IWorkQueueRepo workQueueRepo, SubmissionSnippetsExtractor submissionSnippetsExtractor, IServiceScopeFactory serviceScopeFactory, IOptions <AntiPlagiarismConfiguration> configuration) { this.submissionsRepo = submissionsRepo; this.snippetsRepo = snippetsRepo; this.tasksRepo = tasksRepo; this.workQueueRepo = workQueueRepo; this.submissionSnippetsExtractor = submissionSnippetsExtractor; this.serviceScopeFactory = serviceScopeFactory; this.configuration = configuration.Value; }
public ApiController( ISubmissionsRepo submissionsRepo, ISnippetsRepo snippetsRepo, ITasksRepo tasksRepo, StatisticsParametersFinder statisticsParametersFinder, PlagiarismDetector plagiarismDetector, CodeUnitsExtractor codeUnitsExtractor, ILogger logger, IOptions <AntiPlagiarismConfiguration> configuration) : base(logger) { this.submissionsRepo = submissionsRepo; this.snippetsRepo = snippetsRepo; this.tasksRepo = tasksRepo; this.statisticsParametersFinder = statisticsParametersFinder; this.plagiarismDetector = plagiarismDetector; this.codeUnitsExtractor = codeUnitsExtractor; this.configuration = configuration.Value; }
public ApiController( AntiPlagiarismDb db, ISubmissionsRepo submissionsRepo, ISnippetsRepo snippetsRepo, ITasksRepo tasksRepo, IClientsRepo clientsRepo, StatisticsParametersFinder statisticsParametersFinder, PlagiarismDetector plagiarismDetector, CodeUnitsExtractor codeUnitsExtractor, SubmissionSnippetsExtractor submissionSnippetsExtractor, ILogger logger, IServiceScopeFactory serviceScopeFactory, IOptions <AntiPlagiarismConfiguration> configuration) : base(logger, clientsRepo, db) { this.submissionsRepo = submissionsRepo; this.snippetsRepo = snippetsRepo; this.tasksRepo = tasksRepo; this.statisticsParametersFinder = statisticsParametersFinder; this.plagiarismDetector = plagiarismDetector; this.codeUnitsExtractor = codeUnitsExtractor; this.submissionSnippetsExtractor = submissionSnippetsExtractor; this.serviceScopeFactory = serviceScopeFactory; this.configuration = configuration.Value; }