示例#1
0
        public void Add(Sentiment sentiment)
        {
            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                if (context.Sentiments.Any(s => s.Id == sentiment.Id))
                {
                    throw new SentimentException("An Sentiment with the same ID already exists.");
                }

                Exists(sentiment);

                Entities.Sentiment toAdd = Helper.Instance.ToSentimentEF(sentiment);
                context.Sentiments.Add(toAdd);
                context.SaveChanges();
                sentiment.Id = toAdd.Id;

                PhraseRepository      phraseRepository = new PhraseRepository();
                EntityAlarmRepository alarmRepository  = new EntityAlarmRepository();

                foreach (var phrase in Helper.Instance.GetPhrases(context.Phrases))
                {
                    try
                    {
                        phraseRepository.Modify(phrase.Id, phrase);
                    }
                    catch (AnalysisException) { }
                }

                foreach (var alarm in Helper.Instance.GetEntityAlarms(context.EntityAlarms).Where(a => a.Type == sentiment.Type && !a.IsEnabled()))
                {
                    alarmRepository.Modify(alarm.Id, alarm);
                }
            }
        }
        public void Add(Entity entity)
        {
            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                if (context.Entities.Any(e => e.Id == entity.Id))
                {
                    throw new EntityException("An Entity with the same ID already exists.");
                }

                Exists(entity);

                Entities.Entity toAdd = Helper.Instance.ToEntityEF(entity);
                context.Entities.Add(toAdd);
                context.SaveChanges();
                entity.Id = toAdd.Id;

                foreach (var phraseBD in context.Phrases.Where(p => p.Entity == null))
                {
                    PhraseRepository phraseRepository = new PhraseRepository();
                    var phrase = Helper.Instance.ToPhraseBL(phraseBD);

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

                    phraseRepository.Modify(phrase.Id, phrase);
                }
            }
        }
示例#3
0
        public void Modify(int?id, Sentiment sentiment)
        {
            if (!id.HasValue)
            {
                throw new SentimentException("You must select an Sentiment to modify.");
            }

            PhraseRepository      phraseRepository = new PhraseRepository();
            EntityAlarmRepository alarmRepository  = new EntityAlarmRepository();

            using (SentimentAnalysisContext context = new SentimentAnalysisContext())
            {
                var sentimentFound = context.Sentiments.FirstOrDefault(s => s.Id == id);

                if (id != sentiment.Id || !sentimentFound.Word.Equals(sentiment.Word))
                {
                    Exists(sentiment);
                }

                SentimentType oldType = sentimentFound.Type;

                sentimentFound.Word = sentiment.Word;
                sentimentFound.Type = sentiment.Type;

                context.Sentiments.AddOrUpdate(sentimentFound);
                context.SaveChanges();

                foreach (var phrase in Helper.Instance.GetPhrases(context.Phrases).Where(p => p.Type == null || p.Type == oldType))
                {
                    phrase.Type   = null;
                    phrase.Entity = null;

                    try
                    {
                        phrase.AnalyzePhrase(Helper.Instance.GetEntities(context.Entities), Helper.Instance.GetSentiments(context.Sentiments));
                        phraseRepository.Modify(phrase.Id, phrase);
                    }
                    catch (AnalysisException)
                    {
                        phraseRepository.Modify(phrase.Id, phrase);
                    }
                    catch (Exception e)
                    {
                        throw e;
                    }
                }

                foreach (var alarm in Helper.Instance.GetEntityAlarms(context.EntityAlarms))
                {
                    alarm.ReAnalyePhrases(Helper.Instance.GetPhrases(context.Phrases));
                    alarmRepository.Modify(alarm.Id, alarm);
                }
            }
        }
        public void Modify(int?id, Entity entity)
        {
            if (!id.HasValue)
            {
                throw new EntityException("You must select an Entity to modify.");
            }

            PhraseRepository      phraseRepository = new PhraseRepository();
            EntityAlarmRepository alarmRepository  = new EntityAlarmRepository();

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

                if (id != entity.Id || !entityFound.Name.Equals(entity.Name))
                {
                    Exists(entity);
                }

                entityFound.Name = entity.Name;

                context.SaveChanges();

                foreach (var phrase in context.Phrases.Where(p => p.Entity == null || p.Entity.Id == entityFound.Id))
                {
                    phrase.Entity = null;

                    try
                    {
                        Phrase toModify = Helper.Instance.ToPhraseBL(phrase);
                        toModify.AnalyzePhrase(Helper.Instance.GetEntities(context.Entities), Helper.Instance.GetSentiments(context.Sentiments));
                        phraseRepository.Modify(phrase.Id, toModify);
                    }
                    catch (AnalysisException) { }
                }

                foreach (var alarm in context.EntityAlarms.ToList())
                {
                    EntityAlarm toModify = Helper.Instance.ToEntityAlarmBL(alarm);
                    toModify.ReAnalyePhrases(Helper.Instance.GetPhrases(context.Phrases));
                    alarmRepository.Modify(alarm.Alarm.Id, toModify);
                }
            }
        }
示例#5
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) { }
                }
            }
        }