Exemplo n.º 1
0
        public override IItemData EvaluateUpdate(IItemData sourceItem, IItemData targetItem)
        {
            Assert.ArgumentNotNull(targetItem, "targetItemData");
            Assert.ArgumentNotNull(sourceItem, "sourceItemData");

            var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>();

            _logger.Evaluated(sourceItem ?? targetItem);

            var result = _parentConfiguration.Resolve <IPredicate>().Includes(targetItem);

            // TODO: In reality, `result` should never come back null here. With the current tests it does however, and it's
            // ^&*"$*£"&(* to change them
            if (ShouldUpdateExisting(sourceItem, targetItem, deferredUpdateLog, result?.FieldValueManipulator))
            {
                using (new LogTransaction(_globalLogger))
                {
                    var changeHappened = _sourceDataStore.Save(targetItem, result?.FieldValueManipulator);

                    if (changeHappened)
                    {
                        _logger.SerializedUpdatedItem(targetItem);
                        deferredUpdateLog.ExecuteDeferredActions(_logger);
                    }
                }
                return(targetItem);
            }

            return(null);
        }
Exemplo n.º 2
0
        public ISourceItem EvaluateUpdate(ISerializedItem serializedItem, ISourceItem existingItem)
        {
            Assert.ArgumentNotNull(serializedItem, "serializedItem");
            Assert.ArgumentNotNull(existingItem, "existingItem");

            var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>();

            if (ShouldUpdateExisting(serializedItem, existingItem, deferredUpdateLog))
            {
                _logger.SerializedUpdatedItem(serializedItem);

                deferredUpdateLog.ExecuteDeferredActions(_logger);

                var updatedItem = DoDeserialization(serializedItem);

                return(updatedItem);
            }

            return(null);
        }
        public IItemData EvaluateUpdate(IItemData sourceItem, IItemData targetItem)
        {
            Assert.ArgumentNotNull(targetItem, "targetItemData");
            Assert.ArgumentNotNull(sourceItem, "sourceItemData");

            var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>();

            _logger.Evaluated(sourceItem ?? targetItem);

            if (ShouldUpdateExisting(sourceItem, targetItem, deferredUpdateLog))
            {
                _logger.SerializedUpdatedItem(targetItem);

                deferredUpdateLog.ExecuteDeferredActions(_logger);

                DoDeserialization(targetItem);

                return(targetItem);
            }

            return(null);
        }
        public override IItemData EvaluateUpdate(IItemData sourceItem, IItemData targetItem)
        {
            Assert.ArgumentNotNull(targetItem, "targetItemData");
            Assert.ArgumentNotNull(sourceItem, "sourceItemData");

            var deferredUpdateLog = new DeferredLogWriter <ISerializedAsMasterEvaluatorLogger>();

            _logger.Evaluated(sourceItem ?? targetItem);

            if (ShouldUpdateExisting(sourceItem, targetItem, deferredUpdateLog))
            {
                using (new LogTransaction(_globalLogger))
                {
                    _logger.SerializedUpdatedItem(targetItem);
                    deferredUpdateLog.ExecuteDeferredActions(_logger);

                    _sourceDataStore.Save(targetItem);
                }
                return(targetItem);
            }

            return(null);
        }