private async Task <ProcessingContext> StepProcessing(IParsedDocumentHolder reviewHolder) { if (reviewHolder == null) { throw new ArgumentNullException(nameof(reviewHolder)); } Document document; Document originalDocument = null; IParsedReview review = null; try { Monitor.ManualyCount(); originalDocument = await reviewHolder.GetOriginal().ConfigureAwait(false); document = await reviewHolder.GetParsed().ConfigureAwait(false); review = reviewManager(document).Create(); } catch (Exception ex) { log.LogError(ex, "Error"); document = originalDocument.CloneJson(); document.Status = Status.Error; } Monitor.Increment(); var context = new ProcessingContext(originalDocument, document, review); return(context); }
private async Task <IParsedDocumentHolder> SynchronizedReviews(IParsedDocumentHolder review) { if (Semaphore != null) { await Semaphore.WaitAsync().ConfigureAwait(false); } return(review); }
private static async Task <ISentence[]> GetSentence(IParsedDocumentHolder parsedDocument) { var sentences = new ConcurrentBag <ISentence>(); var doc = await parsedDocument.GetParsed().ConfigureAwait(false); var review = TestHelper.Instance.ContainerHelper.Resolve <Func <Document, IParsedReviewManager> >()(doc).Create(); foreach (var sentence in review.Sentences) { var sentiments = sentence.Occurrences.Where(item => item.IsSentiment).ToArray(); var hasPositive = sentiments.Any(item => item.Relationship.Sentiment.DataValue.IsPositive); var hasNegative = sentiments.Any(item => !item.Relationship.Sentiment.DataValue.IsPositive); if (hasNegative && hasPositive) { sentences.Add(sentence); } } return(sentences.ToArray()); }
private static async Task <IParsedDocumentHolder> ProcessItem(SemaphoreSlim semaphore, MainAspectHandler aspectHandler, IParsedDocumentHolder review) { try { await semaphore.WaitAsync().ConfigureAwait(false); Document parsedDoc = await review.GetParsed().ConfigureAwait(false); Text.Data.IParsedReview parseReview = TestHelper.Instance.ContainerHelper.Resolve <Func <Document, IParsedReviewManager> >()(parsedDoc).Create(); aspectHandler.Process(parseReview); return(review); } finally { semaphore.Release(); } }