public static void Main(string[] args) { // Developer token for Evernote API String authToken = "S=s1:U=2261f:E=13eccfa5d71:C=13775493171:P=1cd:A=en-devtoken:H=fe7ee8dac619c7d380a0f9f3731a8698"; String evernoteHost = "sandbox.evernote.com"; Uri userStoreUrl = new Uri("https://" + evernoteHost + "/edam/user"); TTransport userStoreTransport = new THttpClient(userStoreUrl); TProtocol userStoreProtocol = new TBinaryProtocol(userStoreTransport); UserStore.Client userStore = new UserStore.Client(userStoreProtocol); FNHSessionManager<NoteEntry> sessionManager = new FNHSessionManager<NoteEntry>(FNHSessionManager<NoteEntry>.DatabaseType.MySQL); FNHRepository<NoteEntry> repository = new FNHRepository<NoteEntry>(sessionManager); bool versionOK = userStore.checkVersion("Evernote EDAMTest (C#)", Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MAJOR, Evernote.EDAM.UserStore.Constants.EDAM_VERSION_MINOR); Console.WriteLine("Is my Evernote API version up to date? " + versionOK); if (!versionOK) { return; } // Get the URL used to interact with the contents of the user's account // When your application authenticates using OAuth, the NoteStore URL will // be returned along with the auth token in the final OAuth request. // In that case, you don't need to make this call. String noteStoreUrl = userStore.getNoteStoreUrl(authToken); TTransport noteStoreTransport = new THttpClient(new Uri(noteStoreUrl)); TProtocol noteStoreProtocol = new TBinaryProtocol(noteStoreTransport); NoteStore.Client noteStore = new NoteStore.Client(noteStoreProtocol); // Lists all of the notebooks in the user's account with a notebook count List<Notebook> notebooks = noteStore.listNotebooks(authToken); Console.WriteLine("Found " + notebooks.Count + " notebooks:"); foreach (Notebook notebook in notebooks) { Console.WriteLine(" * " + notebook.Name); } //The offset represents the index of the first note that is to be returned int offset = 0; //maxNotes represents the number of note that is to be returned int maxNotes = 15; //NoteFilter is a struct that contains a list of criteria you can search notes for. //In this app, NoteFilter.Words will be used to return notes containing a certain string. NoteFilter filter = new NoteFilter(); Console.WriteLine(); Console.WriteLine("What word do you want to search through the notes for?"); Console.WriteLine("Enter word: "); filter.Words = Console.ReadLine(); //filter.Words = "business"; //Creates a new NoteList struct, which returns a list of individual notes out of a larger set of them NoteList noteList = new NoteList(); //This finds all notes containing the word that was given by the user noteList = noteStore.findNotes(authToken, filter, offset, maxNotes); //This stores the Guids of the notes containing the word ArrayList guidList = new ArrayList(); // For each note in the list of notes... foreach (Note fetchedNote in noteList.Notes) { //Console.WriteLine(" * " + fetchedNote.Guid); // Add guid to list guidList.Add(fetchedNote.Guid); } // For each guid in the list... foreach (String Guid in guidList) { // Get the contents of the matching notes String text = noteStore.getNoteContent(authToken, Guid); // Then split the contents by line string[] split = Regex.Split(text, "\\n"); Console.WriteLine(); int MAX = split.Length; String line1; String line2; String line3; // This for-loop cycles through each line in the array of lines and tests if the line contains the word. // If so, it sets the note Guid as well as the surrounding lines as properties to a new Entry object. for (int n = 0; n < MAX; n++) { Boolean b = split[n].Contains(filter.Words); if (b == true) { line2 = split[n]; line1 = split[n - 1]; line3 = split[n + 1]; Entry postgresEntry = new Entry(); postgresEntry.setGuid(Guid); postgresEntry.setLine1(line1); postgresEntry.setLine2(line2); postgresEntry.setLine3(line3); Console.WriteLine("Note GUID: " + postgresEntry.getGuid()); Console.WriteLine(); postgresEntry.displayLines(); postgresEntry.InsertRow(); Console.WriteLine(); //postgresEntry.getLastInsertedRow(); NoteEntry mysqlNote = new NoteEntry(); mysqlNote.Guid = Guid; mysqlNote.Line1 = line1; mysqlNote.Line2 = line2; mysqlNote.Line3 = line3; repository.Create(mysqlNote); } } } Console.WriteLine(); Console.WriteLine("These lines have been saved to a Postgresql database using ODBC."); Console.WriteLine("They have also been saved to a MySQL database using Fluent NHibernate."); Console.WriteLine(); Console.WriteLine("Which row do you want to retrieve from the MySQL database?"); String id = Console.ReadLine(); int num = int.Parse(id); NoteEntry noteEntry = repository.RetrieveById(num); Console.WriteLine("This is entry " + num + " retrieved from the MySQL database..."); Console.WriteLine(); Console.WriteLine("GUID: " + noteEntry.Guid); Console.WriteLine("Line 1: " + noteEntry.Line1); Console.WriteLine("Line 2: " + noteEntry.Line2); Console.WriteLine("Line 3: " + noteEntry.Line3); Console.WriteLine(); Console.WriteLine("Click ENTER to continue..."); Console.ReadLine(); }