Esempio n. 1
0
 internal void RefactorActionPropertyRemoved(Property item)
 {
     if (item.PropertyType == PropertyType.Attribute)
     {
         DynamicEntityValues.Remove(item.Name);
     }
     else
     {
         DynamicEntityLinks.Remove(item.Name);
     }
 }
Esempio n. 2
0
        internal void RefactorActionPropertyAdded(Property item)
        {
            if (item.PropertyType == PropertyType.Attribute || item.Relationship is null)
            {
                return;
            }

            if (item.Relationship.IsTimeDependent)
            {
                DynamicEntityLinks.Add(item.Name, new EntityTimeCollection <DynamicEntity>(this, item));
            }
            else
            {
                DynamicEntityLinks.Add(item.Name, new EntityCollection <DynamicEntity>(this, item));
            }
        }
Esempio n. 3
0
        internal void RefactorActionPropertyRenamed(string oldname, Property item, MergeAlgorithm mergeAlgorithm = MergeAlgorithm.NotApplicable)
        {
            if (item.PropertyType == PropertyType.Attribute)
            {
                switch (mergeAlgorithm)
                {
                case MergeAlgorithm.NotApplicable:
                case MergeAlgorithm.ThrowOnConflict:
                {
                    object?oldvalue;
                    if (DynamicEntityValues.TryGetValue(oldname, out oldvalue))
                    {
                        DynamicEntityValues.Add(item.Name, oldvalue);
                        DynamicEntityValues.Remove(oldname);
                    }
                    break;
                }

                case MergeAlgorithm.PreferSource:
                {
                    object?oldvalue;
                    if (DynamicEntityValues.TryGetValue(oldname, out oldvalue))
                    {
                        if (DynamicEntityValues.ContainsKey(item.Name))
                        {
                            DynamicEntityValues[item.Name] = oldvalue;
                        }
                        else
                        {
                            DynamicEntityValues.Add(item.Name, oldvalue);
                        }
                        DynamicEntityValues.Remove(oldname);
                    }
                    break;
                }

                case MergeAlgorithm.PreferTarget:
                {
                    if (!DynamicEntityValues.ContainsKey(item.Name))
                    {
                        object?oldvalue;
                        if (DynamicEntityValues.TryGetValue(oldname, out oldvalue))
                        {
                            DynamicEntityValues.Add(item.Name, oldvalue);
                            DynamicEntityValues.Remove(oldname);
                        }
                    }
                    break;
                }

                default:
                    throw new NotImplementedException();
                }
            }
            else
            {
                switch (mergeAlgorithm)
                {
                case MergeAlgorithm.NotApplicable:
                case MergeAlgorithm.ThrowOnConflict:
                {
                    EntityCollectionBase <DynamicEntity>?oldvalue;
                    if (DynamicEntityLinks.TryGetValue(oldname, out oldvalue))
                    {
                        DynamicEntityLinks.Add(item.Name, oldvalue);
                        DynamicEntityLinks.Remove(oldname);
                    }
                    break;
                }

                case MergeAlgorithm.PreferSource:
                {
                    EntityCollectionBase <DynamicEntity>?oldvalue;
                    if (DynamicEntityLinks.TryGetValue(oldname, out oldvalue))
                    {
                        if (DynamicEntityLinks.ContainsKey(item.Name))
                        {
                            DynamicEntityLinks[item.Name] = oldvalue;
                        }
                        else
                        {
                            DynamicEntityLinks.Add(item.Name, oldvalue);
                        }
                        DynamicEntityLinks.Remove(oldname);
                    }
                    break;
                }

                case MergeAlgorithm.PreferTarget:
                {
                    if (!DynamicEntityLinks.ContainsKey(item.Name))
                    {
                        EntityCollectionBase <DynamicEntity>?oldvalue;
                        if (DynamicEntityLinks.TryGetValue(oldname, out oldvalue))
                        {
                            DynamicEntityLinks.Add(item.Name, oldvalue);
                            DynamicEntityLinks.Remove(oldname);
                        }
                    }
                    break;
                }

                default:
                    throw new NotImplementedException();
                }
            }
        }