public void GetAllAlarms()
        {
            List <EntityAlarm> alarms = new List <EntityAlarm>();

            EntityRepository entityRepository = new EntityRepository();

            entityRepository.Add(ALARM.Entity);

            EntityAlarm newAlarm = new EntityAlarm("3", "1", SentimentType.NEGATIVE, ENTITY);

            alarms.Add(ALARM);
            alarms.Add(newAlarm);

            REPOSITORY.Add(ALARM);
            REPOSITORY.Add(newAlarm);

            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                var repositoryAlarms = Helper.Instance.GetEntityAlarms(context.EntityAlarms);

                Assert.IsTrue(repositoryAlarms.SequenceEqual(alarms));
            }
        }
        public void Delete(int?id)
        {
            if (id == null)
            {
                throw new EntityException("You must select an Entity to delete.");
            }

            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                Entities.Entity toRemove = context.Entities.FirstOrDefault(e => e.Id == id);

                if (toRemove == null)
                {
                    throw new EntityException("Entity not found.");
                }

                context.Entities.Remove(toRemove);

                foreach (var phrase in context.Phrases.Where(p => p.Entity != null && p.Entity.Id == toRemove.Id))
                {
                    phrase.Entity = null;
                }

                List <Entities.EntityAlarm> alarmsToDelete = new List <Entities.EntityAlarm>();
                foreach (var alarm in context.EntityAlarms.Where(a => a.Entity.Id == toRemove.Id))
                {
                    alarmsToDelete.Add(alarm);
                }

                foreach (var alarm in alarmsToDelete)
                {
                    context.EntityAlarms.Remove(alarm);
                }

                context.SaveChanges();
            }
        }
Example #3
0
 public IEnumerable <Phrase> GetAll()
 {
     try
     {
         using (SentimentAnalysisContext context = new SentimentAnalysisContext())
             return(Helper.Instance.GetPhrases(context.Phrases));
     }
     catch (SqlException)
     {
         throw new DatabaseException();
     }
     catch (DbException)
     {
         throw new DatabaseException();
     }
     catch (EntityException)
     {
         throw new DatabaseException();
     }
     catch (InvalidOperationException)
     {
         throw new DatabaseException();
     }
 }
Example #4
0
        public void Modify(int?id, Phrase phrase)
        {
            if (!id.HasValue)
            {
                throw new PhraseException("You must select an Phrase to modify.");
            }

            EntityAlarmRepository entityAlarmRepository = new EntityAlarmRepository();
            AuthorAlarmRepository authorAlarmRepository = new AuthorAlarmRepository();

            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                Phrase phraseFound = Get(id.Value);

                if (!phraseFound.Word.Equals(phrase.Word))
                {
                    Exists(phrase);
                }

                phraseFound.Word       = phrase.Word;
                phraseFound.PostedDate = phrase.PostedDate;
                phraseFound.Author     = phrase.Author;
                phraseFound.Type       = null;
                phraseFound.Entity     = null;

                try
                {
                    phraseFound.AnalyzePhrase(Helper.Instance.GetEntities(context.Entities), Helper.Instance.GetSentiments(context.Sentiments));
                }
                catch (AnalysisException) { }

                var toUpdate = context.Phrases.FirstOrDefault(p => p.Id == id);
                toUpdate.Word       = phraseFound.Word;
                toUpdate.PostedDate = phraseFound.PostedDate;
                toUpdate.Author     = context.Authors.AsNoTracking().ToList().First(a => a.Id == phraseFound.Author.Id);
                toUpdate.Type       = phraseFound.Type;
                toUpdate.Entity     = phraseFound.Entity != null?context.Entities.AsNoTracking().ToList().First(e => e.Id == phraseFound.Entity.Id) : null;

                toUpdate.Grade = phraseFound.Grade;

                context.Phrases.AddOrUpdate(toUpdate);

                ObjectStateEntry authorEntry = null;
                ObjectStateEntry entityEntry = null;

                if (toUpdate.Author != null)
                {
                    ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.TryGetObjectStateEntry(toUpdate.Author, out authorEntry);
                }

                if (toUpdate.Entity != null)
                {
                    ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.TryGetObjectStateEntry(toUpdate.Entity, out entityEntry);
                }

                if (authorEntry != null)
                {
                    ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(toUpdate.Author, toUpdate.Author.Id == phraseFound.Author.Id ? EntityState.Modified : EntityState.Unchanged);
                }

                if (entityEntry != null)
                {
                    ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(toUpdate.Entity, (phraseFound.Entity == null || toUpdate.Entity.Id == phraseFound.Entity.Id) ? EntityState.Modified : EntityState.Unchanged);
                }

                context.SaveChanges();

                foreach (var alarm in Helper.Instance.GetEntityAlarms(context.EntityAlarms))
                {
                    entityAlarmRepository.Modify(alarm.Id, alarm);
                }

                foreach (var alarm in Helper.Instance.GetAuthorAlarms(context.AuthorAlarms))
                {
                    authorAlarmRepository.Modify(alarm.Id, alarm);
                }
            }
        }
Example #5
0
 public bool IsEmpty()
 {
     using (SentimentAnalysisContext context = new SentimentAnalysisContext())
         return(!context.Phrases.Any());
 }
Example #6
0
        public void Add(Phrase phrase)
        {
            EntityAlarmRepository alarmEntityRepository = new EntityAlarmRepository();
            AuthorAlarmRepository authorAlarmRepository = new AuthorAlarmRepository();
            PhraseRepository      phraseRepository      = new PhraseRepository();

            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                if (context.Phrases.Any(p => p.Id == phrase.Id))
                {
                    throw new PhraseException("An Phrase with the same ID already exists.");
                }

                Exists(phrase);

                try
                {
                    phrase.AnalyzePhrase(Helper.Instance.GetEntities(context.Entities), Helper.Instance.GetSentiments(context.Sentiments));
                }
                catch (AnalysisException aex)
                {
                    throw aex;
                }
                catch (Exception e)
                {
                    throw e;
                }
                finally
                {
                    Entities.Phrase toAdd = Helper.Instance.ToPhraseEF(phrase);
                    context.Phrases.Add(toAdd);

                    ObjectStateEntry authorEntry = null;
                    ObjectStateEntry entityEntry = null;

                    if (toAdd.Author != null)
                    {
                        ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.TryGetObjectStateEntry(toAdd.Author, out authorEntry);
                    }

                    if (toAdd.Entity != null)
                    {
                        ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.TryGetObjectStateEntry(toAdd.Entity, out entityEntry);
                    }

                    if (authorEntry != null)
                    {
                        ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(toAdd.Author, EntityState.Unchanged);
                    }

                    if (entityEntry != null)
                    {
                        ((IObjectContextAdapter)context).ObjectContext.ObjectStateManager.ChangeObjectState(toAdd.Entity, toAdd.Entity.Id == phrase.Entity.Id ? EntityState.Modified : EntityState.Unchanged);
                    }

                    context.SaveChanges();
                    phrase.Id = toAdd.Id;

                    try
                    {
                        foreach (var alarm in Helper.Instance.GetEntityAlarms(context.EntityAlarms).Where(a => !a.IsEnabled() && a.Type == phrase.Type && a.Entity.Id == phrase.Entity.Id))
                        {
                            alarm.AnalyzePhrases(Helper.Instance.GetPhrases(context.Phrases));
                            alarmEntityRepository.Modify(alarm.Id, alarm);
                        }
                    }
                    catch (AnalysisException) { }

                    try
                    {
                        foreach (var alarm in Helper.Instance.GetAuthorAlarms(context.AuthorAlarms).Where(a => !a.IsEnabled() && a.Type == phrase.Type))
                        {
                            alarm.AnalyzePhrases(Helper.Instance.GetPhrases(context.Phrases));
                            authorAlarmRepository.Modify(alarm.Id, alarm);
                        }
                    }
                    catch (AnalysisException) { }
                }
            }
        }
 public void SetResult(SentimentAnalysisContext textAnalyticAnalysis)
 {
     TextAnalyticSentimentAnalysis = textAnalyticAnalysis;
 }
 public bool IsEmpty()
 {
     using (SentimentAnalysisContext context = new SentimentAnalysisContext())
         return(!context.EntityAlarms.Any());
 }
Example #9
0
 private static bool IsContextResponseDataNull(SentimentAnalysisContext context)
 {
     return(context == null || context.AnalysisResult == null || context.AnalysisResult.ResponseData == null || context.AnalysisResult.ResponseData.documents == null);
 }