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 }
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)); }
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>()); }