public static Note createFirstNote(Activity activity) { TLog.v(TAG, "Creating first note"); Note note = new Note(); note.setTitle(activity.GetString(Resource.String.firstNoteTitle)); // FIXME as soon as we can create notes, make sure GUID is unique! - we are referencing this UUID elsewhere, don't forget to check! note.setGuid("8f837a99-c920-4501-b303-6a39af57a714"); note.setLastChangeDate("2010-10-09T16:50:12.219-04:00"); // reconstitute HTML in note content string[] contentarray = activity.Resources.GetStringArray(Resource.Array.firstNoteContent); string content = TextUtils.Join("\n", contentarray); content = content.Replace("(?m)^=(.+)=$", "<size:large>$1</size:large>") .Replace("(?m)^-(.+)$", "<list-item dir=\"ltr\">$1</list-item>") .Replace("/list-item>\n<list-item", "/list-item><list-item") .Replace("(<list-item.+</list-item>)", "<list>$1</list>") .Replace("/list-item><list-item", "/list-item>\n<list-item"); note.setXmlContent(content); return note; }
public static Note createNewNote(Context context, string title, string xmlContent) { TLog.v(TAG, "Creating new note"); Note note = new Note(); neverSaved = true; note.setTitle(title); UUID newid = UUID.RandomUUID(); note.setGuid(newid.ToString()); note.setLastChangeDate(); note.setXmlContent(xmlContent); return note; }
void useSendFile(File file, string contents) { Note remoteNote = new Note(); if(file.Path.EndsWith(".note") && contents.StartsWith("<?xml")) { // xml note file try { // Parsing // XML // Get a SAXParser from the SAXPArserFactory SAXParserFactory spf = SAXParserFactory.newInstance(); SAXParser sp = spf.newSAXParser(); // Get the XMLReader of the SAXParser we created XMLReader xr = sp.getXMLReader(); // Create a new ContentHandler, send it this note to fill and apply it to the XML-Reader NoteHandler xmlHandler = new NoteHandler(remoteNote); xr.setContentHandler(xmlHandler); // Create the proper input source stringReader sr = new stringReader(contents); InputSource inputSource = new InputSource(sr); TLog.d(TAG, "parsing note"); xr.parse(inputSource); // TODO wrap and throw a new exception here } catch (Exception e) { e.PrintStackTrace(); if(e as TimeFormatException) TLog.e(TAG, "Problem parsing the note's date and time"); Finish(); } // the note guid is not stored in the xml but in the filename remoteNote.setGuid(file.Name.Replace(".note", "")); Java.Util.Regex.Pattern note_content = Java.Util.Regex.Pattern.Compile("<note-content[^>]+>(.*)<\\/note-content>", Pattern.CASE_INSENSITIVE+Pattern.DOTALL); // FIXME here we are re-reading the whole note just to grab note-content out, there is probably a better way to do this (I'm talking to you xmlpull.org!) Matcher m = note_content.Matcher(contents); if (m.Find()) { remoteNote.setXmlContent(NoteManager.stripTitleFromContent(m.Group(1),remoteNote.getTitle())); } else { TLog.w(TAG, "Something went wrong trying to grab the note-content out of a note"); return; } } else { // ordinary text file remoteNote = NewNote.createNewNote(this, file.getName().replaceFirst("\\.[^.]+$", ""), XmlUtils.escape(contents)); } remoteNote.setFileName(file.AbsolutePath); // check and see if the note already Exists; if so, send to conflict resolver Note localNote = NoteManager.getNoteByGuid(this, remoteNote.getGuid()); if(localNote != null) { int compareBoth = Time.Compare(localNote.getLastChangeDate(), remoteNote.getLastChangeDate()); TLog.v(TAG, "note conflict... showing resolution dialog TITLE:{0} GUID:{1}", localNote.getTitle(), localNote.getGuid()); // send everything to Tomdroid so it can show Sync Dialog Bundle bundle = new Bundle(); bundle.PutString("title",remoteNote.getTitle()); bundle.PutString("file",remoteNote.getFileName()); bundle.PutString("guid",remoteNote.getGuid()); bundle.PutString("date",remoteNote.getLastChangeDate().Format3339(false)); bundle.PutString("content", remoteNote.getXmlContent()); bundle.PutString("tags", remoteNote.getTags()); bundle.PutInt("datediff", compareBoth); bundle.PutBoolean("noRemote", true); Intent cintent = new Intent(ApplicationContext, typeof(CompareNotes)); cintent.PutExtras(bundle); StartActivityForResult(cintent, 0); return; } // note doesn't exist, just give it a new title if necessary remoteNote.setTitle(NoteManager.validateNoteTitle(this, remoteNote.getTitle(), remoteNote.getGuid())); // add to content provider Android.Net.Uri uri = NoteManager.putNote(this, remoteNote); // view new note Intent i = new Intent(Intent.ActionView, uri, this, typeof(Tomdroid)); i.PutExtra("view_note", true); i.AddFlags(ActivityFlags.ClearTop); StartActivity(i); Finish(); }