public IList <NoteInfo> ParseJsonNoteArray(Hyena.Json.JsonArray jsonArray) { if (jsonArray == null) { throw new ArgumentNullException("jsonArray does not contain a valid NoteInfo array representation"); } // TODO: Checks List <NoteInfo> noteList = new List <NoteInfo> (); foreach (Hyena.Json.JsonObject jsonObj in jsonArray) { noteList.Add(NoteInfo.ParseJson(jsonObj)); } return(noteList); }
private string CreateNoteChangesJsonString(IList <NoteInfo> noteUpdates, int?expectedNewRevision) { Hyena.Json.JsonObject noteChangesObj = new Hyena.Json.JsonObject(); Hyena.Json.JsonArray noteChangesArray = new Hyena.Json.JsonArray(); foreach (NoteInfo note in noteUpdates) { noteChangesArray.Add(note.ToUpdateObject()); } noteChangesObj [NoteChangesElementName] = noteChangesArray; if (expectedNewRevision != null) { noteChangesObj [LatestSyncRevisionElementName] = expectedNewRevision; } // TODO: Handle errors Hyena.Json.Serializer serializer = new Hyena.Json.Serializer(noteChangesObj); // TODO: Log this for debugging? return(serializer.Serialize()); }
private IList <NoteInfo> ParseJsonNotes(string jsonString, out int?latestSyncRevision) { Hyena.Json.Deserializer deserializer = new Hyena.Json.Deserializer(jsonString); object obj = deserializer.Deserialize(); Hyena.Json.JsonObject jsonObj = obj as Hyena.Json.JsonObject; Hyena.Json.JsonArray noteArray = (Hyena.Json.JsonArray)jsonObj [NotesElementName]; object val; if (jsonObj.TryGetValue(LatestSyncRevisionElementName, out val)) { latestSyncRevision = (int)val; } else { latestSyncRevision = null; } return(ParseJsonNoteArray(noteArray)); }
public static NoteInfo ParseJson(Hyena.Json.JsonObject jsonObj) { if (jsonObj == null) { throw new ArgumentException("jsonObj does not contain a valid NoteInfo representation"); } // TODO: Checks NoteInfo note = new NoteInfo(); note.Guid = (string)jsonObj ["guid"]; // TODO: Decide how much is required object val; if (jsonObj.TryGetValue(TitleElementName, out val)) { note.Title = (string)val; } if (jsonObj.TryGetValue(NoteContentElementName, out val)) { note.NoteContent = (string)val; } if (jsonObj.TryGetValue(NoteContentVersionElementName, out val)) { note.NoteContentVersion = (double)val; } if (jsonObj.TryGetValue(LastChangeDateElementName, out val)) { note.LastChangeDate = DateTime.Parse((string)val); } if (jsonObj.TryGetValue(LastMetadataChangeDateElementName, out val)) { note.LastMetadataChangeDate = DateTime.Parse((string)val); } if (jsonObj.TryGetValue(CreateDateElementName, out val)) { note.CreateDate = DateTime.Parse((string)val); } if (jsonObj.TryGetValue(LastSyncRevisionElementName, out val)) { note.LastSyncRevision = (int)val; } if (jsonObj.TryGetValue(OpenOnStartupElementName, out val)) { note.OpenOnStartup = (bool)val; } if (jsonObj.TryGetValue(PinnedElementName, out val)) { note.Pinned = (bool)val; } if (jsonObj.TryGetValue(TagsElementName, out val)) { Hyena.Json.JsonArray tagsJsonArray = (Hyena.Json.JsonArray)val; note.Tags = new List <string> (tagsJsonArray.Count); foreach (string tag in tagsJsonArray) { note.Tags.Add(tag); } } if (jsonObj.TryGetValue(ResourceReferenceElementName, out val)) { note.ResourceReference = ResourceReference.ParseJson((Hyena.Json.JsonObject)val); } return(note); }
public Hyena.Json.JsonObject ToUpdateObject() { Hyena.Json.JsonObject noteUpdateObj = new Hyena.Json.JsonObject(); if (string.IsNullOrEmpty(Guid)) { throw new InvalidOperationException("Cannot create a valid JSON representation without a Guid"); } noteUpdateObj [GuidElementName] = Guid; if (!string.IsNullOrEmpty(Command)) { noteUpdateObj [CommandElementName] = Command; return(noteUpdateObj); } if (Title != null) { noteUpdateObj [TitleElementName] = Title; } if (NoteContent != null) { noteUpdateObj [NoteContentElementName] = NoteContent; } if (NoteContentVersion.HasValue) { noteUpdateObj [NoteContentVersionElementName] = NoteContentVersion.Value; } if (LastChangeDate.HasValue) { noteUpdateObj [LastChangeDateElementName] = LastChangeDate.Value.ToString(NoteArchiver.DATE_TIME_FORMAT); } if (LastMetadataChangeDate.HasValue) { noteUpdateObj [LastMetadataChangeDateElementName] = LastMetadataChangeDate.Value.ToString(NoteArchiver.DATE_TIME_FORMAT); } if (CreateDate.HasValue) { noteUpdateObj [CreateDateElementName] = CreateDate.Value.ToString(NoteArchiver.DATE_TIME_FORMAT); } // TODO: Figure out what we do on client side for this // if (LastSyncRevision.HasValue) // noteUpdateObj [LastSyncRevisionElementName] = LastSyncRevision; if (OpenOnStartup.HasValue) { noteUpdateObj [OpenOnStartupElementName] = OpenOnStartup.Value; } if (Pinned.HasValue) { noteUpdateObj [PinnedElementName] = Pinned.Value; } if (Tags != null) { Hyena.Json.JsonArray tagArray = new Hyena.Json.JsonArray(); foreach (string tag in Tags) { tagArray.Add(tag); } noteUpdateObj [TagsElementName] = tagArray; } return(noteUpdateObj); }
private string CreateNoteChangesJsonString (IList<NoteInfo> noteUpdates, int? expectedNewRevision) { Hyena.Json.JsonObject noteChangesObj = new Hyena.Json.JsonObject (); Hyena.Json.JsonArray noteChangesArray = new Hyena.Json.JsonArray (); foreach (NoteInfo note in noteUpdates) noteChangesArray.Add (note.ToUpdateObject ()); noteChangesObj [NoteChangesElementName] = noteChangesArray; if (expectedNewRevision != null) noteChangesObj [LatestSyncRevisionElementName] = expectedNewRevision; // TODO: Handle errors Hyena.Json.Serializer serializer = new Hyena.Json.Serializer (noteChangesObj); // TODO: Log this for debugging? return serializer.Serialize (); }
public static NoteInfo ParseJson(Hyena.Json.JsonObject jsonObj) { if (jsonObj == null) { throw new ArgumentException("jsonObj does not contain a valid NoteInfo representation"); } // TODO: Checks NoteInfo note = new NoteInfo(); note.Guid = (string)jsonObj ["guid"]; // TODO: Decide how much is required object val = 0; string key = "<unknown>"; try { key = TitleElementName; if (jsonObj.TryGetValue(key, out val)) { note.Title = (string)val; } key = NoteContentElementName; if (jsonObj.TryGetValue(key, out val)) { note.NoteContent = (string)val; } key = NoteContentVersionElementName; if (jsonObj.TryGetValue(key, out val)) { note.NoteContentVersion = (double)val; } key = LastChangeDateElementName; if (jsonObj.TryGetValue(key, out val)) { note.LastChangeDate = DateTime.Parse((string)val); } key = LastMetadataChangeDateElementName; if (jsonObj.TryGetValue(key, out val)) { note.LastMetadataChangeDate = DateTime.Parse((string)val); } key = CreateDateElementName; if (jsonObj.TryGetValue(key, out val)) { note.CreateDate = DateTime.Parse((string)val); } key = LastSyncRevisionElementName; if (jsonObj.TryGetValue(key, out val)) { note.LastSyncRevision = (int)val; } key = OpenOnStartupElementName; if (jsonObj.TryGetValue(key, out val)) { note.OpenOnStartup = (bool)val; } key = PinnedElementName; if (jsonObj.TryGetValue(key, out val)) { note.Pinned = (bool)val; } key = TagsElementName; if (jsonObj.TryGetValue(key, out val)) { Hyena.Json.JsonArray tagsJsonArray = (Hyena.Json.JsonArray)val; note.Tags = new List <string> (tagsJsonArray.Count); foreach (string tag in tagsJsonArray) { note.Tags.Add(tag); } } key = ResourceReferenceElementName; if (jsonObj.TryGetValue(key, out val)) { note.ResourceReference = ResourceReference.ParseJson((Hyena.Json.JsonObject)val); } } catch (InvalidCastException e) { Logger.Error("Note '{0}': Key '{1}', value '{2}' failed to parse due to invalid type", note.Guid, key, val); throw e; } return(note); }
public Hyena.Json.JsonObject ToUpdateObject () { Hyena.Json.JsonObject noteUpdateObj = new Hyena.Json.JsonObject (); if (string.IsNullOrEmpty (Guid)) throw new InvalidOperationException ("Cannot create a valid JSON representation without a Guid"); noteUpdateObj [GuidElementName] = Guid; if (!string.IsNullOrEmpty (Command)) { noteUpdateObj [CommandElementName] = Command; return noteUpdateObj; } if (Title != null) noteUpdateObj [TitleElementName] = Title; if (NoteContent != null) noteUpdateObj [NoteContentElementName] = NoteContent; if (NoteContentVersion.HasValue) noteUpdateObj [NoteContentVersionElementName] = NoteContentVersion.Value; if (LastChangeDate.HasValue) noteUpdateObj [LastChangeDateElementName] = LastChangeDate.Value.ToString (NoteArchiver.DATE_TIME_FORMAT); if (LastMetadataChangeDate.HasValue) noteUpdateObj [LastMetadataChangeDateElementName] = LastMetadataChangeDate.Value.ToString (NoteArchiver.DATE_TIME_FORMAT); if (CreateDate.HasValue) noteUpdateObj [CreateDateElementName] = CreateDate.Value.ToString (NoteArchiver.DATE_TIME_FORMAT); // TODO: Figure out what we do on client side for this // if (LastSyncRevision.HasValue) // noteUpdateObj [LastSyncRevisionElementName] = LastSyncRevision; if (OpenOnStartup.HasValue) noteUpdateObj [OpenOnStartupElementName] = OpenOnStartup.Value; if (Pinned.HasValue) noteUpdateObj [PinnedElementName] = Pinned.Value; if (Tags != null) { Hyena.Json.JsonArray tagArray = new Hyena.Json.JsonArray (); foreach (string tag in Tags) tagArray.Add (tag); noteUpdateObj [TagsElementName] = tagArray; } return noteUpdateObj; }