Example #1
0
        /// <summary>
        ///  Overwrites the <paramref name="originalSet"/> entity with the changes tracked by this Delta resource set.
        /// </summary>
        /// <param name="originalSet">The original set.</param>
        public virtual void Patch(IEnumerable <T> originalSet)
        {
            if (originalSet == null)
            {
                throw Error.ArgumentNull(nameof(originalSet));
            }

            // TODO: work out the patch process
            foreach (IDeltaItem delta in this)
            {
                T originalObj = GetOriginal(delta, originalSet);

                switch (delta.Kind)
                {
                case DeltaKind.DeltaResource:
                    // A Delta resource is a delta
                    IDelta deltaResource = (IDelta)delta;
                    break;

                case DeltaKind.DeltaDeletedResource:
                    // A Delta deleted resource is a delta deleted resource
                    IDeltaDeletedResource deltaDeletedResource = (IDeltaDeletedResource)delta;
                    break;

                case DeltaKind.DeltaDeletedLink:
                    IDeltaDeletedLink deltaDeletedLink = (IDeltaDeletedLink)delta;
                    break;

                case DeltaKind.DeltaLink:
                    IDeltaLink deltaLink = (IDeltaLink)delta;
                    break;

                case DeltaKind.Unknown:
                default:
                    //throw Error.InvalidOperation(SRResources.CannotSetDynamicPropertyDictionary, propertyInfo.Name,
                    //    entity.GetType().FullName);
                    throw Error.InvalidOperation("Unknow delta kind");
                }
            }
        }
Example #2
0
        /// <summary>
        ///  Overwrites the <paramref name="originalSet"/> entity with the changes tracked by this Delta resource set.
        /// </summary>
        /// <remarks>
        /// TODO: this functionality hasn't finished yet. We'd like to get more feedback about how to
        /// patch the deltaset to the original data source.
        /// </remarks>
        /// <param name="originalSet">The original set.</param>
        internal void Patch(IEnumerable originalSet)
        {
            if (originalSet == null)
            {
                throw Error.ArgumentNull(nameof(originalSet));
            }

            // TODO: work out the patch process
            foreach (IDeltaSetItem delta in this)
            {
                T originalObj = GetOriginal(delta, originalSet);

                switch (delta)
                {
                case IDelta deltaResource:
                    IDeltaDeletedResource deltaDeleteResource = delta as IDeltaDeletedResource;
                    if (deltaDeleteResource != null)
                    {
                        // TODO: it's a delta deleted resource
                    }
                    else
                    {
                        // TODO: it's a normal (added, updated) resource
                    }
                    break;

                case IDeltaDeletedLink deltaDeletedLink:
                    // TODO: a delta deleted link
                    break;

                case IDeltaLink deltaLink:
                    // TODO: a delta added link
                    break;

                default:
                    throw Error.InvalidOperation($"Unknow delta type {delta.GetType()}");
                }
            }
        }