예제 #1
0
        private SyncAttempt <XElement> SerializeItem(TObject item, SyncSerializerOptions options)
        {
            if (serializer is ISyncOptionsSerializer <TObject> optionSerializer)
            {
                return(optionSerializer.Serialize(item, options));
            }

#pragma warning disable CS0618 // Type or member is obsolete
            return(serializer.Serialize(item));

#pragma warning restore CS0618 // Type or member is obsolete
        }
예제 #2
0
        virtual public uSyncAction Export(TObject item, string folder, HandlerSettings config)
        {
            if (item == null)
            {
                return(uSyncAction.Fail(nameof(item), typeof(TObject), ChangeType.Fail, "Item not set"));
            }

            var filename = GetPath(folder, item, config.GuidNames, config.UseFlatStructure);

            var attempt = serializer.Serialize(item);

            if (attempt.Success)
            {
                syncFileService.SaveXElement(attempt.Item, filename);
            }

            return(uSyncActionHelper <XElement> .SetAction(attempt, filename));
        }
예제 #3
0
        public virtual IEnumerable <uSyncChange> GetChanges(XElement node)
        {
            if (serializer.IsEmpty(node))
            {
                return(GetEmptyFileChanges(node).AsEnumerableOfOne());
            }

            if (!serializer.IsValid(node))
            {
                // not valid
                return(new uSyncChange()
                {
                    Change = ChangeDetailType.Error,
                    Name = "Invalid File",
                    OldValue = node.Name.LocalName
                }.AsEnumerableOfOne());;
            }

            if (serializer.IsCurrent(node) == ChangeType.NoChange)
            {
                return(new uSyncChange()
                {
                    Change = ChangeDetailType.NoChange,
                    Name = node.GetAlias(),
                }.AsEnumerableOfOne());
            }

            var changes = TrackChanges();

            var item = serializer.FindItem(node);

            if (item != null)
            {
                var current = serializer.Serialize(item);
                if (current.Success)
                {
                    return(CalculateChanges(changes, current.Item, node, "", ""));
                }
            }

            return(Enumerable.Empty <uSyncChange>());
        }