Exemplo n.º 1
0
        private void AddTagAssociation(TagAssociation tagAssociation)
        {
            if (tagAssociation.IsDisabled)
            {
                TagAssociation ta;
                TagAssociations.TryRemove(tagAssociation.Id, out ta);
                ConcurrentDictionary <long, long> mtl;
                if (MentionTagLookup.TryRemove(tagAssociation.MentionId, out mtl))
                {
                    long id;
                    mtl.TryRemove(tagAssociation.TagId, out id);
                }
                Mention m;
                if (Mentions.TryGetValue(tagAssociation.MentionId, out m))
                {
                    if (m.Tags.Contains(tagAssociation.TagId))
                    {
                        m.Tags.Remove(tagAssociation.TagId);
                    }
                }
            }
            else
            {
                if (!ReferenceEquals(TagAssociations.AddOrUpdate(tagAssociation.Id, tagAssociation, (x, y) => y), tagAssociation))
                {
                    return;
                }

                MentionTagLookup.AddOrUpdate(tagAssociation.MentionId,
                                             new ConcurrentDictionary <long, long>(new KeyValuePair <long, long>[] { new KeyValuePair <long, long>(tagAssociation.TagId, tagAssociation.Id) }),
                                             (x, y) => { y.AddOrUpdate(tagAssociation.TagId, tagAssociation.Id, (j, k) => { return(k); }); return(y); });

                Mention mention;

                if (!Mentions.TryGetValue(tagAssociation.MentionId, out mention))
                {
                    return;
                }

                if (mention.Tags == null || !mention.Tags.Contains(tagAssociation.TagId))
                {
                    if (mention.Tags == null)
                    {
                        mention.Tags = new List <long>();
                    }
                    mention.Tags.Add(tagAssociation.TagId);
                }
            }
        }
Exemplo n.º 2
0
        private void AddTagAssociation(TagAssociation tagAssociation)
        {
            if (tagAssociation.IsDisabled)
            {
                TagAssociation ta;
                TagAssociations.TryRemove(tagAssociation.Id, out ta);
                ConcurrentDictionary<long, long> mtl;
                if (MentionTagLookup.TryRemove(tagAssociation.MentionId, out mtl))
                {
                    long id;
                    mtl.TryRemove(tagAssociation.TagId, out id);
                }
                Mention m;
                if (Mentions.TryGetValue(tagAssociation.MentionId, out m))
                {
                    if(m.Tags.Contains(tagAssociation.TagId))
                        m.Tags.Remove(tagAssociation.TagId);
                }
            }
            else
            {
                if (!ReferenceEquals(TagAssociations.AddOrUpdate(tagAssociation.Id, tagAssociation, (x, y) => y), tagAssociation))
                {
                    return;
                }

                MentionTagLookup.AddOrUpdate(tagAssociation.MentionId,
                    new ConcurrentDictionary<long, long>(new KeyValuePair<long, long>[] { new KeyValuePair<long, long>(tagAssociation.TagId, tagAssociation.Id) }),
                    (x, y) => { y.AddOrUpdate(tagAssociation.TagId, tagAssociation.Id, (j, k) => { return k; }); return y; });

                Mention mention;

                if (!Mentions.TryGetValue(tagAssociation.MentionId, out mention))
                {
                    return;
                }

                if (mention.Tags == null || !mention.Tags.Contains(tagAssociation.TagId))
                {
                    if (mention.Tags == null) mention.Tags = new List<long>();
                    mention.Tags.Add(tagAssociation.TagId);
                }
            }
        }