Beispiel #1
0
        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);
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
		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 ();
		}
Beispiel #7
0
        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);
        }
Beispiel #8
0
		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;
		}