public Task SerializeAsync(IReadOnlyList <IDataItem> items, string path) { return(Task.Run(() => { try { Log.Debug($"Saving model layout to {path}"); List <JsonSaveTypes.Node> nodes = ToSaveNodes(items); AddLinesToNodes(items, nodes); JsonSaveTypes.Model dataModel = new JsonSaveTypes.Model { Nodes = nodes }; Serialize(path, dataModel); } catch (UnauthorizedAccessException e) { Log.Debug($"Failed to save model layout to {path}, {e.Message}"); } catch (Exception e) { Log.Exception(e, $"Failed to save model layout to {path}"); } })); }
public Task SerializeMergedAsync(IReadOnlyList <IDataItem> items, string path) { return(Task.Run(() => { try { Log.Debug($"Saving merged model layout to {path}"); Timing t = Timing.Start(); List <JsonSaveTypes.Node> nodes = ToSaveNodes(items); AddLinesToNodes(items, nodes); nodes = MergeInPreviousSavedNodes(path, nodes); JsonSaveTypes.Model dataModel = new JsonSaveTypes.Model { Nodes = nodes }; Serialize(path, dataModel); t.Log("Saved model layout"); } catch (UnauthorizedAccessException e) { Log.Debug($"Failed to save {path}, {e.Message}"); } catch (Exception e) { Log.Exception(e, $"Failed to serialize to {path}"); } })); }
private static Dictionary <string, JsonSaveTypes.Node> GetPreviousNodes(string path) { var previousNodes = new Dictionary <string, JsonSaveTypes.Node>(); try { JsonSaveTypes.Model model = Deserialize <JsonSaveTypes.Model>(path); if (model.FormatVersion == JsonSaveTypes.Version) { List <JsonSaveTypes.Node> nodes = model.Nodes; foreach (JsonSaveTypes.Node node in nodes) { previousNodes[node.N] = node; } } } catch (Exception e) { Log.Exception(e, $"Failed to deserialize {path}"); } return(previousNodes); }